From eba6d0236fc9b7f4a54189766709948599d4b8a2 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 21 Oct 2009 16:01:52 -0700 Subject: [PATCH 001/521] Backed out changeset: 57dc52edbbc9 --- indra/llwindow/llwindowcallbacks.cpp | 5 +++ indra/llwindow/llwindowcallbacks.h | 1 + indra/llwindow/llwindowwin32.cpp | 66 ++++++++++++++++++++++++++-- indra/newview/llviewerwindow.cpp | 14 ++++++ indra/newview/llviewerwindow.h | 3 +- 5 files changed, 84 insertions(+), 5 deletions(-) diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 72f99971499..fda2c7ee6f2 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,6 +163,11 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } +BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data) +{ + return FALSE; +} + BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window) { return FALSE; diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index abc66c42a28..e1e257943a4 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -68,6 +68,7 @@ class LLWindowCallbacks virtual void handleWindowBlock(LLWindow *window); // window is taking over CPU for a while virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); + virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index c608c21d051..94c3e1af8c3 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -52,6 +52,7 @@ #include <mapi.h> #include <process.h> // for _spawn #include <shellapi.h> +#include <fstream> #include <Imm.h> // Require DirectInput version 8 @@ -1348,6 +1349,9 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO } SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); + + // register this window as handling drag/drop events from the OS + DragAcceptFiles( mWindowHandle, TRUE ); //register joystick timer callback SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer @@ -2333,11 +2337,65 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ return 0; case WM_COPYDATA: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); - // received a URL - PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; - window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); + // received a URL + PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; + window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); + }; return 0; + + case WM_DROPFILES: + { + // HDROP contains what we need + HDROP hdrop = (HDROP)w_param; + + // get location in window space where drop occured and convert to OpenGL coordinate space + POINT pt; + DragQueryPoint( hdrop, &pt ); + LLCoordGL gl_coord; + LLCoordWindow cursor_coord_window( pt.x, pt.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + + // get payload (eventually, this needs to more advanced and grab size of payload dynamically + static char file_name[ 1024 ]; + DragQueryFileA( hdrop, 0, file_name, 1024 ); + void* url = (void*)( file_name ); + + // if it's a .URL or .lnk ("shortcut") file + if ( std::string( file_name ).find( ".lnk" ) != std::string::npos || + std::string( file_name ).find( ".URL" ) != std::string::npos ) + { + // read through file - looks like a 2 line file with second line URL= but who knows.. + std::ifstream file_handle( file_name ); + if ( file_handle.is_open() ) + { + std::string line; + while ( ! file_handle.eof() ) + { + std::getline( file_handle, line ); + if ( ! file_handle.eof() ) + { + std::string prefix( "URL=" ); + if ( line.find( prefix, 0 ) != std::string::npos ) + { + line = line.substr( 4 ); // skip off the URL= bit + strcpy( (char*)url, line.c_str() ); + break; + }; + }; + }; + file_handle.close(); + }; + }; + + MASK mask = gKeyboard->currentMask(TRUE); + if (window_imp->mCallbacks->handleDrop(window_imp, gl_coord, mask, url ) ) + { + return 0; + } + } + break; } window_imp->mCallbacks->handlePauseWatchdog(window_imp); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c659e58e476..2bda6eddbcd 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -815,6 +815,20 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS // Always handled as far as the OS is concerned. return TRUE; } + +BOOL LLViewerWindow::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void* data) +{ + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); + + LLUUID object_id = pick_info.getObjectID(); + S32 object_face = pick_info.mObjectFace; + std::string url = std::string( (char*)data ); + + llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + + // Always handled as far as the OS is concerned. + return TRUE; +} BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) { diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index d7c403739e4..44704b99e39 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,8 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); + /*virtual*/ BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void* data); + void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); /*virtual*/ void handleFocus(LLWindow *window); -- GitLab From 19fc3fb32c3cd95fcfb5708b59b5620e506c5179 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 21 Oct 2009 17:40:36 -0700 Subject: [PATCH 002/521] Add setting for PrimMediaDragNDrop, and add implementation that sets the current URL and auto play on drop --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llviewerwindow.cpp | 24 +++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 91d5e046658..9adf893e4b8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5305,6 +5305,17 @@ <key>Value</key> <integer>13</integer> </map> + <key>PrimMediaDragNDrop</key> + <map> + <key>Comment</key> + <string>Enable drag and drop</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>PrimMediaMaxRetries</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 2bda6eddbcd..a0802430865 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -79,6 +79,7 @@ #include "timing.h" #include "llviewermenu.h" #include "lltooltip.h" +#include "llmediaentry.h" // newview includes #include "llagent.h" @@ -818,14 +819,27 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS BOOL LLViewerWindow::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void* data) { - LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); + if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) + { + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); - LLUUID object_id = pick_info.getObjectID(); - S32 object_face = pick_info.mObjectFace; - std::string url = std::string( (char*)data ); + LLUUID object_id = pick_info.getObjectID(); + S32 object_face = pick_info.mObjectFace; + std::string url = std::string( (char*)data ); - llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); + if (obj) + { + LLSD media_data; + /// XXX home URL too? + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; + obj->syncMediaData(object_face, media_data, true, true); + obj->sendMediaDataUpdate(); + } + } // Always handled as far as the OS is concerned. return TRUE; } -- GitLab From caa631bf5b69ef1e39989b8e1e4b3372491cb9b4 Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Tue, 27 Oct 2009 17:52:04 -0700 Subject: [PATCH 003/521] Added IDropTarget interface. Still lots of cleanup but this works ok. You can drag over from Firefox or IE onto a prim --- indra/llwindow/lldragdropwin32.cpp | 295 ++ indra/llwindow/lldragdropwin32.h | 55 + indra/llwindow/llwindowcallbacks.cpp | 2 +- indra/llwindow/llwindowcallbacks.h | 2 +- indra/llwindow/llwindowwin32.cpp | 7371 +++++++++++++------------- indra/llwindow/llwindowwin32.h | 5 + indra/newview/llviewerwindow.cpp | 4 +- indra/newview/llviewerwindow.h | 2 +- 8 files changed, 4057 insertions(+), 3679 deletions(-) create mode 100644 indra/llwindow/lldragdropwin32.cpp create mode 100644 indra/llwindow/lldragdropwin32.h diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp new file mode 100644 index 00000000000..0daff853955 --- /dev/null +++ b/indra/llwindow/lldragdropwin32.cpp @@ -0,0 +1,295 @@ +/** + * @file lldragdrop32.cpp + * @brief Handler for Windows specific drag and drop (OS to client) code + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#if LL_WINDOWS + +#include "linden_common.h" + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +#include "llwindowwin32.h" +#include "llkeyboardwin32.h" +#include "lldragdropwin32.h" + +#include "llwindowcallbacks.h" + +#include <windows.h> +#include <ole2.h> +#include <shlobj.h> +#include <shellapi.h> +#include <shlwapi.h> + +// FIXME: this should be done in CMake +#pragma comment( lib, "shlwapi.lib" ) + +class LLDragDropWin32Target: + public IDropTarget +{ + public: + LLDragDropWin32Target( HWND hWnd ) : + mWindowHandle( hWnd ), + mRefCount( 0 ) + { + strcpy(szFileDropped,""); + bDropTargetValid = false; + bTextDropped = false; + }; + + /* IUnknown methods */ + STDMETHOD_( ULONG, AddRef )( void ) + { + return ++mRefCount; + }; + + STDMETHOD_( ULONG, Release )( void ) + { + if ( --mRefCount == 0 ) + { + delete this; + return 0; + } + return mRefCount; + }; + + STDMETHOD ( QueryInterface )( REFIID iid, void ** ppvObject ) + { + if ( iid == IID_IUnknown || iid == IID_IDropTarget ) + { + *ppvObject = this; + AddRef(); + return S_OK; + }; + + *ppvObject = NULL; + return E_NOINTERFACE; + }; + + /* IDropTarget methods */ + STDMETHOD (DragEnter)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + { + HRESULT hr = E_INVALIDARG; + bDropTargetValid = false; + bTextDropped = false; + *pdwEffect=DROPEFFECT_NONE; + + FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + STGMEDIUM medium; + + if (pDataObj && SUCCEEDED (pDataObj->GetData (&fmte, &medium))) + { + // We can Handle Only one File At a time !!! + if (1 == DragQueryFile ((HDROP)medium.hGlobal,0xFFFFFFFF,NULL,0 )) + { + // Get the File Name + if (DragQueryFileA((HDROP)medium.hGlobal, 0, szFileDropped,MAX_PATH)) + { + if (!PathIsDirectoryA(szFileDropped)) + { + char szTempFile[MAX_PATH]; + _splitpath(szFileDropped,NULL,NULL,NULL,szTempFile); + +// if (!stricmp(szTempFile,".lnk")) +// { +// if (ResolveLink(szFileDropped,szTempFile)) +// { +// strcpy(szFileDropped,szTempFile); +// *pdwEffect=DROPEFFECT_COPY; +// We Want to Create a Copy +// bDropTargetValid = true; +// hr = S_OK; +// } +// } +// else +// { + *pdwEffect=DROPEFFECT_COPY; + //We Want to Create a Copy + bDropTargetValid = true; + hr = S_OK; +// } + } + } + } + + if (medium.pUnkForRelease) + medium.pUnkForRelease->Release (); + else + GlobalFree (medium.hGlobal); + } + else + { + fmte.cfFormat = CF_TEXT; + fmte.ptd = NULL; + fmte.dwAspect = DVASPECT_CONTENT; + fmte.lindex = -1; + fmte.tymed = TYMED_HGLOBAL; + + // Does the drag source provide CF_TEXT ? + if (NOERROR == pDataObj->QueryGetData(&fmte)) + { + bDropTargetValid = true; + bTextDropped = true; + *pdwEffect=DROPEFFECT_COPY; + hr = S_OK; + } + } + return hr; + + + + }; + + STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + { + HRESULT hr = S_OK; + if (bDropTargetValid) + *pdwEffect=DROPEFFECT_COPY; + + return hr; + }; + + STDMETHOD (DragLeave)(void) + { + HRESULT hr = S_OK; + strcpy(szFileDropped,""); + return hr; + }; + + STDMETHOD (Drop)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + { + HRESULT hr = S_OK; + if (bDropTargetValid) + { + *pdwEffect=DROPEFFECT_COPY; + + FORMATETC fmte; + STGMEDIUM medium; + + if (bTextDropped) + { + fmte.cfFormat = CF_TEXT; + fmte.ptd = NULL; + fmte.dwAspect = DVASPECT_CONTENT; + fmte.lindex = -1; + fmte.tymed = TYMED_HGLOBAL; + + hr = pDataObj->GetData(&fmte, &medium); + HGLOBAL hText = medium.hGlobal; + LPSTR lpszText = (LPSTR)GlobalLock(hText); + + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( pt.x, pt.y); + LLCoordWindow cursor_coord_window( pt.x, pt.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + llinfos << "### (Drop) URL is: " << lpszText << llendl; + llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; + llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; + llinfos << llendl; + + MASK mask = gKeyboard->currentMask(TRUE); + window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) ); + }; + + GlobalUnlock(hText); + ReleaseStgMedium(&medium); + } + } + return hr; + }; + + private: + ULONG mRefCount; + HWND mWindowHandle; + char szFileDropped[1024]; + bool bDropTargetValid; + bool bTextDropped; + friend class LLWindowWin32; +}; + +LLDragDropWin32::LLDragDropWin32() : + mDropTarget( NULL ), + mDropWindowHandle( NULL ) + +{ +} + +LLDragDropWin32::~LLDragDropWin32() +{ +} + +bool LLDragDropWin32::init( HWND hWnd ) +{ + if (NOERROR != OleInitialize(NULL)) + return FALSE; + + mDropTarget = new LLDragDropWin32Target( hWnd ); + if ( mDropTarget ) + { + HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, TRUE ); + if ( S_OK == result ) + { + result = RegisterDragDrop( hWnd, mDropTarget ); + if ( S_OK != result ) + { + // RegisterDragDrop failed + return false; + }; + + // all ok + mDropWindowHandle = hWnd; + } + else + { + // Unable to lock OLE object + return false; + }; + }; + + // success + return true; +} + +void LLDragDropWin32::reset() +{ + if ( mDropTarget ) + { + CoLockObjectExternal( mDropTarget, FALSE, TRUE ); + RevokeDragDrop( mDropWindowHandle ); + mDropTarget->Release(); + }; + + OleUninitialize(); +} + +#endif diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h new file mode 100644 index 00000000000..6137e5eb655 --- /dev/null +++ b/indra/llwindow/lldragdropwin32.h @@ -0,0 +1,55 @@ +/** + * @file lldragdrop32.cpp + * @brief Handler for Windows specific drag and drop (OS to client) code + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLDRAGDROP32_H +#define LL_LLDRAGDROP32_H + +#include <windows.h> +#include <ole2.h> +#include <shlobj.h> +#include <shlwapi.h> + +class LLDragDropWin32 +{ + public: + LLDragDropWin32(); + ~LLDragDropWin32(); + + bool init( HWND hWnd ); + void reset(); + + private: + IDropTarget* mDropTarget; + HWND mDropWindowHandle; +}; + +#endif diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index fda2c7ee6f2..1098529e1cd 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } -BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data) +BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data ) { return FALSE; } diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index e1e257943a4..3a09100168b 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -68,7 +68,7 @@ class LLWindowCallbacks virtual void handleWindowBlock(LLWindow *window); // window is taking over CPU for a while virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); - virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data); + virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 94c3e1af8c3..da096b9a0a2 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1,2366 +1,2376 @@ -/** - * @file llwindowwin32.cpp - * @brief Platform-dependent implementation of llwindow - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#include "linden_common.h" - -#if LL_WINDOWS && !LL_MESA_HEADLESS - -#include "llwindowwin32.h" - -// LLWindow library includes -#include "llkeyboardwin32.h" -#include "llpreeditor.h" -#include "llwindowcallbacks.h" - -// Linden library includes -#include "llerror.h" -#include "llgl.h" -#include "llstring.h" - -// System includes -#include <commdlg.h> -#include <WinUser.h> -#include <mapi.h> -#include <process.h> // for _spawn -#include <shellapi.h> +/** + * @file llwindowwin32.cpp + * @brief Platform-dependent implementation of llwindow + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#if LL_WINDOWS && !LL_MESA_HEADLESS + +#include "llwindowwin32.h" + +// LLWindow library includes +#include "llkeyboardwin32.h" +#include "lldragdropwin32.h" +#include "llpreeditor.h" +#include "llwindowcallbacks.h" + +// Linden library includes +#include "llerror.h" +#include "llgl.h" +#include "llstring.h" + +// System includes +#include <commdlg.h> +#include <WinUser.h> +#include <mapi.h> +#include <process.h> // for _spawn +#include <shellapi.h> #include <fstream> -#include <Imm.h> - -// Require DirectInput version 8 -#define DIRECTINPUT_VERSION 0x0800 - -#include <dinput.h> -#include <Dbt.h.> - -#include "llmemtype.h" -// culled from winuser.h -#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ -const S32 WM_MOUSEWHEEL = 0x020A; -#endif -#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */ -const S32 WHEEL_DELTA = 120; /* Value for rolling one detent */ -#endif -const S32 MAX_MESSAGE_PER_UPDATE = 20; -const S32 BITS_PER_PIXEL = 32; -const S32 MAX_NUM_RESOLUTIONS = 32; -const F32 ICON_FLASH_TIME = 0.5f; - -extern BOOL gDebugWindowProc; - -LPWSTR gIconResource = IDI_APPLICATION; - -LLW32MsgCallback gAsyncMsgCallback = NULL; - -// -// LLWindowWin32 -// - -void show_window_creation_error(const std::string& title) -{ - LL_WARNS("Window") << title << LL_ENDL; -} - -//static -BOOL LLWindowWin32::sIsClassRegistered = FALSE; - -BOOL LLWindowWin32::sLanguageTextInputAllowed = TRUE; -BOOL LLWindowWin32::sWinIMEOpened = FALSE; -HKL LLWindowWin32::sWinInputLocale = 0; -DWORD LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE; -DWORD LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC; -LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1); - -// The following class LLWinImm delegates Windows IMM APIs. -// We need this because some language versions of Windows, -// e.g., US version of Windows XP, doesn't install IMM32.DLL -// as a default, and we can't link against imm32.lib statically. -// I believe DLL loading of this type is best suited to do -// in a static initialization of a class. What I'm not sure is -// whether it follows the Linden Conding Standard... -// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members - -class LLWinImm -{ -public: - static bool isAvailable() { return sTheInstance.mHImmDll != NULL; } - -public: - // Wrappers for IMM API. - static BOOL isIME(HKL hkl); - static HWND getDefaultIMEWnd(HWND hwnd); - static HIMC getContext(HWND hwnd); - static BOOL releaseContext(HWND hwnd, HIMC himc); - static BOOL getOpenStatus(HIMC himc); - static BOOL setOpenStatus(HIMC himc, BOOL status); - static BOOL getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence); - static BOOL setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence); - static BOOL getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); - static BOOL setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); - static LONG getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length); - static BOOL setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength); - static BOOL setCompositionFont(HIMC himc, LPLOGFONTW logfont); - static BOOL setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form); - static BOOL notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value); - -private: - LLWinImm(); - ~LLWinImm(); - -private: - // Pointers to IMM API. - BOOL (WINAPI *mImmIsIME)(HKL); - HWND (WINAPI *mImmGetDefaultIMEWnd)(HWND); - HIMC (WINAPI *mImmGetContext)(HWND); - BOOL (WINAPI *mImmReleaseContext)(HWND, HIMC); - BOOL (WINAPI *mImmGetOpenStatus)(HIMC); - BOOL (WINAPI *mImmSetOpenStatus)(HIMC, BOOL); - BOOL (WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD); - BOOL (WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD); - BOOL (WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); - BOOL (WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); - LONG (WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD); - BOOL (WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); - BOOL (WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW); - BOOL (WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM); - BOOL (WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD); - -private: - HMODULE mHImmDll; - static LLWinImm sTheInstance; -}; - -LLWinImm LLWinImm::sTheInstance; - -LLWinImm::LLWinImm() : mHImmDll(NULL) -{ - // Check system metrics - if ( !GetSystemMetrics( SM_DBCSENABLED ) ) - return; - - - mHImmDll = LoadLibraryA("Imm32"); - if (mHImmDll != NULL) - { - mImmIsIME = (BOOL (WINAPI *)(HKL)) GetProcAddress(mHImmDll, "ImmIsIME"); - mImmGetDefaultIMEWnd = (HWND (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd"); - mImmGetContext = (HIMC (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetContext"); - mImmReleaseContext = (BOOL (WINAPI *)(HWND, HIMC)) GetProcAddress(mHImmDll, "ImmReleaseContext"); - mImmGetOpenStatus = (BOOL (WINAPI *)(HIMC)) GetProcAddress(mHImmDll, "ImmGetOpenStatus"); - mImmSetOpenStatus = (BOOL (WINAPI *)(HIMC, BOOL)) GetProcAddress(mHImmDll, "ImmSetOpenStatus"); - mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus"); - mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmSetConversionStatus"); - mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmGetCompositionWindow"); - mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmSetCompositionWindow"); - mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmGetCompositionStringW"); - mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmSetCompositionStringW"); - mImmSetCompositionFont = (BOOL (WINAPI *)(HIMC, LPLOGFONTW)) GetProcAddress(mHImmDll, "ImmSetCompositionFontW"); - mImmSetCandidateWindow = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM)) GetProcAddress(mHImmDll, "ImmSetCandidateWindow"); - mImmNotifyIME = (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmNotifyIME"); - - if (mImmIsIME == NULL || - mImmGetDefaultIMEWnd == NULL || - mImmGetContext == NULL || - mImmReleaseContext == NULL || - mImmGetOpenStatus == NULL || - mImmSetOpenStatus == NULL || - mImmGetConversionStatus == NULL || - mImmSetConversionStatus == NULL || - mImmGetCompostitionWindow == NULL || - mImmSetCompostitionWindow == NULL || - mImmGetCompositionString == NULL || - mImmSetCompositionString == NULL || - mImmSetCompositionFont == NULL || - mImmSetCandidateWindow == NULL || - mImmNotifyIME == NULL) - { - // If any of the above API entires are not found, we can't use IMM API. - // So, turn off the IMM support. We should log some warning message in - // the case, since it is very unusual; these APIs are available from - // the beginning, and all versions of IMM32.DLL should have them all. - // Unfortunately, this code may be executed before initialization of - // the logging channel (llwarns), and we can't do it here... Yes, this - // is one of disadvantages to use static constraction to DLL loading. - FreeLibrary(mHImmDll); - mHImmDll = NULL; - - // If we unload the library, make sure all the function pointers are cleared - mImmIsIME = NULL; - mImmGetDefaultIMEWnd = NULL; - mImmGetContext = NULL; - mImmReleaseContext = NULL; - mImmGetOpenStatus = NULL; - mImmSetOpenStatus = NULL; - mImmGetConversionStatus = NULL; - mImmSetConversionStatus = NULL; - mImmGetCompostitionWindow = NULL; - mImmSetCompostitionWindow = NULL; - mImmGetCompositionString = NULL; - mImmSetCompositionString = NULL; - mImmSetCompositionFont = NULL; - mImmSetCandidateWindow = NULL; - mImmNotifyIME = NULL; - } - } -} - - -// static -BOOL LLWinImm::isIME(HKL hkl) -{ - if ( sTheInstance.mImmIsIME ) - return sTheInstance.mImmIsIME(hkl); - return FALSE; -} - -// static -HIMC LLWinImm::getContext(HWND hwnd) -{ - if ( sTheInstance.mImmGetContext ) - return sTheInstance.mImmGetContext(hwnd); - return 0; -} - -//static -BOOL LLWinImm::releaseContext(HWND hwnd, HIMC himc) -{ - if ( sTheInstance.mImmIsIME ) - return sTheInstance.mImmReleaseContext(hwnd, himc); - return FALSE; -} - -// static -BOOL LLWinImm::getOpenStatus(HIMC himc) -{ - if ( sTheInstance.mImmGetOpenStatus ) - return sTheInstance.mImmGetOpenStatus(himc); - return FALSE; -} - -// static -BOOL LLWinImm::setOpenStatus(HIMC himc, BOOL status) -{ - if ( sTheInstance.mImmSetOpenStatus ) - return sTheInstance.mImmSetOpenStatus(himc, status); - return FALSE; -} - -// static -BOOL LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence) -{ - if ( sTheInstance.mImmGetConversionStatus ) - return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); - return FALSE; -} - -// static -BOOL LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence) -{ - if ( sTheInstance.mImmSetConversionStatus ) - return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); - return FALSE; -} - -// static -BOOL LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) -{ - if ( sTheInstance.mImmGetCompostitionWindow ) - return sTheInstance.mImmGetCompostitionWindow(himc, form); - return FALSE; -} - -// static -BOOL LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) -{ - if ( sTheInstance.mImmSetCompostitionWindow ) - return sTheInstance.mImmSetCompostitionWindow(himc, form); - return FALSE; -} - - -// static -LONG LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length) -{ - if ( sTheInstance.mImmGetCompositionString ) - return sTheInstance.mImmGetCompositionString(himc, index, data, length); - return FALSE; -} - - -// static -BOOL LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength) -{ - if ( sTheInstance.mImmSetCompositionString ) - return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength); - return FALSE; -} - -// static -BOOL LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont) -{ - if ( sTheInstance.mImmSetCompositionFont ) - return sTheInstance.mImmSetCompositionFont(himc, pFont); - return FALSE; -} - -// static -BOOL LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form) -{ - if ( sTheInstance.mImmSetCandidateWindow ) - return sTheInstance.mImmSetCandidateWindow(himc, form); - return FALSE; -} - -// static -BOOL LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value) -{ - if ( sTheInstance.mImmNotifyIME ) - return sTheInstance.mImmNotifyIME(himc, action, index, value); - return FALSE; -} - - - - -// ---------------------------------------------------------------------------------------- -LLWinImm::~LLWinImm() -{ - if (mHImmDll != NULL) - { - FreeLibrary(mHImmDll); - mHImmDll = NULL; - } -} - - -LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, - const std::string& title, const std::string& name, S32 x, S32 y, S32 width, - S32 height, U32 flags, - BOOL fullscreen, BOOL clearBg, - BOOL disable_vsync, BOOL use_gl, - BOOL ignore_pixel_depth, - U32 fsaa_samples) - : LLWindow(callbacks, fullscreen, flags) -{ - mFSAASamples = fsaa_samples; - mIconResource = gIconResource; - mOverrideAspectRatio = 0.f; - mNativeAspectRatio = 0.f; - mMousePositionModified = FALSE; - mInputProcessingPaused = FALSE; - mPreeditor = NULL; - mhDC = NULL; - mhRC = NULL; - - // Initialize the keyboard - gKeyboard = new LLKeyboardWin32(); - gKeyboard->setCallbacks(callbacks); - - // Initialize (boot strap) the Language text input management, - // based on the system's (user's) default settings. - allowLanguageTextInput(mPreeditor, FALSE); - - WNDCLASS wc; - RECT window_rect; - - // Set the window title - if (title.empty()) - { - mWindowTitle = new WCHAR[50]; - wsprintf(mWindowTitle, L"OpenGL Window"); - } - else - { - mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. - mbstowcs(mWindowTitle, title.c_str(), 255); - mWindowTitle[255] = 0; - } - - // Set the window class name - if (name.empty()) - { - mWindowClassName = new WCHAR[50]; - wsprintf(mWindowClassName, L"OpenGL Window"); - } - else - { - mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. - mbstowcs(mWindowClassName, name.c_str(), 255); - mWindowClassName[255] = 0; - } - - - // We're not clipping yet - SetRect( &mOldMouseClip, 0, 0, 0, 0 ); - - // Make an instance of our window then define the window class - mhInstance = GetModuleHandle(NULL); - mWndProc = NULL; - - mSwapMethod = SWAP_METHOD_UNDEFINED; - - // No WPARAM yet. - mLastSizeWParam = 0; - - // Windows GDI rects don't include rightmost pixel - window_rect.left = (long) 0; - window_rect.right = (long) width; - window_rect.top = (long) 0; - window_rect.bottom = (long) height; - - // Grab screen size to sanitize the window - S32 window_border_y = GetSystemMetrics(SM_CYBORDER); - S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); - S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); - S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN); - S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN); - - if (x < virtual_screen_x) x = virtual_screen_x; - if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y; - - if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width; - if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height; - - if (!sIsClassRegistered) - { - // Force redraw when resized and create a private device context - - // Makes double click messages. - wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; - - // Set message handler function - wc.lpfnWndProc = (WNDPROC) mainWindowProc; - - // unused - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - - wc.hInstance = mhInstance; - wc.hIcon = LoadIcon(mhInstance, mIconResource); - - // We will set the cursor ourselves - wc.hCursor = NULL; - - // background color is not used - if (clearBg) - { - wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - } - else - { - wc.hbrBackground = (HBRUSH) NULL; - } - - // we don't use windows menus - wc.lpszMenuName = NULL; - - wc.lpszClassName = mWindowClassName; - - if (!RegisterClass(&wc)) - { - OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), - mCallbacks->translateString("MBError"), OSMB_OK); - return; - } - sIsClassRegistered = TRUE; - } - - //----------------------------------------------------------------------- - // Get the current refresh rate - //----------------------------------------------------------------------- - - DEVMODE dev_mode; - DWORD current_refresh; - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - current_refresh = dev_mode.dmDisplayFrequency; - mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight); - } - else - { - current_refresh = 60; - } - - //----------------------------------------------------------------------- - // Drop resolution and go fullscreen - // use a display mode with our desired size and depth, with a refresh - // rate as close at possible to the users' default - //----------------------------------------------------------------------- - if (mFullscreen) - { - BOOL success = FALSE; - DWORD closest_refresh = 0; - - for (S32 mode_num = 0;; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == BITS_PER_PIXEL) - { - success = TRUE; - if ((dev_mode.dmDisplayFrequency - current_refresh) - < (closest_refresh - current_refresh)) - { - closest_refresh = dev_mode.dmDisplayFrequency; - } - } - } - - if (closest_refresh == 0) - { - LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; - success = FALSE; - } - - // If we found a good resolution, use it. - if (success) - { - success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); - } - - // Keep a copy of the actual current device mode in case we minimize - // and change the screen resolution. JC - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); - - // If it failed, we don't want to run fullscreen - if (success) - { - mFullscreen = TRUE; - mFullscreenWidth = dev_mode.dmPelsWidth; - mFullscreenHeight = dev_mode.dmPelsHeight; - mFullscreenBits = dev_mode.dmBitsPerPel; - mFullscreenRefresh = dev_mode.dmDisplayFrequency; - - LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth - << "x" << dev_mode.dmPelsHeight - << "x" << dev_mode.dmBitsPerPel - << " @ " << dev_mode.dmDisplayFrequency - << LL_ENDL; - } - else - { - mFullscreen = FALSE; - mFullscreenWidth = -1; - mFullscreenHeight = -1; - mFullscreenBits = -1; - mFullscreenRefresh = -1; - - std::map<std::string,std::string> args; - args["[WIDTH]"] = llformat("%d", width); - args["[HEIGHT]"] = llformat ("%d", height); - OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args), - mCallbacks->translateString("MBError"), OSMB_OK); - } - } - - // TODO: add this after resolving _WIN32_WINNT issue - // if (!fullscreen) - // { - // TRACKMOUSEEVENT track_mouse_event; - // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); - // track_mouse_event.dwFlags = TME_LEAVE; - // track_mouse_event.hwndTrack = mWindowHandle; - // track_mouse_event.dwHoverTime = HOVER_DEFAULT; - // TrackMouseEvent( &track_mouse_event ); - // } - - - //----------------------------------------------------------------------- - // Create GL drawing context - //----------------------------------------------------------------------- - LLCoordScreen windowPos(x,y); - LLCoordScreen windowSize(window_rect.right - window_rect.left, - window_rect.bottom - window_rect.top); - if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos)) - { - return; - } - - //start with arrow cursor - initCursors(); - setCursor( UI_CURSOR_ARROW ); - - // Initialize (boot strap) the Language text input management, - // based on the system's (or user's) default settings. - allowLanguageTextInput(NULL, FALSE); -} - - -LLWindowWin32::~LLWindowWin32() -{ - delete [] mWindowTitle; - mWindowTitle = NULL; - - delete [] mSupportedResolutions; - mSupportedResolutions = NULL; - - delete mWindowClassName; - mWindowClassName = NULL; -} - -void LLWindowWin32::show() -{ - ShowWindow(mWindowHandle, SW_SHOW); - SetForegroundWindow(mWindowHandle); - SetFocus(mWindowHandle); -} - -void LLWindowWin32::hide() -{ - setMouseClipping(FALSE); - ShowWindow(mWindowHandle, SW_HIDE); -} - -void LLWindowWin32::minimize() -{ - setMouseClipping(FALSE); - showCursor(); - ShowWindow(mWindowHandle, SW_MINIMIZE); -} - - -void LLWindowWin32::restore() -{ - ShowWindow(mWindowHandle, SW_RESTORE); - SetForegroundWindow(mWindowHandle); - SetFocus(mWindowHandle); -} - - -// close() destroys all OS-specific code associated with a window. -// Usually called from LLWindowManager::destroyWindow() -void LLWindowWin32::close() -{ - LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL; - // Is window is already closed? - if (!mWindowHandle) - { - return; - } - - // Make sure cursor is visible and we haven't mangled the clipping state. - setMouseClipping(FALSE); - showCursor(); - - // Go back to screen mode written in the registry. - if (mFullscreen) - { - resetDisplayResolution(); - } - - // Clean up remaining GL state - LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL; - gGLManager.shutdownGL(); - - LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL; - if (mhRC) - { - if (!wglMakeCurrent(NULL, NULL)) - { - LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; - } - - if (!wglDeleteContext(mhRC)) - { - LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; - } - - mhRC = NULL; - } - - // Restore gamma to the system values. - restoreGamma(); - - if (mhDC && !ReleaseDC(mWindowHandle, mhDC)) - { - LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL; - mhDC = NULL; - } - - LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; - - // Don't process events in our mainWindowProc any longer. - SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); - - // Make sure we don't leave a blank toolbar button. - ShowWindow(mWindowHandle, SW_HIDE); - - // This causes WM_DESTROY to be sent *immediately* - if (!DestroyWindow(mWindowHandle)) - { - OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), - mCallbacks->translateString("MBShutdownErr"), - OSMB_OK); - } - - mWindowHandle = NULL; -} - -BOOL LLWindowWin32::isValid() -{ - return (mWindowHandle != NULL); -} - -BOOL LLWindowWin32::getVisible() -{ - return (mWindowHandle && IsWindowVisible(mWindowHandle)); -} - -BOOL LLWindowWin32::getMinimized() -{ - return (mWindowHandle && IsIconic(mWindowHandle)); -} - -BOOL LLWindowWin32::getMaximized() -{ - return (mWindowHandle && IsZoomed(mWindowHandle)); -} - -BOOL LLWindowWin32::maximize() -{ - BOOL success = FALSE; - if (!mWindowHandle) return success; - - WINDOWPLACEMENT placement; - placement.length = sizeof(WINDOWPLACEMENT); - - success = GetWindowPlacement(mWindowHandle, &placement); - if (!success) return success; - - placement.showCmd = SW_MAXIMIZE; - - success = SetWindowPlacement(mWindowHandle, &placement); - return success; -} - -BOOL LLWindowWin32::getFullscreen() -{ - return mFullscreen; -} - -BOOL LLWindowWin32::getPosition(LLCoordScreen *position) -{ - RECT window_rect; - - if (!mWindowHandle || - !GetWindowRect(mWindowHandle, &window_rect) || - NULL == position) - { - return FALSE; - } - - position->mX = window_rect.left; - position->mY = window_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::getSize(LLCoordScreen *size) -{ - RECT window_rect; - - if (!mWindowHandle || - !GetWindowRect(mWindowHandle, &window_rect) || - NULL == size) - { - return FALSE; - } - - size->mX = window_rect.right - window_rect.left; - size->mY = window_rect.bottom - window_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::getSize(LLCoordWindow *size) -{ - RECT client_rect; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == size) - { - return FALSE; - } - - size->mX = client_rect.right - client_rect.left; - size->mY = client_rect.bottom - client_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::setPosition(const LLCoordScreen position) -{ - LLCoordScreen size; - - if (!mWindowHandle) - { - return FALSE; - } - getSize(&size); - moveWindow(position, size); - return TRUE; -} - -BOOL LLWindowWin32::setSize(const LLCoordScreen size) -{ - LLCoordScreen position; - - getPosition(&position); - if (!mWindowHandle) - { - return FALSE; - } - - moveWindow(position, size); - return TRUE; -} - -// changing fullscreen resolution -BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp) -{ - GLuint pixel_format; - DEVMODE dev_mode; - DWORD current_refresh; - DWORD dw_ex_style; - DWORD dw_style; - RECT window_rect; - S32 width = size.mX; - S32 height = size.mY; - BOOL auto_show = FALSE; - - if (mhRC) - { - auto_show = TRUE; - resetDisplayResolution(); - } - - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - current_refresh = dev_mode.dmDisplayFrequency; - } - else - { - current_refresh = 60; - } - - gGLManager.shutdownGL(); - //destroy gl context - if (mhRC) - { - if (!wglMakeCurrent(NULL, NULL)) - { - LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; - } - - if (!wglDeleteContext(mhRC)) - { - LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; - } - - mhRC = NULL; - } - - if (fullscreen) - { - mFullscreen = TRUE; - BOOL success = FALSE; - DWORD closest_refresh = 0; - - for (S32 mode_num = 0;; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == BITS_PER_PIXEL) - { - success = TRUE; - if ((dev_mode.dmDisplayFrequency - current_refresh) - < (closest_refresh - current_refresh)) - { - closest_refresh = dev_mode.dmDisplayFrequency; - } - } - } - - if (closest_refresh == 0) - { - LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; - return FALSE; - } - - // If we found a good resolution, use it. - if (success) - { - success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); - } - - // Keep a copy of the actual current device mode in case we minimize - // and change the screen resolution. JC - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); - - if (success) - { - mFullscreen = TRUE; - mFullscreenWidth = dev_mode.dmPelsWidth; - mFullscreenHeight = dev_mode.dmPelsHeight; - mFullscreenBits = dev_mode.dmBitsPerPel; - mFullscreenRefresh = dev_mode.dmDisplayFrequency; - - LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth - << "x" << dev_mode.dmPelsHeight - << "x" << dev_mode.dmBitsPerPel - << " @ " << dev_mode.dmDisplayFrequency - << LL_ENDL; - - window_rect.left = (long) 0; - window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel - window_rect.top = (long) 0; - window_rect.bottom = (long) height; - dw_ex_style = WS_EX_APPWINDOW; - dw_style = WS_POPUP; - - // Move window borders out not to cover window contents - AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style); - } - // If it failed, we don't want to run fullscreen - else - { - mFullscreen = FALSE; - mFullscreenWidth = -1; - mFullscreenHeight = -1; - mFullscreenBits = -1; - mFullscreenRefresh = -1; - - LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL; - return FALSE; - } - } - else - { - mFullscreen = FALSE; - window_rect.left = (long) (posp ? posp->mX : 0); - window_rect.right = (long) width + window_rect.left; // Windows GDI rects don't include rightmost pixel - window_rect.top = (long) (posp ? posp->mY : 0); - window_rect.bottom = (long) height + window_rect.top; - // Window with an edge - dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; - dw_style = WS_OVERLAPPEDWINDOW; - } - - // don't post quit messages when destroying old windows - mPostQuit = FALSE; - - // create window - DestroyWindow(mWindowHandle); - mWindowHandle = CreateWindowEx(dw_ex_style, - mWindowClassName, - mWindowTitle, - WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, - window_rect.left, // x pos - window_rect.top, // y pos - window_rect.right - window_rect.left, // width - window_rect.bottom - window_rect.top, // height - NULL, - NULL, - mhInstance, - NULL); - - //----------------------------------------------------------------------- - // Create GL drawing context - //----------------------------------------------------------------------- - static PIXELFORMATDESCRIPTOR pfd = - { - sizeof(PIXELFORMATDESCRIPTOR), - 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, - PFD_TYPE_RGBA, - BITS_PER_PIXEL, - 0, 0, 0, 0, 0, 0, // RGB bits and shift, unused - 8, // alpha bits - 0, // alpha shift - 0, // accum bits - 0, 0, 0, 0, // accum RGBA - 24, // depth bits - 8, // stencil bits, avi added for stencil test - 0, - PFD_MAIN_PLANE, - 0, - 0, 0, 0 - }; - - if (!(mhDC = GetDC(mWindowHandle))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBDevContextErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - // Verify what pixel format we actually received. - if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), - &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cColorBits < 32) - { - close(); - OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cAlphaBits < 8) - { - close(); - OSMessageBox(mCallbacks->translateString("MBAlpha"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!SetPixelFormat(mhDC, pixel_format, &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(mhRC = wglCreateContext(mhDC))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!wglMakeCurrent(mhDC, mhRC)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - gGLManager.initWGL(); - - if (wglChoosePixelFormatARB) - { - // OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we - // can get exactly what we want. - GLint attrib_list[256]; - S32 cur_attrib = 0; - - attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB; - attrib_list[cur_attrib++] = 24; - - attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB; - attrib_list[cur_attrib++] = 8; - - attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB; - attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB; - - attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB; - attrib_list[cur_attrib++] = 24; - - attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB; - attrib_list[cur_attrib++] = 8; - - U32 end_attrib = 0; - if (mFSAASamples > 0) - { - end_attrib = cur_attrib; - attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_SAMPLES_ARB; - attrib_list[cur_attrib++] = mFSAASamples; - } - - // End the list - attrib_list[cur_attrib++] = 0; - - GLint pixel_formats[256]; - U32 num_formats = 0; - - // First we try and get a 32 bit depth pixel format - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit"); - return FALSE; - } - - if (!num_formats) - { - if (end_attrib > 0) - { - LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL; - attrib_list[end_attrib] = 0; - - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA"); - return FALSE; - } - } - - if (!num_formats) - { - LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL; - // Try 24-bit format - attrib_list[1] = 24; - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit"); - return FALSE; - } - - if (!num_formats) - { - LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL; - attrib_list[1] = 16; - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result || !num_formats) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit"); - return FALSE; - } - } - } - - LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL; - } - - - - S32 swap_method = 0; - S32 cur_format = num_formats-1; - GLint swap_query = WGL_SWAP_METHOD_ARB; - - BOOL found_format = FALSE; - - while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) - { - if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0) - { - found_format = TRUE; - } - else - { - --cur_format; - } - } - - pixel_format = pixel_formats[cur_format]; - - if (mhDC != 0) // Does The Window Have A Device Context? - { - wglMakeCurrent(mhDC, 0); // Set The Current Active Rendering Context To Zero - if (mhRC != 0) // Does The Window Have A Rendering Context? - { - wglDeleteContext (mhRC); // Release The Rendering Context - mhRC = 0; // Zero The Rendering Context - - } - ReleaseDC (mWindowHandle, mhDC); // Release The Device Context - mhDC = 0; // Zero The Device Context - } - DestroyWindow (mWindowHandle); // Destroy The Window - - - mWindowHandle = CreateWindowEx(dw_ex_style, - mWindowClassName, - mWindowTitle, - WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, - window_rect.left, // x pos - window_rect.top, // y pos - window_rect.right - window_rect.left, // width - window_rect.bottom - window_rect.top, // height - NULL, - NULL, - mhInstance, - NULL); - - if (!(mhDC = GetDC(mWindowHandle))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!SetPixelFormat(mhDC, pixel_format, &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) - { - switch (swap_method) - { - case WGL_SWAP_EXCHANGE_ARB: - mSwapMethod = SWAP_METHOD_EXCHANGE; - LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL; - break; - case WGL_SWAP_COPY_ARB: - mSwapMethod = SWAP_METHOD_COPY; - LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL; - break; - case WGL_SWAP_UNDEFINED_ARB: - mSwapMethod = SWAP_METHOD_UNDEFINED; - LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL; - break; - default: - mSwapMethod = SWAP_METHOD_UNDEFINED; - LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL; - break; - } - } - } - else - { - LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL; - } - - // Verify what pixel format we actually received. - if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), - &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) - << " Alpha Bits " << S32(pfd.cAlphaBits) - << " Depth Bits " << S32(pfd.cDepthBits) - << LL_ENDL; - - // make sure we have 32 bits per pixel - if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32) - { - close(); - OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cAlphaBits < 8) - { - close(); - OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(mhRC = wglCreateContext(mhDC))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!wglMakeCurrent(mhDC, mhRC)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!gGLManager.initGL()) - { - close(); - OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - // Disable vertical sync for swap - if (disable_vsync && wglSwapIntervalEXT) - { - LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL; - wglSwapIntervalEXT(0); - } - else - { - LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL; - } - - SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); - - // register this window as handling drag/drop events from the OS - DragAcceptFiles( mWindowHandle, TRUE ); - - //register joystick timer callback - SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer - - // ok to post quit messages now - mPostQuit = TRUE; - - if (auto_show) - { - show(); - glClearColor(0.0f, 0.0f, 0.0f, 0.f); - glClear(GL_COLOR_BUFFER_BIT); - swapBuffers(); - } - - return TRUE; -} - -void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size ) -{ - if( mIsMouseClipping ) - { - RECT client_rect_in_screen_space; - if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) - { - ClipCursor( &client_rect_in_screen_space ); - } - } - - // if the window was already maximized, MoveWindow seems to still set the maximized flag even if - // the window is smaller than maximized. - // So we're going to do a restore first (which is a ShowWindow call) (SL-44655). - - // THIS CAUSES DEV-15484 and DEV-15949 - //ShowWindow(mWindowHandle, SW_RESTORE); - // NOW we can call MoveWindow - MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE); -} - -BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position) -{ - LLCoordScreen screen_pos; - - mMousePositionModified = TRUE; - if (!mWindowHandle) - { - return FALSE; - } - - if (!convertCoords(position, &screen_pos)) - { - return FALSE; - } - - // Inform the application of the new mouse position (needed for per-frame - // hover/picking to function). - LLCoordGL gl_pos; - convertCoords(position, &gl_pos); - mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); - - // DEV-18951 VWR-8524 Camera moves wildly when alt-clicking. - // Because we have preemptively notified the application of the new - // mouse position via handleMouseMove() above, we need to clear out - // any stale mouse move events. RN/JC - MSG msg; - while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) - { } - - return SetCursorPos(screen_pos.mX, screen_pos.mY); -} - -BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position) -{ - POINT cursor_point; - LLCoordScreen screen_pos; - - if (!mWindowHandle || - !GetCursorPos(&cursor_point)) - { - return FALSE; - } - - screen_pos.mX = cursor_point.x; - screen_pos.mY = cursor_point.y; - - return convertCoords(screen_pos, position); -} - -void LLWindowWin32::hideCursor() -{ - while (ShowCursor(FALSE) >= 0) - { - // nothing, wait for cursor to push down - } - mCursorHidden = TRUE; - mHideCursorPermanent = TRUE; -} - -void LLWindowWin32::showCursor() -{ - // makes sure the cursor shows up - while (ShowCursor(TRUE) < 0) - { - // do nothing, wait for cursor to pop out - } - mCursorHidden = FALSE; - mHideCursorPermanent = FALSE; -} - -void LLWindowWin32::showCursorFromMouseMove() -{ - if (!mHideCursorPermanent) - { - showCursor(); - } -} - -void LLWindowWin32::hideCursorUntilMouseMove() -{ - if (!mHideCursorPermanent) - { - hideCursor(); - mHideCursorPermanent = FALSE; - } -} - -BOOL LLWindowWin32::isCursorHidden() -{ - return mCursorHidden; -} - - -HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name) -{ - return (HCURSOR)LoadImage(mhInstance, - name, - IMAGE_CURSOR, - 0, // default width - 0, // default height - LR_DEFAULTCOLOR); -} - - -void LLWindowWin32::initCursors() -{ - mCursor[ UI_CURSOR_ARROW ] = LoadCursor(NULL, IDC_ARROW); - mCursor[ UI_CURSOR_WAIT ] = LoadCursor(NULL, IDC_WAIT); - mCursor[ UI_CURSOR_HAND ] = LoadCursor(NULL, IDC_HAND); - mCursor[ UI_CURSOR_IBEAM ] = LoadCursor(NULL, IDC_IBEAM); - mCursor[ UI_CURSOR_CROSS ] = LoadCursor(NULL, IDC_CROSS); - mCursor[ UI_CURSOR_SIZENWSE ] = LoadCursor(NULL, IDC_SIZENWSE); - mCursor[ UI_CURSOR_SIZENESW ] = LoadCursor(NULL, IDC_SIZENESW); - mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); - mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); - mCursor[ UI_CURSOR_NO ] = LoadCursor(NULL, IDC_NO); - mCursor[ UI_CURSOR_WORKING ] = LoadCursor(NULL, IDC_APPSTARTING); - - HMODULE module = GetModuleHandle(NULL); - mCursor[ UI_CURSOR_TOOLGRAB ] = LoadCursor(module, TEXT("TOOLGRAB")); - mCursor[ UI_CURSOR_TOOLLAND ] = LoadCursor(module, TEXT("TOOLLAND")); - mCursor[ UI_CURSOR_TOOLFOCUS ] = LoadCursor(module, TEXT("TOOLFOCUS")); - mCursor[ UI_CURSOR_TOOLCREATE ] = LoadCursor(module, TEXT("TOOLCREATE")); - mCursor[ UI_CURSOR_ARROWDRAG ] = LoadCursor(module, TEXT("ARROWDRAG")); - mCursor[ UI_CURSOR_ARROWCOPY ] = LoadCursor(module, TEXT("ARROWCOPY")); - mCursor[ UI_CURSOR_ARROWDRAGMULTI ] = LoadCursor(module, TEXT("ARROWDRAGMULTI")); - mCursor[ UI_CURSOR_ARROWCOPYMULTI ] = LoadCursor(module, TEXT("ARROWCOPYMULTI")); - mCursor[ UI_CURSOR_NOLOCKED ] = LoadCursor(module, TEXT("NOLOCKED")); - mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED")); - mCursor[ UI_CURSOR_GRABLOCKED ] = LoadCursor(module, TEXT("GRABLOCKED")); - mCursor[ UI_CURSOR_TOOLTRANSLATE ] = LoadCursor(module, TEXT("TOOLTRANSLATE")); - mCursor[ UI_CURSOR_TOOLROTATE ] = LoadCursor(module, TEXT("TOOLROTATE")); - mCursor[ UI_CURSOR_TOOLSCALE ] = LoadCursor(module, TEXT("TOOLSCALE")); - mCursor[ UI_CURSOR_TOOLCAMERA ] = LoadCursor(module, TEXT("TOOLCAMERA")); - mCursor[ UI_CURSOR_TOOLPAN ] = LoadCursor(module, TEXT("TOOLPAN")); - mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN")); - mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3")); - mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); - - // Color cursors - mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); - mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); - mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); - - // Note: custom cursors that are not found make LoadCursor() return NULL. - for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) - { - if( !mCursor[i] ) - { - mCursor[i] = LoadCursor(NULL, IDC_ARROW); - } - } -} - - - -void LLWindowWin32::setCursor(ECursorType cursor) -{ - if (cursor == UI_CURSOR_ARROW - && mBusyCount > 0) - { - cursor = UI_CURSOR_WORKING; - } - - if( mCurrentCursor != cursor ) - { - mCurrentCursor = cursor; - SetCursor( mCursor[cursor] ); - } -} - -ECursorType LLWindowWin32::getCursor() const -{ - return mCurrentCursor; -} - -void LLWindowWin32::captureMouse() -{ - SetCapture(mWindowHandle); -} - -void LLWindowWin32::releaseMouse() -{ - // *NOTE:Mani ReleaseCapture will spawn new windows messages... - // which will in turn call our MainWindowProc. It therefore requires - // pausing *and more importantly resumption* of the mainlooptimeout... - // just like DispatchMessage below. - mCallbacks->handlePauseWatchdog(this); - ReleaseCapture(); - mCallbacks->handleResumeWatchdog(this); -} - - -void LLWindowWin32::delayInputProcessing() -{ - mInputProcessingPaused = TRUE; -} - -void LLWindowWin32::gatherInput() -{ - MSG msg; - int msg_count = 0; - - LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) - { - mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); - TranslateMessage(&msg); - - // turn watchdog off in here to not fail if windows is doing something wacky - mCallbacks->handlePauseWatchdog(this); - DispatchMessage(&msg); - mCallbacks->handleResumeWatchdog(this); - msg_count++; - - if ( mInputProcessingPaused ) - { - break; - } - /* Attempted workaround for problem where typing fast and hitting - return would result in only part of the text being sent. JC - - BOOL key_posted = TranslateMessage(&msg); - DispatchMessage(&msg); - msg_count++; - - // If a key was translated, a WM_CHAR might have been posted to the end - // of the event queue. We need it immediately. - if (key_posted && msg.message == WM_KEYDOWN) - { - if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - msg_count++; - } - } - */ - mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput"); - // For async host by name support. Really hacky. - if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) - { - gAsyncMsgCallback(msg); - } - } - - mInputProcessingPaused = FALSE; - - // clear this once we've processed all mouse messages that might have occurred after - // we slammed the mouse position - mMousePositionModified = FALSE; -} - -static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard"); -static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse"); - -LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param) -{ - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA); - - - if (NULL != window_imp) - { - window_imp->mCallbacks->handleResumeWatchdog(window_imp); - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc"); - // Has user provided their own window callback? - if (NULL != window_imp->mWndProc) - { - if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param)) - { - // user has handled window message - return 0; - } - } - - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc"); - - // Juggle to make sure we can get negative positions for when - // mouse is outside window. - LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)); - - // This doesn't work, as LOWORD returns unsigned short. - //LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param)); - LLCoordGL gl_coord; - - // pass along extended flag in mask - MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0; - BOOL eat_keystroke = TRUE; - - switch(u_msg) - { - RECT update_rect; - S32 update_width; - S32 update_height; - - case WM_TIMER: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER"); - window_imp->mCallbacks->handleTimerEvent(window_imp); - break; - - case WM_DEVICECHANGE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE"); - if (gDebugWindowProc) - { - llinfos << " WM_DEVICECHANGE: wParam=" << w_param - << "; lParam=" << l_param << llendl; - } - if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL) - { - if (window_imp->mCallbacks->handleDeviceChange(window_imp)) - { - return 0; - } - } - break; - - case WM_PAINT: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT"); - GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE); - update_width = update_rect.right - update_rect.left + 1; - update_height = update_rect.bottom - update_rect.top + 1; - window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top, - update_width, update_height); - break; - case WM_PARENTNOTIFY: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY"); - u_msg = u_msg; - break; - - case WM_SETCURSOR: - // This message is sent whenever the cursor is moved in a window. - // You need to set the appropriate cursor appearance. - - // Only take control of cursor over client region of window - // This allows Windows(tm) to handle resize cursors, etc. - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR"); - if (LOWORD(l_param) == HTCLIENT) - { - SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] ); - return 0; - } - break; - - case WM_ENTERMENULOOP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP"); - window_imp->mCallbacks->handleWindowBlock(window_imp); - break; - - case WM_EXITMENULOOP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP"); - window_imp->mCallbacks->handleWindowUnblock(window_imp); - break; - - case WM_ACTIVATEAPP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP"); - { - // This message should be sent whenever the app gains or loses focus. - BOOL activating = (BOOL) w_param; - BOOL minimized = window_imp->getMinimized(); - - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC ActivateApp " - << " activating " << S32(activating) - << " minimized " << S32(minimized) - << " fullscreen " << S32(window_imp->mFullscreen) - << LL_ENDL; - } - - if (window_imp->mFullscreen) - { - // When we run fullscreen, restoring or minimizing the app needs - // to switch the screen resolution - if (activating) - { - window_imp->setFullscreenResolution(); - window_imp->restore(); - } - else - { - window_imp->minimize(); - window_imp->resetDisplayResolution(); - } - } - - window_imp->mCallbacks->handleActivateApp(window_imp, activating); - - break; - } - - case WM_ACTIVATE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE"); - { - // Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE - BOOL activating = (LOWORD(w_param) != WA_INACTIVE); - - BOOL minimized = BOOL(HIWORD(w_param)); - - if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // JC - I'm not sure why, but if we don't report that we handled the - // WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work - // properly when we run fullscreen. - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC Activate " - << " activating " << S32(activating) - << " minimized " << S32(minimized) - << LL_ENDL; - } - - // Don't handle this. - break; - } - - case WM_QUERYOPEN: - // TODO: use this to return a nice icon - break; - - case WM_SYSCOMMAND: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND"); - switch(w_param) - { - case SC_KEYMENU: - // Disallow the ALT key from triggering the default system menu. - return 0; - - case SC_SCREENSAVE: - case SC_MONITORPOWER: - // eat screen save messages and prevent them! - return 0; - } - break; - - case WM_CLOSE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE"); - // Will the app allow the window to close? - if (window_imp->mCallbacks->handleCloseRequest(window_imp)) - { - // Get the app to initiate cleanup. - window_imp->mCallbacks->handleQuit(window_imp); - // The app is responsible for calling destroyWindow when done with GL - } - return 0; - - case WM_DESTROY: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY"); - if (window_imp->shouldPostQuit()) - { - PostQuitMessage(0); // Posts WM_QUIT with an exit code of 0 - } - return 0; - - case WM_COMMAND: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND"); - if (!HIWORD(w_param)) // this message is from a menu - { - window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param)); - } - break; - - case WM_SYSKEYDOWN: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN"); - // allow system keys, such as ALT-F4 to be processed by Windows - eat_keystroke = FALSE; - case WM_KEYDOWN: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); - { - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN " - << " key " << S32(w_param) - << LL_ENDL; - } - if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke) - { - return 0; - } - // pass on to windows if we didn't handle it - break; - } - case WM_SYSKEYUP: - eat_keystroke = FALSE; - case WM_KEYUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); - LLFastTimer t2(FTM_KEYHANDLER); - - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " - << " key " << S32(w_param) - << LL_ENDL; - } - if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke) - { - return 0; - } - - // pass on to windows - break; - } - case WM_IME_SETCONTEXT: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_SETCONTEXT" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW; - // Invoke DefWinProc with the modified LPARAM. - } - break; - - case WM_IME_STARTCOMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_STARTCOMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->handleStartCompositionMessage(); - return 0; - } - break; - - case WM_IME_ENDCOMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_ENDCOMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - return 0; - } - break; - - case WM_IME_COMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_COMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->handleCompositionMessage(l_param); - return 0; - } - break; - - case WM_IME_REQUEST: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_REQUEST" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - LRESULT result = 0; - if (window_imp->handleImeRequests(w_param, l_param, &result)) - { - return result; - } - } - break; - - case WM_CHAR: - // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need - // to figure out how that works. - Doug - // - // ... Well, I don't think so. - // How it works is explained in Win32 API document, but WM_UNICHAR didn't work - // as specified at least on Windows XP SP1 Japanese version. I have never used - // it since then, and I'm not sure whether it has been fixed now, but I don't think - // it is worth trying. The good old WM_CHAR works just fine even for supplementary - // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's - // by ourselves. It is not that tough. -- Alissa Sabre @ SL - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_CHAR " - << " key " << S32(w_param) - << LL_ENDL; - } - // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, - // we *did* processed the event, so I believe we should not pass it to DefWindowProc... - window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE)); - return 0; - - case WM_LBUTTONDOWN: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_LBUTTONDBLCLK: - //RN: ignore right button double clicks for now - //case WM_RBUTTONDBLCLK: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK"); - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) - { - return 0; - } - } - break; - - case WM_LBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - //if (gDebugClicks) - //{ - // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL; - //} - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_RBUTTONDBLCLK: - case WM_RBUTTONDOWN: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in the llviewerapp, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_RBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MBUTTONDOWN: -// case WM_MBUTTONDBLCLK: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in tllviewerhe app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - // Because we move the cursor position in tllviewerhe app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MOUSEWHEEL: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL"); - static short z_delta = 0; - - z_delta += HIWORD(w_param); - // cout << "z_delta " << z_delta << endl; - - // current mouse wheels report changes in increments of zDelta (+120, -120) - // Future, higher resolution mouse wheels may report smaller deltas. - // So we sum the deltas and only act when we've exceeded WHEEL_DELTA - // - // If the user rapidly spins the wheel, we can get messages with - // large deltas, like 480 or so. Thus we need to scroll more quickly. - if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta) - { - window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA); - z_delta = 0; - } - return 0; - } - /* - // TODO: add this after resolving _WIN32_WINNT issue - case WM_MOUSELEAVE: - { - window_imp->mCallbacks->handleMouseLeave(window_imp); - - // TRACKMOUSEEVENT track_mouse_event; - // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); - // track_mouse_event.dwFlags = TME_LEAVE; - // track_mouse_event.hwndTrack = h_wnd; - // track_mouse_event.dwHoverTime = HOVER_DEFAULT; - // TrackMouseEvent( &track_mouse_event ); - return 0; - } - */ - // Handle mouse movement within the window - case WM_MOUSEMOVE: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE"); - window_imp->convertCoords(window_coord, &gl_coord); - MASK mask = gKeyboard->currentMask(TRUE); - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - return 0; - } - - case WM_SIZE: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE"); - S32 width = S32( LOWORD(l_param) ); - S32 height = S32( HIWORD(l_param) ); - - if (gDebugWindowProc) - { - BOOL maximized = ( w_param == SIZE_MAXIMIZED ); - BOOL restored = ( w_param == SIZE_RESTORED ); - BOOL minimized = ( w_param == SIZE_MINIMIZED ); - - LL_INFOS("Window") << "WINDOWPROC Size " - << width << "x" << height - << " max " << S32(maximized) - << " min " << S32(minimized) - << " rest " << S32(restored) - << LL_ENDL; - } - - // There's an odd behavior with WM_SIZE that I would call a bug. If - // the window is maximized, and you call MoveWindow() with a size smaller - // than a maximized window, it ends up sending WM_SIZE with w_param set - // to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work. - // (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see - // LLWindowWin32::moveWindow in this file). - - // If we are now restored, but we weren't before, this - // means that the window was un-minimized. - if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED) - { - window_imp->mCallbacks->handleActivate(window_imp, TRUE); - } - - // handle case of window being maximized from fully minimized state - if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED) - { - window_imp->mCallbacks->handleActivate(window_imp, TRUE); - } - - // Also handle the minimization case - if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED) - { - window_imp->mCallbacks->handleActivate(window_imp, FALSE); - } - - // Actually resize all of our views - if (w_param != SIZE_MINIMIZED) - { - // Ignore updates for minimizing and minimized "windows" - window_imp->mCallbacks->handleResize( window_imp, - LOWORD(l_param), - HIWORD(l_param) ); - } - - window_imp->mLastSizeWParam = w_param; - - return 0; - } - - case WM_SETFOCUS: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL; - } - window_imp->mCallbacks->handleFocus(window_imp); - return 0; - - case WM_KILLFOCUS: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL; - } - window_imp->mCallbacks->handleFocusLost(window_imp); - return 0; - - case WM_COPYDATA: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); - // received a URL - PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; - window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); - }; - return 0; - - case WM_DROPFILES: - { - // HDROP contains what we need - HDROP hdrop = (HDROP)w_param; - - // get location in window space where drop occured and convert to OpenGL coordinate space - POINT pt; - DragQueryPoint( hdrop, &pt ); - LLCoordGL gl_coord; - LLCoordWindow cursor_coord_window( pt.x, pt.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - - // get payload (eventually, this needs to more advanced and grab size of payload dynamically - static char file_name[ 1024 ]; +#include <Imm.h> + +// Require DirectInput version 8 +#define DIRECTINPUT_VERSION 0x0800 + +#include <dinput.h> +#include <Dbt.h.> + +#include "llmemtype.h" +// culled from winuser.h +#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ +const S32 WM_MOUSEWHEEL = 0x020A; +#endif +#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */ +const S32 WHEEL_DELTA = 120; /* Value for rolling one detent */ +#endif +const S32 MAX_MESSAGE_PER_UPDATE = 20; +const S32 BITS_PER_PIXEL = 32; +const S32 MAX_NUM_RESOLUTIONS = 32; +const F32 ICON_FLASH_TIME = 0.5f; + +extern BOOL gDebugWindowProc; + +LPWSTR gIconResource = IDI_APPLICATION; + +LLW32MsgCallback gAsyncMsgCallback = NULL; + +// +// LLWindowWin32 +// + +void show_window_creation_error(const std::string& title) +{ + LL_WARNS("Window") << title << LL_ENDL; +} + +//static +BOOL LLWindowWin32::sIsClassRegistered = FALSE; + +BOOL LLWindowWin32::sLanguageTextInputAllowed = TRUE; +BOOL LLWindowWin32::sWinIMEOpened = FALSE; +HKL LLWindowWin32::sWinInputLocale = 0; +DWORD LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE; +DWORD LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC; +LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1); + +// The following class LLWinImm delegates Windows IMM APIs. +// We need this because some language versions of Windows, +// e.g., US version of Windows XP, doesn't install IMM32.DLL +// as a default, and we can't link against imm32.lib statically. +// I believe DLL loading of this type is best suited to do +// in a static initialization of a class. What I'm not sure is +// whether it follows the Linden Conding Standard... +// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members + +class LLWinImm +{ +public: + static bool isAvailable() { return sTheInstance.mHImmDll != NULL; } + +public: + // Wrappers for IMM API. + static BOOL isIME(HKL hkl); + static HWND getDefaultIMEWnd(HWND hwnd); + static HIMC getContext(HWND hwnd); + static BOOL releaseContext(HWND hwnd, HIMC himc); + static BOOL getOpenStatus(HIMC himc); + static BOOL setOpenStatus(HIMC himc, BOOL status); + static BOOL getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence); + static BOOL setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence); + static BOOL getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); + static BOOL setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); + static LONG getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length); + static BOOL setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength); + static BOOL setCompositionFont(HIMC himc, LPLOGFONTW logfont); + static BOOL setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form); + static BOOL notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value); + +private: + LLWinImm(); + ~LLWinImm(); + +private: + // Pointers to IMM API. + BOOL (WINAPI *mImmIsIME)(HKL); + HWND (WINAPI *mImmGetDefaultIMEWnd)(HWND); + HIMC (WINAPI *mImmGetContext)(HWND); + BOOL (WINAPI *mImmReleaseContext)(HWND, HIMC); + BOOL (WINAPI *mImmGetOpenStatus)(HIMC); + BOOL (WINAPI *mImmSetOpenStatus)(HIMC, BOOL); + BOOL (WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD); + BOOL (WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD); + BOOL (WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); + BOOL (WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); + LONG (WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD); + BOOL (WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); + BOOL (WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW); + BOOL (WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM); + BOOL (WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD); + +private: + HMODULE mHImmDll; + static LLWinImm sTheInstance; +}; + +LLWinImm LLWinImm::sTheInstance; + +LLWinImm::LLWinImm() : mHImmDll(NULL) +{ + // Check system metrics + if ( !GetSystemMetrics( SM_DBCSENABLED ) ) + return; + + + mHImmDll = LoadLibraryA("Imm32"); + if (mHImmDll != NULL) + { + mImmIsIME = (BOOL (WINAPI *)(HKL)) GetProcAddress(mHImmDll, "ImmIsIME"); + mImmGetDefaultIMEWnd = (HWND (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd"); + mImmGetContext = (HIMC (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetContext"); + mImmReleaseContext = (BOOL (WINAPI *)(HWND, HIMC)) GetProcAddress(mHImmDll, "ImmReleaseContext"); + mImmGetOpenStatus = (BOOL (WINAPI *)(HIMC)) GetProcAddress(mHImmDll, "ImmGetOpenStatus"); + mImmSetOpenStatus = (BOOL (WINAPI *)(HIMC, BOOL)) GetProcAddress(mHImmDll, "ImmSetOpenStatus"); + mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus"); + mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmSetConversionStatus"); + mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmGetCompositionWindow"); + mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmSetCompositionWindow"); + mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmGetCompositionStringW"); + mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmSetCompositionStringW"); + mImmSetCompositionFont = (BOOL (WINAPI *)(HIMC, LPLOGFONTW)) GetProcAddress(mHImmDll, "ImmSetCompositionFontW"); + mImmSetCandidateWindow = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM)) GetProcAddress(mHImmDll, "ImmSetCandidateWindow"); + mImmNotifyIME = (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmNotifyIME"); + + if (mImmIsIME == NULL || + mImmGetDefaultIMEWnd == NULL || + mImmGetContext == NULL || + mImmReleaseContext == NULL || + mImmGetOpenStatus == NULL || + mImmSetOpenStatus == NULL || + mImmGetConversionStatus == NULL || + mImmSetConversionStatus == NULL || + mImmGetCompostitionWindow == NULL || + mImmSetCompostitionWindow == NULL || + mImmGetCompositionString == NULL || + mImmSetCompositionString == NULL || + mImmSetCompositionFont == NULL || + mImmSetCandidateWindow == NULL || + mImmNotifyIME == NULL) + { + // If any of the above API entires are not found, we can't use IMM API. + // So, turn off the IMM support. We should log some warning message in + // the case, since it is very unusual; these APIs are available from + // the beginning, and all versions of IMM32.DLL should have them all. + // Unfortunately, this code may be executed before initialization of + // the logging channel (llwarns), and we can't do it here... Yes, this + // is one of disadvantages to use static constraction to DLL loading. + FreeLibrary(mHImmDll); + mHImmDll = NULL; + + // If we unload the library, make sure all the function pointers are cleared + mImmIsIME = NULL; + mImmGetDefaultIMEWnd = NULL; + mImmGetContext = NULL; + mImmReleaseContext = NULL; + mImmGetOpenStatus = NULL; + mImmSetOpenStatus = NULL; + mImmGetConversionStatus = NULL; + mImmSetConversionStatus = NULL; + mImmGetCompostitionWindow = NULL; + mImmSetCompostitionWindow = NULL; + mImmGetCompositionString = NULL; + mImmSetCompositionString = NULL; + mImmSetCompositionFont = NULL; + mImmSetCandidateWindow = NULL; + mImmNotifyIME = NULL; + } + } +} + + +// static +BOOL LLWinImm::isIME(HKL hkl) +{ + if ( sTheInstance.mImmIsIME ) + return sTheInstance.mImmIsIME(hkl); + return FALSE; +} + +// static +HIMC LLWinImm::getContext(HWND hwnd) +{ + if ( sTheInstance.mImmGetContext ) + return sTheInstance.mImmGetContext(hwnd); + return 0; +} + +//static +BOOL LLWinImm::releaseContext(HWND hwnd, HIMC himc) +{ + if ( sTheInstance.mImmIsIME ) + return sTheInstance.mImmReleaseContext(hwnd, himc); + return FALSE; +} + +// static +BOOL LLWinImm::getOpenStatus(HIMC himc) +{ + if ( sTheInstance.mImmGetOpenStatus ) + return sTheInstance.mImmGetOpenStatus(himc); + return FALSE; +} + +// static +BOOL LLWinImm::setOpenStatus(HIMC himc, BOOL status) +{ + if ( sTheInstance.mImmSetOpenStatus ) + return sTheInstance.mImmSetOpenStatus(himc, status); + return FALSE; +} + +// static +BOOL LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence) +{ + if ( sTheInstance.mImmGetConversionStatus ) + return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); + return FALSE; +} + +// static +BOOL LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence) +{ + if ( sTheInstance.mImmSetConversionStatus ) + return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); + return FALSE; +} + +// static +BOOL LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) +{ + if ( sTheInstance.mImmGetCompostitionWindow ) + return sTheInstance.mImmGetCompostitionWindow(himc, form); + return FALSE; +} + +// static +BOOL LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) +{ + if ( sTheInstance.mImmSetCompostitionWindow ) + return sTheInstance.mImmSetCompostitionWindow(himc, form); + return FALSE; +} + + +// static +LONG LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length) +{ + if ( sTheInstance.mImmGetCompositionString ) + return sTheInstance.mImmGetCompositionString(himc, index, data, length); + return FALSE; +} + + +// static +BOOL LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength) +{ + if ( sTheInstance.mImmSetCompositionString ) + return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength); + return FALSE; +} + +// static +BOOL LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont) +{ + if ( sTheInstance.mImmSetCompositionFont ) + return sTheInstance.mImmSetCompositionFont(himc, pFont); + return FALSE; +} + +// static +BOOL LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form) +{ + if ( sTheInstance.mImmSetCandidateWindow ) + return sTheInstance.mImmSetCandidateWindow(himc, form); + return FALSE; +} + +// static +BOOL LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value) +{ + if ( sTheInstance.mImmNotifyIME ) + return sTheInstance.mImmNotifyIME(himc, action, index, value); + return FALSE; +} + + + + +// ---------------------------------------------------------------------------------------- +LLWinImm::~LLWinImm() +{ + if (mHImmDll != NULL) + { + FreeLibrary(mHImmDll); + mHImmDll = NULL; + } +} + + +LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, + const std::string& title, const std::string& name, S32 x, S32 y, S32 width, + S32 height, U32 flags, + BOOL fullscreen, BOOL clearBg, + BOOL disable_vsync, BOOL use_gl, + BOOL ignore_pixel_depth, + U32 fsaa_samples) + : LLWindow(callbacks, fullscreen, flags) +{ + mFSAASamples = fsaa_samples; + mIconResource = gIconResource; + mOverrideAspectRatio = 0.f; + mNativeAspectRatio = 0.f; + mMousePositionModified = FALSE; + mInputProcessingPaused = FALSE; + mPreeditor = NULL; + mhDC = NULL; + mhRC = NULL; + + // Initialize the keyboard + gKeyboard = new LLKeyboardWin32(); + gKeyboard->setCallbacks(callbacks); + + // Initialize the Drag and Drop functionality + mDragDrop = new LLDragDropWin32; + + // Initialize (boot strap) the Language text input management, + // based on the system's (user's) default settings. + allowLanguageTextInput(mPreeditor, FALSE); + + WNDCLASS wc; + RECT window_rect; + + // Set the window title + if (title.empty()) + { + mWindowTitle = new WCHAR[50]; + wsprintf(mWindowTitle, L"OpenGL Window"); + } + else + { + mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. + mbstowcs(mWindowTitle, title.c_str(), 255); + mWindowTitle[255] = 0; + } + + // Set the window class name + if (name.empty()) + { + mWindowClassName = new WCHAR[50]; + wsprintf(mWindowClassName, L"OpenGL Window"); + } + else + { + mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. + mbstowcs(mWindowClassName, name.c_str(), 255); + mWindowClassName[255] = 0; + } + + + // We're not clipping yet + SetRect( &mOldMouseClip, 0, 0, 0, 0 ); + + // Make an instance of our window then define the window class + mhInstance = GetModuleHandle(NULL); + mWndProc = NULL; + + mSwapMethod = SWAP_METHOD_UNDEFINED; + + // No WPARAM yet. + mLastSizeWParam = 0; + + // Windows GDI rects don't include rightmost pixel + window_rect.left = (long) 0; + window_rect.right = (long) width; + window_rect.top = (long) 0; + window_rect.bottom = (long) height; + + // Grab screen size to sanitize the window + S32 window_border_y = GetSystemMetrics(SM_CYBORDER); + S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); + S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); + S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN); + S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN); + + if (x < virtual_screen_x) x = virtual_screen_x; + if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y; + + if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width; + if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height; + + if (!sIsClassRegistered) + { + // Force redraw when resized and create a private device context + + // Makes double click messages. + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; + + // Set message handler function + wc.lpfnWndProc = (WNDPROC) mainWindowProc; + + // unused + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + + wc.hInstance = mhInstance; + wc.hIcon = LoadIcon(mhInstance, mIconResource); + + // We will set the cursor ourselves + wc.hCursor = NULL; + + // background color is not used + if (clearBg) + { + wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); + } + else + { + wc.hbrBackground = (HBRUSH) NULL; + } + + // we don't use windows menus + wc.lpszMenuName = NULL; + + wc.lpszClassName = mWindowClassName; + + if (!RegisterClass(&wc)) + { + OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), + mCallbacks->translateString("MBError"), OSMB_OK); + return; + } + sIsClassRegistered = TRUE; + } + + //----------------------------------------------------------------------- + // Get the current refresh rate + //----------------------------------------------------------------------- + + DEVMODE dev_mode; + DWORD current_refresh; + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + current_refresh = dev_mode.dmDisplayFrequency; + mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight); + } + else + { + current_refresh = 60; + } + + //----------------------------------------------------------------------- + // Drop resolution and go fullscreen + // use a display mode with our desired size and depth, with a refresh + // rate as close at possible to the users' default + //----------------------------------------------------------------------- + if (mFullscreen) + { + BOOL success = FALSE; + DWORD closest_refresh = 0; + + for (S32 mode_num = 0;; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == BITS_PER_PIXEL) + { + success = TRUE; + if ((dev_mode.dmDisplayFrequency - current_refresh) + < (closest_refresh - current_refresh)) + { + closest_refresh = dev_mode.dmDisplayFrequency; + } + } + } + + if (closest_refresh == 0) + { + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; + success = FALSE; + } + + // If we found a good resolution, use it. + if (success) + { + success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); + } + + // Keep a copy of the actual current device mode in case we minimize + // and change the screen resolution. JC + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); + + // If it failed, we don't want to run fullscreen + if (success) + { + mFullscreen = TRUE; + mFullscreenWidth = dev_mode.dmPelsWidth; + mFullscreenHeight = dev_mode.dmPelsHeight; + mFullscreenBits = dev_mode.dmBitsPerPel; + mFullscreenRefresh = dev_mode.dmDisplayFrequency; + + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth + << "x" << dev_mode.dmPelsHeight + << "x" << dev_mode.dmBitsPerPel + << " @ " << dev_mode.dmDisplayFrequency + << LL_ENDL; + } + else + { + mFullscreen = FALSE; + mFullscreenWidth = -1; + mFullscreenHeight = -1; + mFullscreenBits = -1; + mFullscreenRefresh = -1; + + std::map<std::string,std::string> args; + args["[WIDTH]"] = llformat("%d", width); + args["[HEIGHT]"] = llformat ("%d", height); + OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args), + mCallbacks->translateString("MBError"), OSMB_OK); + } + } + + // TODO: add this after resolving _WIN32_WINNT issue + // if (!fullscreen) + // { + // TRACKMOUSEEVENT track_mouse_event; + // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); + // track_mouse_event.dwFlags = TME_LEAVE; + // track_mouse_event.hwndTrack = mWindowHandle; + // track_mouse_event.dwHoverTime = HOVER_DEFAULT; + // TrackMouseEvent( &track_mouse_event ); + // } + + + //----------------------------------------------------------------------- + // Create GL drawing context + //----------------------------------------------------------------------- + LLCoordScreen windowPos(x,y); + LLCoordScreen windowSize(window_rect.right - window_rect.left, + window_rect.bottom - window_rect.top); + if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos)) + { + return; + } + + //start with arrow cursor + initCursors(); + setCursor( UI_CURSOR_ARROW ); + + // Initialize (boot strap) the Language text input management, + // based on the system's (or user's) default settings. + allowLanguageTextInput(NULL, FALSE); +} + + +LLWindowWin32::~LLWindowWin32() +{ + delete mDragDrop; + + delete [] mWindowTitle; + mWindowTitle = NULL; + + delete [] mSupportedResolutions; + mSupportedResolutions = NULL; + + delete mWindowClassName; + mWindowClassName = NULL; +} + +void LLWindowWin32::show() +{ + ShowWindow(mWindowHandle, SW_SHOW); + SetForegroundWindow(mWindowHandle); + SetFocus(mWindowHandle); +} + +void LLWindowWin32::hide() +{ + setMouseClipping(FALSE); + ShowWindow(mWindowHandle, SW_HIDE); +} + +void LLWindowWin32::minimize() +{ + setMouseClipping(FALSE); + showCursor(); + ShowWindow(mWindowHandle, SW_MINIMIZE); +} + + +void LLWindowWin32::restore() +{ + ShowWindow(mWindowHandle, SW_RESTORE); + SetForegroundWindow(mWindowHandle); + SetFocus(mWindowHandle); +} + + +// close() destroys all OS-specific code associated with a window. +// Usually called from LLWindowManager::destroyWindow() +void LLWindowWin32::close() +{ + LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL; + // Is window is already closed? + if (!mWindowHandle) + { + return; + } + + mDragDrop->reset(); + + // Make sure cursor is visible and we haven't mangled the clipping state. + setMouseClipping(FALSE); + showCursor(); + + // Go back to screen mode written in the registry. + if (mFullscreen) + { + resetDisplayResolution(); + } + + // Clean up remaining GL state + LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL; + gGLManager.shutdownGL(); + + LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL; + if (mhRC) + { + if (!wglMakeCurrent(NULL, NULL)) + { + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; + } + + if (!wglDeleteContext(mhRC)) + { + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; + } + + mhRC = NULL; + } + + // Restore gamma to the system values. + restoreGamma(); + + if (mhDC && !ReleaseDC(mWindowHandle, mhDC)) + { + LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL; + mhDC = NULL; + } + + LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; + + // Don't process events in our mainWindowProc any longer. + SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); + + // Make sure we don't leave a blank toolbar button. + ShowWindow(mWindowHandle, SW_HIDE); + + // This causes WM_DESTROY to be sent *immediately* + if (!DestroyWindow(mWindowHandle)) + { + OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), + mCallbacks->translateString("MBShutdownErr"), + OSMB_OK); + } + + mWindowHandle = NULL; +} + +BOOL LLWindowWin32::isValid() +{ + return (mWindowHandle != NULL); +} + +BOOL LLWindowWin32::getVisible() +{ + return (mWindowHandle && IsWindowVisible(mWindowHandle)); +} + +BOOL LLWindowWin32::getMinimized() +{ + return (mWindowHandle && IsIconic(mWindowHandle)); +} + +BOOL LLWindowWin32::getMaximized() +{ + return (mWindowHandle && IsZoomed(mWindowHandle)); +} + +BOOL LLWindowWin32::maximize() +{ + BOOL success = FALSE; + if (!mWindowHandle) return success; + + WINDOWPLACEMENT placement; + placement.length = sizeof(WINDOWPLACEMENT); + + success = GetWindowPlacement(mWindowHandle, &placement); + if (!success) return success; + + placement.showCmd = SW_MAXIMIZE; + + success = SetWindowPlacement(mWindowHandle, &placement); + return success; +} + +BOOL LLWindowWin32::getFullscreen() +{ + return mFullscreen; +} + +BOOL LLWindowWin32::getPosition(LLCoordScreen *position) +{ + RECT window_rect; + + if (!mWindowHandle || + !GetWindowRect(mWindowHandle, &window_rect) || + NULL == position) + { + return FALSE; + } + + position->mX = window_rect.left; + position->mY = window_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::getSize(LLCoordScreen *size) +{ + RECT window_rect; + + if (!mWindowHandle || + !GetWindowRect(mWindowHandle, &window_rect) || + NULL == size) + { + return FALSE; + } + + size->mX = window_rect.right - window_rect.left; + size->mY = window_rect.bottom - window_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::getSize(LLCoordWindow *size) +{ + RECT client_rect; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == size) + { + return FALSE; + } + + size->mX = client_rect.right - client_rect.left; + size->mY = client_rect.bottom - client_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::setPosition(const LLCoordScreen position) +{ + LLCoordScreen size; + + if (!mWindowHandle) + { + return FALSE; + } + getSize(&size); + moveWindow(position, size); + return TRUE; +} + +BOOL LLWindowWin32::setSize(const LLCoordScreen size) +{ + LLCoordScreen position; + + getPosition(&position); + if (!mWindowHandle) + { + return FALSE; + } + + moveWindow(position, size); + return TRUE; +} + +// changing fullscreen resolution +BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp) +{ + GLuint pixel_format; + DEVMODE dev_mode; + DWORD current_refresh; + DWORD dw_ex_style; + DWORD dw_style; + RECT window_rect; + S32 width = size.mX; + S32 height = size.mY; + BOOL auto_show = FALSE; + + if (mhRC) + { + auto_show = TRUE; + resetDisplayResolution(); + } + + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + current_refresh = dev_mode.dmDisplayFrequency; + } + else + { + current_refresh = 60; + } + + gGLManager.shutdownGL(); + //destroy gl context + if (mhRC) + { + if (!wglMakeCurrent(NULL, NULL)) + { + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; + } + + if (!wglDeleteContext(mhRC)) + { + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; + } + + mhRC = NULL; + } + + if (fullscreen) + { + mFullscreen = TRUE; + BOOL success = FALSE; + DWORD closest_refresh = 0; + + for (S32 mode_num = 0;; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == BITS_PER_PIXEL) + { + success = TRUE; + if ((dev_mode.dmDisplayFrequency - current_refresh) + < (closest_refresh - current_refresh)) + { + closest_refresh = dev_mode.dmDisplayFrequency; + } + } + } + + if (closest_refresh == 0) + { + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; + return FALSE; + } + + // If we found a good resolution, use it. + if (success) + { + success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); + } + + // Keep a copy of the actual current device mode in case we minimize + // and change the screen resolution. JC + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); + + if (success) + { + mFullscreen = TRUE; + mFullscreenWidth = dev_mode.dmPelsWidth; + mFullscreenHeight = dev_mode.dmPelsHeight; + mFullscreenBits = dev_mode.dmBitsPerPel; + mFullscreenRefresh = dev_mode.dmDisplayFrequency; + + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth + << "x" << dev_mode.dmPelsHeight + << "x" << dev_mode.dmBitsPerPel + << " @ " << dev_mode.dmDisplayFrequency + << LL_ENDL; + + window_rect.left = (long) 0; + window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel + window_rect.top = (long) 0; + window_rect.bottom = (long) height; + dw_ex_style = WS_EX_APPWINDOW; + dw_style = WS_POPUP; + + // Move window borders out not to cover window contents + AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style); + } + // If it failed, we don't want to run fullscreen + else + { + mFullscreen = FALSE; + mFullscreenWidth = -1; + mFullscreenHeight = -1; + mFullscreenBits = -1; + mFullscreenRefresh = -1; + + LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL; + return FALSE; + } + } + else + { + mFullscreen = FALSE; + window_rect.left = (long) (posp ? posp->mX : 0); + window_rect.right = (long) width + window_rect.left; // Windows GDI rects don't include rightmost pixel + window_rect.top = (long) (posp ? posp->mY : 0); + window_rect.bottom = (long) height + window_rect.top; + // Window with an edge + dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; + dw_style = WS_OVERLAPPEDWINDOW; + } + + // don't post quit messages when destroying old windows + mPostQuit = FALSE; + + // create window + DestroyWindow(mWindowHandle); + mWindowHandle = CreateWindowEx(dw_ex_style, + mWindowClassName, + mWindowTitle, + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, + window_rect.left, // x pos + window_rect.top, // y pos + window_rect.right - window_rect.left, // width + window_rect.bottom - window_rect.top, // height + NULL, + NULL, + mhInstance, + NULL); + + //----------------------------------------------------------------------- + // Create GL drawing context + //----------------------------------------------------------------------- + static PIXELFORMATDESCRIPTOR pfd = + { + sizeof(PIXELFORMATDESCRIPTOR), + 1, + PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, + PFD_TYPE_RGBA, + BITS_PER_PIXEL, + 0, 0, 0, 0, 0, 0, // RGB bits and shift, unused + 8, // alpha bits + 0, // alpha shift + 0, // accum bits + 0, 0, 0, 0, // accum RGBA + 24, // depth bits + 8, // stencil bits, avi added for stencil test + 0, + PFD_MAIN_PLANE, + 0, + 0, 0, 0 + }; + + if (!(mhDC = GetDC(mWindowHandle))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBDevContextErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + // Verify what pixel format we actually received. + if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), + &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cColorBits < 32) + { + close(); + OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cAlphaBits < 8) + { + close(); + OSMessageBox(mCallbacks->translateString("MBAlpha"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!SetPixelFormat(mhDC, pixel_format, &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(mhRC = wglCreateContext(mhDC))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!wglMakeCurrent(mhDC, mhRC)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + gGLManager.initWGL(); + + if (wglChoosePixelFormatARB) + { + // OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we + // can get exactly what we want. + GLint attrib_list[256]; + S32 cur_attrib = 0; + + attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB; + attrib_list[cur_attrib++] = 24; + + attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB; + attrib_list[cur_attrib++] = 8; + + attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB; + attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB; + + attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB; + attrib_list[cur_attrib++] = 24; + + attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB; + attrib_list[cur_attrib++] = 8; + + U32 end_attrib = 0; + if (mFSAASamples > 0) + { + end_attrib = cur_attrib; + attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_SAMPLES_ARB; + attrib_list[cur_attrib++] = mFSAASamples; + } + + // End the list + attrib_list[cur_attrib++] = 0; + + GLint pixel_formats[256]; + U32 num_formats = 0; + + // First we try and get a 32 bit depth pixel format + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit"); + return FALSE; + } + + if (!num_formats) + { + if (end_attrib > 0) + { + LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL; + attrib_list[end_attrib] = 0; + + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA"); + return FALSE; + } + } + + if (!num_formats) + { + LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL; + // Try 24-bit format + attrib_list[1] = 24; + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit"); + return FALSE; + } + + if (!num_formats) + { + LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL; + attrib_list[1] = 16; + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result || !num_formats) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit"); + return FALSE; + } + } + } + + LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL; + } + + + + S32 swap_method = 0; + S32 cur_format = num_formats-1; + GLint swap_query = WGL_SWAP_METHOD_ARB; + + BOOL found_format = FALSE; + + while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) + { + if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0) + { + found_format = TRUE; + } + else + { + --cur_format; + } + } + + pixel_format = pixel_formats[cur_format]; + + if (mhDC != 0) // Does The Window Have A Device Context? + { + wglMakeCurrent(mhDC, 0); // Set The Current Active Rendering Context To Zero + if (mhRC != 0) // Does The Window Have A Rendering Context? + { + wglDeleteContext (mhRC); // Release The Rendering Context + mhRC = 0; // Zero The Rendering Context + + } + ReleaseDC (mWindowHandle, mhDC); // Release The Device Context + mhDC = 0; // Zero The Device Context + } + DestroyWindow (mWindowHandle); // Destroy The Window + + + mWindowHandle = CreateWindowEx(dw_ex_style, + mWindowClassName, + mWindowTitle, + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, + window_rect.left, // x pos + window_rect.top, // y pos + window_rect.right - window_rect.left, // width + window_rect.bottom - window_rect.top, // height + NULL, + NULL, + mhInstance, + NULL); + + if (!(mhDC = GetDC(mWindowHandle))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!SetPixelFormat(mhDC, pixel_format, &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) + { + switch (swap_method) + { + case WGL_SWAP_EXCHANGE_ARB: + mSwapMethod = SWAP_METHOD_EXCHANGE; + LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL; + break; + case WGL_SWAP_COPY_ARB: + mSwapMethod = SWAP_METHOD_COPY; + LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL; + break; + case WGL_SWAP_UNDEFINED_ARB: + mSwapMethod = SWAP_METHOD_UNDEFINED; + LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL; + break; + default: + mSwapMethod = SWAP_METHOD_UNDEFINED; + LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL; + break; + } + } + } + else + { + LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL; + } + + // Verify what pixel format we actually received. + if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), + &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) + << " Alpha Bits " << S32(pfd.cAlphaBits) + << " Depth Bits " << S32(pfd.cDepthBits) + << LL_ENDL; + + // make sure we have 32 bits per pixel + if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32) + { + close(); + OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cAlphaBits < 8) + { + close(); + OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(mhRC = wglCreateContext(mhDC))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!wglMakeCurrent(mhDC, mhRC)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!gGLManager.initGL()) + { + close(); + OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + // Disable vertical sync for swap + if (disable_vsync && wglSwapIntervalEXT) + { + LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL; + wglSwapIntervalEXT(0); + } + else + { + LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL; + } + + SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); + + // register this window as handling drag/drop events from the OS + DragAcceptFiles( mWindowHandle, TRUE ); + + mDragDrop->init( mWindowHandle ); + + //register joystick timer callback + SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer + + // ok to post quit messages now + mPostQuit = TRUE; + + if (auto_show) + { + show(); + glClearColor(0.0f, 0.0f, 0.0f, 0.f); + glClear(GL_COLOR_BUFFER_BIT); + swapBuffers(); + } + + return TRUE; +} + +void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size ) +{ + if( mIsMouseClipping ) + { + RECT client_rect_in_screen_space; + if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) + { + ClipCursor( &client_rect_in_screen_space ); + } + } + + // if the window was already maximized, MoveWindow seems to still set the maximized flag even if + // the window is smaller than maximized. + // So we're going to do a restore first (which is a ShowWindow call) (SL-44655). + + // THIS CAUSES DEV-15484 and DEV-15949 + //ShowWindow(mWindowHandle, SW_RESTORE); + // NOW we can call MoveWindow + MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE); +} + +BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position) +{ + LLCoordScreen screen_pos; + + mMousePositionModified = TRUE; + if (!mWindowHandle) + { + return FALSE; + } + + if (!convertCoords(position, &screen_pos)) + { + return FALSE; + } + + // Inform the application of the new mouse position (needed for per-frame + // hover/picking to function). + LLCoordGL gl_pos; + convertCoords(position, &gl_pos); + mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); + + // DEV-18951 VWR-8524 Camera moves wildly when alt-clicking. + // Because we have preemptively notified the application of the new + // mouse position via handleMouseMove() above, we need to clear out + // any stale mouse move events. RN/JC + MSG msg; + while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) + { } + + return SetCursorPos(screen_pos.mX, screen_pos.mY); +} + +BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position) +{ + POINT cursor_point; + LLCoordScreen screen_pos; + + if (!mWindowHandle || + !GetCursorPos(&cursor_point)) + { + return FALSE; + } + + screen_pos.mX = cursor_point.x; + screen_pos.mY = cursor_point.y; + + return convertCoords(screen_pos, position); +} + +void LLWindowWin32::hideCursor() +{ + while (ShowCursor(FALSE) >= 0) + { + // nothing, wait for cursor to push down + } + mCursorHidden = TRUE; + mHideCursorPermanent = TRUE; +} + +void LLWindowWin32::showCursor() +{ + // makes sure the cursor shows up + while (ShowCursor(TRUE) < 0) + { + // do nothing, wait for cursor to pop out + } + mCursorHidden = FALSE; + mHideCursorPermanent = FALSE; +} + +void LLWindowWin32::showCursorFromMouseMove() +{ + if (!mHideCursorPermanent) + { + showCursor(); + } +} + +void LLWindowWin32::hideCursorUntilMouseMove() +{ + if (!mHideCursorPermanent) + { + hideCursor(); + mHideCursorPermanent = FALSE; + } +} + +BOOL LLWindowWin32::isCursorHidden() +{ + return mCursorHidden; +} + + +HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name) +{ + return (HCURSOR)LoadImage(mhInstance, + name, + IMAGE_CURSOR, + 0, // default width + 0, // default height + LR_DEFAULTCOLOR); +} + + +void LLWindowWin32::initCursors() +{ + mCursor[ UI_CURSOR_ARROW ] = LoadCursor(NULL, IDC_ARROW); + mCursor[ UI_CURSOR_WAIT ] = LoadCursor(NULL, IDC_WAIT); + mCursor[ UI_CURSOR_HAND ] = LoadCursor(NULL, IDC_HAND); + mCursor[ UI_CURSOR_IBEAM ] = LoadCursor(NULL, IDC_IBEAM); + mCursor[ UI_CURSOR_CROSS ] = LoadCursor(NULL, IDC_CROSS); + mCursor[ UI_CURSOR_SIZENWSE ] = LoadCursor(NULL, IDC_SIZENWSE); + mCursor[ UI_CURSOR_SIZENESW ] = LoadCursor(NULL, IDC_SIZENESW); + mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); + mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); + mCursor[ UI_CURSOR_NO ] = LoadCursor(NULL, IDC_NO); + mCursor[ UI_CURSOR_WORKING ] = LoadCursor(NULL, IDC_APPSTARTING); + + HMODULE module = GetModuleHandle(NULL); + mCursor[ UI_CURSOR_TOOLGRAB ] = LoadCursor(module, TEXT("TOOLGRAB")); + mCursor[ UI_CURSOR_TOOLLAND ] = LoadCursor(module, TEXT("TOOLLAND")); + mCursor[ UI_CURSOR_TOOLFOCUS ] = LoadCursor(module, TEXT("TOOLFOCUS")); + mCursor[ UI_CURSOR_TOOLCREATE ] = LoadCursor(module, TEXT("TOOLCREATE")); + mCursor[ UI_CURSOR_ARROWDRAG ] = LoadCursor(module, TEXT("ARROWDRAG")); + mCursor[ UI_CURSOR_ARROWCOPY ] = LoadCursor(module, TEXT("ARROWCOPY")); + mCursor[ UI_CURSOR_ARROWDRAGMULTI ] = LoadCursor(module, TEXT("ARROWDRAGMULTI")); + mCursor[ UI_CURSOR_ARROWCOPYMULTI ] = LoadCursor(module, TEXT("ARROWCOPYMULTI")); + mCursor[ UI_CURSOR_NOLOCKED ] = LoadCursor(module, TEXT("NOLOCKED")); + mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED")); + mCursor[ UI_CURSOR_GRABLOCKED ] = LoadCursor(module, TEXT("GRABLOCKED")); + mCursor[ UI_CURSOR_TOOLTRANSLATE ] = LoadCursor(module, TEXT("TOOLTRANSLATE")); + mCursor[ UI_CURSOR_TOOLROTATE ] = LoadCursor(module, TEXT("TOOLROTATE")); + mCursor[ UI_CURSOR_TOOLSCALE ] = LoadCursor(module, TEXT("TOOLSCALE")); + mCursor[ UI_CURSOR_TOOLCAMERA ] = LoadCursor(module, TEXT("TOOLCAMERA")); + mCursor[ UI_CURSOR_TOOLPAN ] = LoadCursor(module, TEXT("TOOLPAN")); + mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN")); + mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3")); + mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); + + // Color cursors + mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); + mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); + mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); + + // Note: custom cursors that are not found make LoadCursor() return NULL. + for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) + { + if( !mCursor[i] ) + { + mCursor[i] = LoadCursor(NULL, IDC_ARROW); + } + } +} + + + +void LLWindowWin32::setCursor(ECursorType cursor) +{ + if (cursor == UI_CURSOR_ARROW + && mBusyCount > 0) + { + cursor = UI_CURSOR_WORKING; + } + + if( mCurrentCursor != cursor ) + { + mCurrentCursor = cursor; + SetCursor( mCursor[cursor] ); + } +} + +ECursorType LLWindowWin32::getCursor() const +{ + return mCurrentCursor; +} + +void LLWindowWin32::captureMouse() +{ + SetCapture(mWindowHandle); +} + +void LLWindowWin32::releaseMouse() +{ + // *NOTE:Mani ReleaseCapture will spawn new windows messages... + // which will in turn call our MainWindowProc. It therefore requires + // pausing *and more importantly resumption* of the mainlooptimeout... + // just like DispatchMessage below. + mCallbacks->handlePauseWatchdog(this); + ReleaseCapture(); + mCallbacks->handleResumeWatchdog(this); +} + + +void LLWindowWin32::delayInputProcessing() +{ + mInputProcessingPaused = TRUE; +} + +void LLWindowWin32::gatherInput() +{ + MSG msg; + int msg_count = 0; + + LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); + + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) + { + mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); + TranslateMessage(&msg); + + // turn watchdog off in here to not fail if windows is doing something wacky + mCallbacks->handlePauseWatchdog(this); + DispatchMessage(&msg); + mCallbacks->handleResumeWatchdog(this); + msg_count++; + + if ( mInputProcessingPaused ) + { + break; + } + /* Attempted workaround for problem where typing fast and hitting + return would result in only part of the text being sent. JC + + BOOL key_posted = TranslateMessage(&msg); + DispatchMessage(&msg); + msg_count++; + + // If a key was translated, a WM_CHAR might have been posted to the end + // of the event queue. We need it immediately. + if (key_posted && msg.message == WM_KEYDOWN) + { + if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + msg_count++; + } + } + */ + mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput"); + // For async host by name support. Really hacky. + if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) + { + gAsyncMsgCallback(msg); + } + } + + mInputProcessingPaused = FALSE; + + // clear this once we've processed all mouse messages that might have occurred after + // we slammed the mouse position + mMousePositionModified = FALSE; +} + +static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard"); +static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse"); + +LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param) +{ + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA); + + + if (NULL != window_imp) + { + window_imp->mCallbacks->handleResumeWatchdog(window_imp); + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc"); + // Has user provided their own window callback? + if (NULL != window_imp->mWndProc) + { + if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param)) + { + // user has handled window message + return 0; + } + } + + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc"); + + // Juggle to make sure we can get negative positions for when + // mouse is outside window. + LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)); + + // This doesn't work, as LOWORD returns unsigned short. + //LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param)); + LLCoordGL gl_coord; + + // pass along extended flag in mask + MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0; + BOOL eat_keystroke = TRUE; + + switch(u_msg) + { + RECT update_rect; + S32 update_width; + S32 update_height; + + case WM_TIMER: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER"); + window_imp->mCallbacks->handleTimerEvent(window_imp); + break; + + case WM_DEVICECHANGE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE"); + if (gDebugWindowProc) + { + llinfos << " WM_DEVICECHANGE: wParam=" << w_param + << "; lParam=" << l_param << llendl; + } + if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL) + { + if (window_imp->mCallbacks->handleDeviceChange(window_imp)) + { + return 0; + } + } + break; + + case WM_PAINT: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT"); + GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE); + update_width = update_rect.right - update_rect.left + 1; + update_height = update_rect.bottom - update_rect.top + 1; + window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top, + update_width, update_height); + break; + case WM_PARENTNOTIFY: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY"); + u_msg = u_msg; + break; + + case WM_SETCURSOR: + // This message is sent whenever the cursor is moved in a window. + // You need to set the appropriate cursor appearance. + + // Only take control of cursor over client region of window + // This allows Windows(tm) to handle resize cursors, etc. + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR"); + if (LOWORD(l_param) == HTCLIENT) + { + SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] ); + return 0; + } + break; + + case WM_ENTERMENULOOP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP"); + window_imp->mCallbacks->handleWindowBlock(window_imp); + break; + + case WM_EXITMENULOOP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP"); + window_imp->mCallbacks->handleWindowUnblock(window_imp); + break; + + case WM_ACTIVATEAPP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP"); + { + // This message should be sent whenever the app gains or loses focus. + BOOL activating = (BOOL) w_param; + BOOL minimized = window_imp->getMinimized(); + + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC ActivateApp " + << " activating " << S32(activating) + << " minimized " << S32(minimized) + << " fullscreen " << S32(window_imp->mFullscreen) + << LL_ENDL; + } + + if (window_imp->mFullscreen) + { + // When we run fullscreen, restoring or minimizing the app needs + // to switch the screen resolution + if (activating) + { + window_imp->setFullscreenResolution(); + window_imp->restore(); + } + else + { + window_imp->minimize(); + window_imp->resetDisplayResolution(); + } + } + + window_imp->mCallbacks->handleActivateApp(window_imp, activating); + + break; + } + + case WM_ACTIVATE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE"); + { + // Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE + BOOL activating = (LOWORD(w_param) != WA_INACTIVE); + + BOOL minimized = BOOL(HIWORD(w_param)); + + if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // JC - I'm not sure why, but if we don't report that we handled the + // WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work + // properly when we run fullscreen. + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC Activate " + << " activating " << S32(activating) + << " minimized " << S32(minimized) + << LL_ENDL; + } + + // Don't handle this. + break; + } + + case WM_QUERYOPEN: + // TODO: use this to return a nice icon + break; + + case WM_SYSCOMMAND: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND"); + switch(w_param) + { + case SC_KEYMENU: + // Disallow the ALT key from triggering the default system menu. + return 0; + + case SC_SCREENSAVE: + case SC_MONITORPOWER: + // eat screen save messages and prevent them! + return 0; + } + break; + + case WM_CLOSE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE"); + // Will the app allow the window to close? + if (window_imp->mCallbacks->handleCloseRequest(window_imp)) + { + // Get the app to initiate cleanup. + window_imp->mCallbacks->handleQuit(window_imp); + // The app is responsible for calling destroyWindow when done with GL + } + return 0; + + case WM_DESTROY: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY"); + if (window_imp->shouldPostQuit()) + { + PostQuitMessage(0); // Posts WM_QUIT with an exit code of 0 + } + return 0; + + case WM_COMMAND: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND"); + if (!HIWORD(w_param)) // this message is from a menu + { + window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param)); + } + break; + + case WM_SYSKEYDOWN: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN"); + // allow system keys, such as ALT-F4 to be processed by Windows + eat_keystroke = FALSE; + case WM_KEYDOWN: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); + { + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN " + << " key " << S32(w_param) + << LL_ENDL; + } + if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke) + { + return 0; + } + // pass on to windows if we didn't handle it + break; + } + case WM_SYSKEYUP: + eat_keystroke = FALSE; + case WM_KEYUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); + LLFastTimer t2(FTM_KEYHANDLER); + + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " + << " key " << S32(w_param) + << LL_ENDL; + } + if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke) + { + return 0; + } + + // pass on to windows + break; + } + case WM_IME_SETCONTEXT: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_SETCONTEXT" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW; + // Invoke DefWinProc with the modified LPARAM. + } + break; + + case WM_IME_STARTCOMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_STARTCOMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->handleStartCompositionMessage(); + return 0; + } + break; + + case WM_IME_ENDCOMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_ENDCOMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + return 0; + } + break; + + case WM_IME_COMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_COMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->handleCompositionMessage(l_param); + return 0; + } + break; + + case WM_IME_REQUEST: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_REQUEST" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + LRESULT result = 0; + if (window_imp->handleImeRequests(w_param, l_param, &result)) + { + return result; + } + } + break; + + case WM_CHAR: + // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need + // to figure out how that works. - Doug + // + // ... Well, I don't think so. + // How it works is explained in Win32 API document, but WM_UNICHAR didn't work + // as specified at least on Windows XP SP1 Japanese version. I have never used + // it since then, and I'm not sure whether it has been fixed now, but I don't think + // it is worth trying. The good old WM_CHAR works just fine even for supplementary + // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's + // by ourselves. It is not that tough. -- Alissa Sabre @ SL + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_CHAR " + << " key " << S32(w_param) + << LL_ENDL; + } + // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, + // we *did* processed the event, so I believe we should not pass it to DefWindowProc... + window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE)); + return 0; + + case WM_LBUTTONDOWN: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_LBUTTONDBLCLK: + //RN: ignore right button double clicks for now + //case WM_RBUTTONDBLCLK: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK"); + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) + { + return 0; + } + } + break; + + case WM_LBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + //if (gDebugClicks) + //{ + // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL; + //} + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_RBUTTONDBLCLK: + case WM_RBUTTONDOWN: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in the llviewerapp, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_RBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MBUTTONDOWN: +// case WM_MBUTTONDBLCLK: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in tllviewerhe app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + // Because we move the cursor position in tllviewerhe app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MOUSEWHEEL: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL"); + static short z_delta = 0; + + z_delta += HIWORD(w_param); + // cout << "z_delta " << z_delta << endl; + + // current mouse wheels report changes in increments of zDelta (+120, -120) + // Future, higher resolution mouse wheels may report smaller deltas. + // So we sum the deltas and only act when we've exceeded WHEEL_DELTA + // + // If the user rapidly spins the wheel, we can get messages with + // large deltas, like 480 or so. Thus we need to scroll more quickly. + if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta) + { + window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA); + z_delta = 0; + } + return 0; + } + /* + // TODO: add this after resolving _WIN32_WINNT issue + case WM_MOUSELEAVE: + { + window_imp->mCallbacks->handleMouseLeave(window_imp); + + // TRACKMOUSEEVENT track_mouse_event; + // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); + // track_mouse_event.dwFlags = TME_LEAVE; + // track_mouse_event.hwndTrack = h_wnd; + // track_mouse_event.dwHoverTime = HOVER_DEFAULT; + // TrackMouseEvent( &track_mouse_event ); + return 0; + } + */ + // Handle mouse movement within the window + case WM_MOUSEMOVE: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE"); + window_imp->convertCoords(window_coord, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + return 0; + } + + case WM_SIZE: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE"); + S32 width = S32( LOWORD(l_param) ); + S32 height = S32( HIWORD(l_param) ); + + if (gDebugWindowProc) + { + BOOL maximized = ( w_param == SIZE_MAXIMIZED ); + BOOL restored = ( w_param == SIZE_RESTORED ); + BOOL minimized = ( w_param == SIZE_MINIMIZED ); + + LL_INFOS("Window") << "WINDOWPROC Size " + << width << "x" << height + << " max " << S32(maximized) + << " min " << S32(minimized) + << " rest " << S32(restored) + << LL_ENDL; + } + + // There's an odd behavior with WM_SIZE that I would call a bug. If + // the window is maximized, and you call MoveWindow() with a size smaller + // than a maximized window, it ends up sending WM_SIZE with w_param set + // to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work. + // (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see + // LLWindowWin32::moveWindow in this file). + + // If we are now restored, but we weren't before, this + // means that the window was un-minimized. + if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED) + { + window_imp->mCallbacks->handleActivate(window_imp, TRUE); + } + + // handle case of window being maximized from fully minimized state + if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED) + { + window_imp->mCallbacks->handleActivate(window_imp, TRUE); + } + + // Also handle the minimization case + if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED) + { + window_imp->mCallbacks->handleActivate(window_imp, FALSE); + } + + // Actually resize all of our views + if (w_param != SIZE_MINIMIZED) + { + // Ignore updates for minimizing and minimized "windows" + window_imp->mCallbacks->handleResize( window_imp, + LOWORD(l_param), + HIWORD(l_param) ); + } + + window_imp->mLastSizeWParam = w_param; + + return 0; + } + + case WM_SETFOCUS: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL; + } + window_imp->mCallbacks->handleFocus(window_imp); + return 0; + + case WM_KILLFOCUS: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL; + } + window_imp->mCallbacks->handleFocusLost(window_imp); + return 0; + + case WM_COPYDATA: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); + // received a URL + PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; + window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); + }; + return 0; + + case WM_DROPFILES: + { + // HDROP contains what we need + HDROP hdrop = (HDROP)w_param; + + // get location in window space where drop occured and convert to OpenGL coordinate space + POINT pt; + DragQueryPoint( hdrop, &pt ); + LLCoordGL gl_coord; + LLCoordWindow cursor_coord_window( pt.x, pt.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + + // get payload (eventually, this needs to more advanced and grab size of payload dynamically + static char file_name[ 1024 ]; DragQueryFileA( hdrop, 0, file_name, 1024 ); - void* url = (void*)( file_name ); + void* url = (void*)( file_name ); // if it's a .URL or .lnk ("shortcut") file if ( std::string( file_name ).find( ".lnk" ) != std::string::npos || @@ -2390,1316 +2400,1329 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ }; MASK mask = gKeyboard->currentMask(TRUE); - if (window_imp->mCallbacks->handleDrop(window_imp, gl_coord, mask, url ) ) - { - return 0; - } - } - break; - } - - window_imp->mCallbacks->handlePauseWatchdog(window_imp); - } - - - // pass unhandled messages down to Windows - return DefWindowProc(h_wnd, u_msg, w_param, l_param); -} - -BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to) -{ - S32 client_height; - RECT client_rect; - LLCoordWindow window_position; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == to) - { - return FALSE; - } - - to->mX = from.mX; - client_height = client_rect.bottom - client_rect.top; - to->mY = client_height - from.mY - 1; - - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to) -{ - S32 client_height; - RECT client_rect; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == to) - { - return FALSE; - } - - to->mX = from.mX; - client_height = client_rect.bottom - client_rect.top; - to->mY = client_height - from.mY - 1; - - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to) -{ - POINT mouse_point; - - mouse_point.x = from.mX; - mouse_point.y = from.mY; - BOOL result = ScreenToClient(mWindowHandle, &mouse_point); - - if (result) - { - to->mX = mouse_point.x; - to->mY = mouse_point.y; - } - - return result; -} - -BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to) -{ - POINT mouse_point; - - mouse_point.x = from.mX; - mouse_point.y = from.mY; - BOOL result = ClientToScreen(mWindowHandle, &mouse_point); - - if (result) - { - to->mX = mouse_point.x; - to->mY = mouse_point.y; - } - - return result; -} - -BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to) -{ - LLCoordWindow window_coord; - - if (!mWindowHandle || (NULL == to)) - { - return FALSE; - } - - convertCoords(from, &window_coord); - convertCoords(window_coord, to); - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to) -{ - LLCoordWindow window_coord; - - if (!mWindowHandle || (NULL == to)) - { - return FALSE; - } - - convertCoords(from, &window_coord); - convertCoords(window_coord, to); - return TRUE; -} - - -BOOL LLWindowWin32::isClipboardTextAvailable() -{ - return IsClipboardFormatAvailable(CF_UNICODETEXT); -} - - -BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst) -{ - BOOL success = FALSE; - - if (IsClipboardFormatAvailable(CF_UNICODETEXT)) - { - if (OpenClipboard(mWindowHandle)) - { - HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT); - if (h_data) - { - WCHAR *utf16str = (WCHAR*) GlobalLock(h_data); - if (utf16str) - { - dst = utf16str_to_wstring(utf16str); - LLWStringUtil::removeCRLF(dst); - GlobalUnlock(h_data); - success = TRUE; - } - } - CloseClipboard(); - } - } - - return success; -} - - -BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr) -{ - BOOL success = FALSE; - - if (OpenClipboard(mWindowHandle)) - { - EmptyClipboard(); - - // Provide a copy of the data in Unicode format. - LLWString sanitized_string(wstr); - LLWStringUtil::addCRLF(sanitized_string); - llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); - const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); - - // Memory is allocated and then ownership of it is transfered to the system. - HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); - if (hglobal_copy_utf16) - { - WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16); - if (copy_utf16) - { - memcpy(copy_utf16, out_utf16.c_str(), size_utf16); /* Flawfinder: ignore */ - GlobalUnlock(hglobal_copy_utf16); - - if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16)) - { - success = TRUE; - } - } - } - - CloseClipboard(); - } - - return success; -} - -// Constrains the mouse to the window. -void LLWindowWin32::setMouseClipping( BOOL b ) -{ - if( b != mIsMouseClipping ) - { - BOOL success = FALSE; - - if( b ) - { - GetClipCursor( &mOldMouseClip ); - - RECT client_rect_in_screen_space; - if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) - { - success = ClipCursor( &client_rect_in_screen_space ); - } - } - else - { - // Must restore the old mouse clip, which may be set by another window. - success = ClipCursor( &mOldMouseClip ); - SetRect( &mOldMouseClip, 0, 0, 0, 0 ); - } - - if( success ) - { - mIsMouseClipping = b; - } - } -} - -BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp ) -{ - BOOL success = FALSE; - - RECT client_rect; - if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) ) - { - POINT top_left; - top_left.x = client_rect.left; - top_left.y = client_rect.top; - ClientToScreen(mWindowHandle, &top_left); - - POINT bottom_right; - bottom_right.x = client_rect.right; - bottom_right.y = client_rect.bottom; - ClientToScreen(mWindowHandle, &bottom_right); - - SetRect( rectp, - top_left.x, - top_left.y, - bottom_right.x, - bottom_right.y ); - - success = TRUE; - } - - return success; -} - -void LLWindowWin32::flashIcon(F32 seconds) -{ - FLASHWINFO flash_info; - - flash_info.cbSize = sizeof(FLASHWINFO); - flash_info.hwnd = mWindowHandle; - flash_info.dwFlags = FLASHW_TRAY; - flash_info.uCount = UINT(seconds / ICON_FLASH_TIME); - flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds - FlashWindowEx(&flash_info); -} - -F32 LLWindowWin32::getGamma() -{ - return mCurrentGamma; -} - -BOOL LLWindowWin32::restoreGamma() -{ - return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); -} - -BOOL LLWindowWin32::setGamma(const F32 gamma) -{ - mCurrentGamma = gamma; - - LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; - - for ( int i = 0; i < 256; ++i ) - { - int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f ); - - int value = mult * i; - - if ( value > 0xffff ) - value = 0xffff; - - mCurrentGammaRamp [ 0 * 256 + i ] = - mCurrentGammaRamp [ 1 * 256 + i ] = - mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value; - }; - - return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp ); -} - -void LLWindowWin32::setFSAASamples(const U32 fsaa_samples) -{ - mFSAASamples = fsaa_samples; -} - -U32 LLWindowWin32::getFSAASamples() -{ - return mFSAASamples; -} - -LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions) -{ - if (!mSupportedResolutions) - { - mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS]; - DEVMODE dev_mode; - - mNumSupportedResolutions = 0; - for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL && - dev_mode.dmPelsWidth >= 800 && - dev_mode.dmPelsHeight >= 600) - { - BOOL resolution_exists = FALSE; - for(S32 i = 0; i < mNumSupportedResolutions; i++) - { - if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth && - mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight) - { - resolution_exists = TRUE; - } - } - if (!resolution_exists) - { - mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth; - mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight; - mNumSupportedResolutions++; - } - } - } - } - - num_resolutions = mNumSupportedResolutions; - return mSupportedResolutions; -} - - -F32 LLWindowWin32::getNativeAspectRatio() -{ - if (mOverrideAspectRatio > 0.f) - { - return mOverrideAspectRatio; - } - else if (mNativeAspectRatio > 0.f) - { - // we grabbed this value at startup, based on the user's desktop settings - return mNativeAspectRatio; - } - // RN: this hack presumes that the largest supported resolution is monitor-limited - // and that pixels in that mode are square, therefore defining the native aspect ratio - // of the monitor...this seems to work to a close approximation for most CRTs/LCDs - S32 num_resolutions; - LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions); - - return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight); -} - -F32 LLWindowWin32::getPixelAspectRatio() -{ - F32 pixel_aspect = 1.f; - if (getFullscreen()) - { - LLCoordScreen screen_size; - getSize(&screen_size); - pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX; - } - - return pixel_aspect; -} - -// Change display resolution. Returns true if successful. -// protected -BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh) -{ - DEVMODE dev_mode; - dev_mode.dmSize = sizeof(dev_mode); - BOOL success = FALSE; - - // Don't change anything if we don't have to - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == bits && - dev_mode.dmDisplayFrequency == refresh ) - { - // ...display mode identical, do nothing - return TRUE; - } - } - - memset(&dev_mode, 0, sizeof(dev_mode)); - dev_mode.dmSize = sizeof(dev_mode); - dev_mode.dmPelsWidth = width; - dev_mode.dmPelsHeight = height; - dev_mode.dmBitsPerPel = bits; - dev_mode.dmDisplayFrequency = refresh; - dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY; - - // CDS_FULLSCREEN indicates that this is a temporary change to the device mode. - LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN); - - success = (DISP_CHANGE_SUCCESSFUL == cds_result); - - if (!success) - { - LL_WARNS("Window") << "setDisplayResolution failed, " - << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL; - } - - return success; -} - -// protected -BOOL LLWindowWin32::setFullscreenResolution() -{ - if (mFullscreen) - { - return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh); - } - else - { - return FALSE; - } -} - -// protected -BOOL LLWindowWin32::resetDisplayResolution() -{ - LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL; - - LONG cds_result = ChangeDisplaySettings(NULL, 0); - - BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result); - - if (!success) - { - LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL; - } - - LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL; - - return success; -} - -void LLWindowWin32::swapBuffers() -{ - SwapBuffers(mhDC); -} - - -// -// LLSplashScreenImp -// -LLSplashScreenWin32::LLSplashScreenWin32() -: mWindow(NULL) -{ -} - -LLSplashScreenWin32::~LLSplashScreenWin32() -{ -} - -void LLSplashScreenWin32::showImpl() -{ - // This appears to work. ??? - HINSTANCE hinst = GetModuleHandle(NULL); - - mWindow = CreateDialog(hinst, - TEXT("SPLASHSCREEN"), - NULL, // no parent - (DLGPROC) LLSplashScreenWin32::windowProc); - ShowWindow(mWindow, SW_SHOW); -} - - -void LLSplashScreenWin32::updateImpl(const std::string& mesg) -{ - if (!mWindow) return; - - WCHAR w_mesg[1024]; - mbstowcs(w_mesg, mesg.c_str(), 1024); - - SendDlgItemMessage(mWindow, - 666, // HACK: text id - WM_SETTEXT, - FALSE, - (LPARAM)w_mesg); -} - - -void LLSplashScreenWin32::hideImpl() -{ - if (mWindow) - { - DestroyWindow(mWindow); - mWindow = NULL; - } -} - - -// static -LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg, - WPARAM w_param, LPARAM l_param) -{ - // Just give it to windows - return DefWindowProc(h_wnd, u_msg, w_param, l_param); -} - -// -// Helper Funcs -// - -S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type) -{ - UINT uType; - - switch(type) - { - case OSMB_OK: - uType = MB_OK; - break; - case OSMB_OKCANCEL: - uType = MB_OKCANCEL; - break; - case OSMB_YESNO: - uType = MB_YESNO; - break; - default: - uType = MB_OK; - break; - } - - // HACK! Doesn't properly handle wide strings! - int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType); - S32 retval; - - switch(retval_win) - { - case IDYES: - retval = OSBTN_YES; - break; - case IDNO: - retval = OSBTN_NO; - break; - case IDOK: - retval = OSBTN_OK; - break; - case IDCANCEL: - retval = OSBTN_CANCEL; - break; - default: - retval = OSBTN_CANCEL; - break; - } - - return retval; -} - - -void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) -{ - bool found = false; - S32 i; - for (i = 0; i < gURLProtocolWhitelistCount; i++) - { - if (escaped_url.find(gURLProtocolWhitelist[i]) == 0) - { - found = true; - break; - } - } - - if (!found) - { - LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL; - return; - } - - LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL; - - // replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work - // reliablly on Vista. - - // this is madness.. no, this is.. - LLWString url_wstring = utf8str_to_wstring( escaped_url ); - llutf16string url_utf16 = wstring_to_utf16str( url_wstring ); - - // let the OS decide what to use to open the URL - SHELLEXECUTEINFO sei = { sizeof( sei ) }; - sei.fMask = SEE_MASK_FLAG_DDEWAIT; - sei.nShow = SW_SHOWNORMAL; - sei.lpVerb = L"open"; - sei.lpFile = url_utf16.c_str(); - ShellExecuteEx( &sei ); - - //// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES - //// DELETE THIS ONCE THE MERGES ARE DONE - - // Figure out the user's default web browser - // HKEY_CLASSES_ROOT\http\shell\open\command - /* - std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command"; - WCHAR reg_path_wstr[256]; - mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) ); - - HKEY key; - WCHAR browser_open_wstr[1024]; - DWORD buffer_length = 1024; - RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key); - RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length); - RegCloseKey(key); - - // Convert to STL string - LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr); - - if (browser_open_wstring.length() < 2) - { - LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL; - return; - } - - // Extract the process that's supposed to be launched - LLWString browser_executable; - if (browser_open_wstring[0] == '"') - { - // executable is quoted, find the matching quote - size_t quote_pos = browser_open_wstring.find('"', 1); - // copy out the string including both quotes - browser_executable = browser_open_wstring.substr(0, quote_pos+1); - } - else - { - // executable not quoted, find a space - size_t space_pos = browser_open_wstring.find(' ', 1); - browser_executable = browser_open_wstring.substr(0, space_pos); - } - - LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL; - LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL; - - // Convert URL to wide string for Windows API - // Assume URL is UTF8, as can come from scripts - LLWString url_wstring = utf8str_to_wstring(escaped_url); - llutf16string url_utf16 = wstring_to_utf16str(url_wstring); - - // Convert executable and path to wide string for Windows API - llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable); - - // ShellExecute returns HINSTANCE for backwards compatiblity. - // MS docs say to cast to int and compare to 32. - HWND our_window = NULL; - LPCWSTR directory_wstr = NULL; - int retval = (int) ShellExecute(our_window, // Flawfinder: ignore - L"open", - browser_exec_utf16.c_str(), - url_utf16.c_str(), - directory_wstr, - SW_SHOWNORMAL); - if (retval > 32) - { - LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL; - } - else - { - LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL; - } - */ -} - - -BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b ) -{ - BOOL retval = FALSE; - - static CHOOSECOLOR cc; - static COLORREF crCustColors[16]; - cc.lStructSize = sizeof(CHOOSECOLOR); - cc.hwndOwner = mWindowHandle; - cc.hInstance = NULL; - cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f)); - //cc.rgbResult = RGB (0x80,0x80,0x80); - cc.lpCustColors = crCustColors; - cc.Flags = CC_RGBINIT | CC_FULLOPEN; - cc.lCustData = 0; - cc.lpfnHook = NULL; - cc.lpTemplateName = NULL; - - // This call is modal, so pause agent - //send_agent_pause(); // this is in newview and we don't want to set up a dependency - { - retval = ChooseColor(&cc); - } - //send_agent_resume(); // this is in newview and we don't want to set up a dependency - - *b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f; - - *g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f; - - *r = ((F32)(cc.rgbResult & 0xff)) / 255.f; - - return (retval); -} - -void *LLWindowWin32::getPlatformWindow() -{ - return (void*)mWindowHandle; -} - -void LLWindowWin32::bringToFront() -{ - BringWindowToTop(mWindowHandle); -} - -// set (OS) window focus back to the client -void LLWindowWin32::focusClient() -{ - SetFocus ( mWindowHandle ); -} - -void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) -{ - if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable()) - { - return; - } - - if (preeditor != mPreeditor && !b) - { - // This condition may occur with a call to - // setEnabled(BOOL) from LLTextEditor or LLLineEditor - // when the control is not focused. - // We need to silently ignore the case so that - // the language input status of the focused control - // is not disturbed. - return; - } - - // Take care of old and new preeditors. - if (preeditor != mPreeditor || !b) - { - if (sLanguageTextInputAllowed) - { - interruptLanguageTextInput(); - } - mPreeditor = (b ? preeditor : NULL); - } - - sLanguageTextInputAllowed = b; - - if ( sLanguageTextInputAllowed ) - { - // Allowing: Restore the previous IME status, so that the user has a feeling that the previous - // text input continues naturally. Be careful, however, the IME status is meaningful only during the user keeps - // using same Input Locale (aka Keyboard Layout). - if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::setOpenStatus(himc, TRUE); - LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode); - LLWinImm::releaseContext(mWindowHandle, himc); - } - } - else - { - // Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly. - // However, do it after saving the current IME status. We need to restore the status when - // allowing language text input again. - sWinInputLocale = GetKeyboardLayout(0); - sWinIMEOpened = LLWinImm::isIME(sWinInputLocale); - if (sWinIMEOpened) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - sWinIMEOpened = LLWinImm::getOpenStatus(himc); - if (sWinIMEOpened) - { - LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode); - - // We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's - // keyboard hooking, because Some IME reacts only on the former and some other on the latter... - LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode); - LLWinImm::setOpenStatus(himc, FALSE); - } - LLWinImm::releaseContext(mWindowHandle, himc); - } - } -} - -void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, - CANDIDATEFORM *form) -{ - LLCoordWindow caret_coord, top_left, bottom_right; - convertCoords(caret, &caret_coord); - convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); - convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); - - memset(form, 0, sizeof(CANDIDATEFORM)); - form->dwStyle = CFS_EXCLUDE; - form->ptCurrentPos.x = caret_coord.mX; - form->ptCurrentPos.y = caret_coord.mY; - form->rcArea.left = top_left.mX; - form->rcArea.top = top_left.mY; - form->rcArea.right = bottom_right.mX; - form->rcArea.bottom = bottom_right.mY; -} - - -// Put the IME window at the right place (near current text input). Point coordinates should be the top of the current text line. -void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position ) -{ - if (sLanguageTextInputAllowed && LLWinImm::isAvailable()) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - - LLCoordWindow win_pos; - convertCoords( position, &win_pos ); - - if ( win_pos.mX >= 0 && win_pos.mY >= 0 && - (win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) ) - { - COMPOSITIONFORM ime_form; - memset( &ime_form, 0, sizeof(ime_form) ); - ime_form.dwStyle = CFS_POINT; - ime_form.ptCurrentPos.x = win_pos.mX; - ime_form.ptCurrentPos.y = win_pos.mY; - - LLWinImm::setCompositionWindow( himc, &ime_form ); - - sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY ); - } - - LLWinImm::releaseContext(mWindowHandle, himc); - } -} - - -void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control, - IMECHARPOSITION *char_position) -{ - LLCoordScreen caret_coord, top_left, bottom_right; - convertCoords(caret, &caret_coord); - convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); - convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); - - char_position->pt.x = caret_coord.mX; - char_position->pt.y = top_left.mY; // Windows wants the coordinate of upper left corner of a character... - char_position->cLineHeight = bottom_right.mY - top_left.mY; - char_position->rcDocument.left = top_left.mX; - char_position->rcDocument.top = top_left.mY; - char_position->rcDocument.right = bottom_right.mX; - char_position->rcDocument.bottom = bottom_right.mY; -} - -void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont) -{ - // Our font is a list of FreeType recognized font files that may - // not have a corresponding ones in Windows' fonts. Hence, we - // can't simply tell Windows which font we are using. We will - // notify a _standard_ font for a current input locale instead. - // We use a hard-coded knowledge about the Windows' standard - // configuration to do so... - - memset(logfont, 0, sizeof(LOGFONT)); - - const WORD lang_id = LOWORD(GetKeyboardLayout(0)); - switch (PRIMARYLANGID(lang_id)) - { - case LANG_CHINESE: - // We need to identify one of two Chinese fonts. - switch (SUBLANGID(lang_id)) - { - case SUBLANG_CHINESE_SIMPLIFIED: - case SUBLANG_CHINESE_SINGAPORE: - logfont->lfCharSet = GB2312_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("SimHei")); - break; - case SUBLANG_CHINESE_TRADITIONAL: - case SUBLANG_CHINESE_HONGKONG: - case SUBLANG_CHINESE_MACAU: - default: - logfont->lfCharSet = CHINESEBIG5_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("MingLiU")); - break; - } - break; - case LANG_JAPANESE: - logfont->lfCharSet = SHIFTJIS_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("MS Gothic")); - break; - case LANG_KOREAN: - logfont->lfCharSet = HANGUL_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("Gulim")); - break; - default: - logfont->lfCharSet = ANSI_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("Tahoma")); - break; - } - - logfont->lfHeight = mPreeditor->getPreeditFontSize(); - logfont->lfWeight = FW_NORMAL; -} - -U32 LLWindowWin32::fillReconvertString(const LLWString &text, - S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string) -{ - const llutf16string text_utf16 = wstring_to_utf16str(text); - const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR); - if (reconvert_string && reconvert_string->dwSize >= required_size) - { - const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus); - const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length); - - reconvert_string->dwVersion = 0; - reconvert_string->dwStrLen = text_utf16.length(); - reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING); - reconvert_string->dwCompStrLen = focus_utf16_length; - reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR); - reconvert_string->dwTargetStrLen = 0; - reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR); - - const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING)); - memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR)); - } - return required_size; -} - -void LLWindowWin32::updateLanguageTextInputArea() -{ - if (!mPreeditor || !LLWinImm::isAvailable()) - { - return; - } - - LLCoordGL caret_coord; - LLRect preedit_bounds; - if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL)) - { - mLanguageTextInputPointGL = caret_coord; - mLanguageTextInputAreaGL = preedit_bounds; - - CANDIDATEFORM candidate_form; - fillCandidateForm(caret_coord, preedit_bounds, &candidate_form); - - HIMC himc = LLWinImm::getContext(mWindowHandle); - // Win32 document says there may be up to 4 candidate windows. - // This magic number 4 appears only in the document, and - // there are no constant/macro for the value... - for (int i = 3; i >= 0; --i) - { - candidate_form.dwIndex = i; - LLWinImm::setCandidateWindow(himc, &candidate_form); - } - LLWinImm::releaseContext(mWindowHandle, himc); - } -} - -void LLWindowWin32::interruptLanguageTextInput() -{ - if (mPreeditor) - { - if (LLWinImm::isAvailable()) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0); - LLWinImm::releaseContext(mWindowHandle, himc); - } - - // Win32 document says there will be no composition string - // after NI_COMPOSITIONSTR returns. The following call to - // resetPreedit should be a NOP unless IME goes mad... - mPreeditor->resetPreedit(); - } -} - -void LLWindowWin32::handleStartCompositionMessage() -{ - // Let IME know the font to use in feedback UI. - LOGFONT logfont; - fillCompositionLogfont(&logfont); - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::setCompositionFont(himc, &logfont); - LLWinImm::releaseContext(mWindowHandle, himc); -} - -// Handle WM_IME_COMPOSITION message. - -void LLWindowWin32::handleCompositionMessage(const U32 indexes) -{ - BOOL needs_update = FALSE; - LLWString result_string; - LLWString preedit_string; - S32 preedit_string_utf16_length = 0; - LLPreeditor::segment_lengths_t preedit_segment_lengths; - LLPreeditor::standouts_t preedit_standouts; - - // Step I: Receive details of preedits from IME. - - HIMC himc = LLWinImm::getContext(mWindowHandle); - - if (indexes & GCS_RESULTSTR) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0); - if (size >= 0) - { - const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; - size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size); - if (size > 0) - { - result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); - } - delete[] data; - needs_update = TRUE; - } - } - - if (indexes & GCS_COMPSTR) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0); - if (size >= 0) - { - const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; - size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size); - if (size > 0) - { - preedit_string_utf16_length = size / sizeof(WCHAR); - preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); - } - delete[] data; - needs_update = TRUE; - } - } - - if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0); - if (size > 0) - { - const LPDWORD data = new DWORD[size / sizeof(DWORD)]; - size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size); - if (size >= sizeof(DWORD) * 2 - && data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length) - { - preedit_segment_lengths.resize(size / sizeof(DWORD) - 1); - S32 offset = 0; - for (U32 i = 0; i < preedit_segment_lengths.size(); i++) - { - const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]); - preedit_segment_lengths[i] = length; - offset += length; - } - } - delete[] data; - } - } - - if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0); - if (size > 0) - { - const LPBYTE data = new BYTE[size / sizeof(BYTE)]; - size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size); - if (size == preedit_string_utf16_length) - { - preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); - S32 offset = 0; - for (U32 i = 0; i < preedit_segment_lengths.size(); i++) - { - if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset]) - { - preedit_standouts[i] = TRUE; - } - offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]); - } - } - delete[] data; - } - } - - S32 caret_position = preedit_string.length(); - if (indexes & GCS_CURSORPOS) - { - const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0); - if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length) - { - caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16); - } - } - - if (indexes == 0) - { - // I'm not sure this condition really happens, but - // Windows SDK document says it is an indication - // of "reset everything." - needs_update = TRUE; - } - - LLWinImm::releaseContext(mWindowHandle, himc); - - // Step II: Update the active preeditor. - - if (needs_update) - { - mPreeditor->resetPreedit(); - - if (result_string.length() > 0) - { - for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++) - { - mPreeditor->handleUnicodeCharHere(*i); - } - } - - if (preedit_string.length() == 0) - { - preedit_segment_lengths.clear(); - preedit_standouts.clear(); - } - else - { - if (preedit_segment_lengths.size() == 0) - { - preedit_segment_lengths.assign(1, preedit_string.length()); - } - if (preedit_standouts.size() == 0) - { - preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); - } - } - mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position); - - // Some IME doesn't query char position after WM_IME_COMPOSITION, - // so we need to update them actively. - updateLanguageTextInputArea(); - } -} - -// Given a text and a focus range, find_context finds and returns a -// surrounding context of the focused subtext. A variable pointed -// to by offset receives the offset in llwchars of the beginning of -// the returned context string in the given wtext. - -static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset) -{ - static const S32 CONTEXT_EXCESS = 30; // This value is by experiences. - - const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS); - S32 end = focus + focus_length; - while (end < e && '\n' != wtext[end]) - { - end++; - } - - const S32 s = llmax(0, focus - CONTEXT_EXCESS); - S32 start = focus; - while (start > s && '\n' != wtext[start - 1]) - { - --start; - } - - *offset = start; - return wtext.substr(start, end - start); -} - -// Handle WM_IME_REQUEST message. -// If it handled the message, returns TRUE. Otherwise, FALSE. -// When it handled the message, the value to be returned from -// the Window Procedure is set to *result. - -BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result) -{ - if ( mPreeditor ) - { - switch (request) - { - case IMR_CANDIDATEWINDOW: // http://msdn2.microsoft.com/en-us/library/ms776080.aspx - { - LLCoordGL caret_coord; - LLRect preedit_bounds; - mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL); - - CANDIDATEFORM *const form = (CANDIDATEFORM *)param; - DWORD const dwIndex = form->dwIndex; - fillCandidateForm(caret_coord, preedit_bounds, form); - form->dwIndex = dwIndex; - - *result = 1; - return TRUE; - } - case IMR_QUERYCHARPOSITION: - { - IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param; - - // char_position->dwCharPos counts in number of - // WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the - // number to getPreeditLocation. - - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 preedit, preedit_length; - mPreeditor->getPreeditRange(&preedit, &preedit_length); - LLCoordGL caret_coord; - LLRect preedit_bounds, text_control; - const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos); - - if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control)) - { - LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL; - return FALSE; - } - fillCharPosition(caret_coord, preedit_bounds, text_control, char_position); - - *result = 1; - return TRUE; - } - case IMR_COMPOSITIONFONT: - { - fillCompositionLogfont((LOGFONT *)param); - - *result = 1; - return TRUE; - } - case IMR_RECONVERTSTRING: - { - mPreeditor->resetPreedit(); - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 select, select_length; - mPreeditor->getSelectionRange(&select, &select_length); - - S32 context_offset; - const LLWString context = find_context(wtext, select, select_length, &context_offset); - - RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param; - const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string); - if (reconvert_string) - { - if (select_length == 0) - { - // Let the IME to decide the reconversion range, and - // adjust the reconvert_string structure accordingly. - HIMC himc = LLWinImm::getContext(mWindowHandle); - const BOOL adjusted = LLWinImm::setCompositionString(himc, - SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0); - LLWinImm::releaseContext(mWindowHandle, himc); - if (adjusted) - { - const llutf16string & text_utf16 = wstring_to_utf16str(context); - const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR); - const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen; - select = utf16str_wstring_length(text_utf16, new_preedit_start); - select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select; - select += context_offset; - } - } - mPreeditor->markAsPreedit(select, select_length); - } - - *result = size; - return TRUE; - } - case IMR_CONFIRMRECONVERTSTRING: - { - *result = FALSE; - return TRUE; - } - case IMR_DOCUMENTFEED: - { - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 preedit, preedit_length; - mPreeditor->getPreeditRange(&preedit, &preedit_length); - - S32 context_offset; - LLWString context = find_context(wtext, preedit, preedit_length, &context_offset); - preedit -= context_offset; - if (preedit_length) - { - // IMR_DOCUMENTFEED may be called when we have an active preedit. - // We should pass the context string *excluding* the preedit string. - // Otherwise, some IME are confused. - context.erase(preedit, preedit_length); - } - - RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param; - *result = fillReconvertString(context, preedit, 0, reconvert_string); - return TRUE; - } - default: - return FALSE; - } - } - - return FALSE; -} - -//static -std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList() -{ - // Fonts previously in getFontListSans() have moved to fonts.xml. - return std::vector<std::string>(); -} - - -#endif // LL_WINDOWS + + if ( window_imp->completeDropRequest( gl_coord, mask, (char*)url ) ) + { + return 0; + }; + } + break; + } + + window_imp->mCallbacks->handlePauseWatchdog(window_imp); + } + + + // pass unhandled messages down to Windows + return DefWindowProc(h_wnd, u_msg, w_param, l_param); +} + +BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to) +{ + S32 client_height; + RECT client_rect; + LLCoordWindow window_position; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == to) + { + return FALSE; + } + + to->mX = from.mX; + client_height = client_rect.bottom - client_rect.top; + to->mY = client_height - from.mY - 1; + + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to) +{ + S32 client_height; + RECT client_rect; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == to) + { + return FALSE; + } + + to->mX = from.mX; + client_height = client_rect.bottom - client_rect.top; + to->mY = client_height - from.mY - 1; + + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to) +{ + POINT mouse_point; + + mouse_point.x = from.mX; + mouse_point.y = from.mY; + BOOL result = ScreenToClient(mWindowHandle, &mouse_point); + + if (result) + { + to->mX = mouse_point.x; + to->mY = mouse_point.y; + } + + return result; +} + +BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to) +{ + POINT mouse_point; + + mouse_point.x = from.mX; + mouse_point.y = from.mY; + BOOL result = ClientToScreen(mWindowHandle, &mouse_point); + + if (result) + { + to->mX = mouse_point.x; + to->mY = mouse_point.y; + } + + return result; +} + +BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to) +{ + LLCoordWindow window_coord; + + if (!mWindowHandle || (NULL == to)) + { + return FALSE; + } + + convertCoords(from, &window_coord); + convertCoords(window_coord, to); + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to) +{ + LLCoordWindow window_coord; + + if (!mWindowHandle || (NULL == to)) + { + return FALSE; + } + + convertCoords(from, &window_coord); + convertCoords(window_coord, to); + return TRUE; +} + + +BOOL LLWindowWin32::isClipboardTextAvailable() +{ + return IsClipboardFormatAvailable(CF_UNICODETEXT); +} + + +BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst) +{ + BOOL success = FALSE; + + if (IsClipboardFormatAvailable(CF_UNICODETEXT)) + { + if (OpenClipboard(mWindowHandle)) + { + HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT); + if (h_data) + { + WCHAR *utf16str = (WCHAR*) GlobalLock(h_data); + if (utf16str) + { + dst = utf16str_to_wstring(utf16str); + LLWStringUtil::removeCRLF(dst); + GlobalUnlock(h_data); + success = TRUE; + } + } + CloseClipboard(); + } + } + + return success; +} + + +BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr) +{ + BOOL success = FALSE; + + if (OpenClipboard(mWindowHandle)) + { + EmptyClipboard(); + + // Provide a copy of the data in Unicode format. + LLWString sanitized_string(wstr); + LLWStringUtil::addCRLF(sanitized_string); + llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); + const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); + + // Memory is allocated and then ownership of it is transfered to the system. + HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); + if (hglobal_copy_utf16) + { + WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16); + if (copy_utf16) + { + memcpy(copy_utf16, out_utf16.c_str(), size_utf16); /* Flawfinder: ignore */ + GlobalUnlock(hglobal_copy_utf16); + + if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16)) + { + success = TRUE; + } + } + } + + CloseClipboard(); + } + + return success; +} + +// Constrains the mouse to the window. +void LLWindowWin32::setMouseClipping( BOOL b ) +{ + if( b != mIsMouseClipping ) + { + BOOL success = FALSE; + + if( b ) + { + GetClipCursor( &mOldMouseClip ); + + RECT client_rect_in_screen_space; + if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) + { + success = ClipCursor( &client_rect_in_screen_space ); + } + } + else + { + // Must restore the old mouse clip, which may be set by another window. + success = ClipCursor( &mOldMouseClip ); + SetRect( &mOldMouseClip, 0, 0, 0, 0 ); + } + + if( success ) + { + mIsMouseClipping = b; + } + } +} + +BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp ) +{ + BOOL success = FALSE; + + RECT client_rect; + if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) ) + { + POINT top_left; + top_left.x = client_rect.left; + top_left.y = client_rect.top; + ClientToScreen(mWindowHandle, &top_left); + + POINT bottom_right; + bottom_right.x = client_rect.right; + bottom_right.y = client_rect.bottom; + ClientToScreen(mWindowHandle, &bottom_right); + + SetRect( rectp, + top_left.x, + top_left.y, + bottom_right.x, + bottom_right.y ); + + success = TRUE; + } + + return success; +} + +void LLWindowWin32::flashIcon(F32 seconds) +{ + FLASHWINFO flash_info; + + flash_info.cbSize = sizeof(FLASHWINFO); + flash_info.hwnd = mWindowHandle; + flash_info.dwFlags = FLASHW_TRAY; + flash_info.uCount = UINT(seconds / ICON_FLASH_TIME); + flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds + FlashWindowEx(&flash_info); +} + +F32 LLWindowWin32::getGamma() +{ + return mCurrentGamma; +} + +BOOL LLWindowWin32::restoreGamma() +{ + return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); +} + +BOOL LLWindowWin32::setGamma(const F32 gamma) +{ + mCurrentGamma = gamma; + + LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; + + for ( int i = 0; i < 256; ++i ) + { + int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f ); + + int value = mult * i; + + if ( value > 0xffff ) + value = 0xffff; + + mCurrentGammaRamp [ 0 * 256 + i ] = + mCurrentGammaRamp [ 1 * 256 + i ] = + mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value; + }; + + return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp ); +} + +void LLWindowWin32::setFSAASamples(const U32 fsaa_samples) +{ + mFSAASamples = fsaa_samples; +} + +U32 LLWindowWin32::getFSAASamples() +{ + return mFSAASamples; +} + +LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions) +{ + if (!mSupportedResolutions) + { + mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS]; + DEVMODE dev_mode; + + mNumSupportedResolutions = 0; + for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL && + dev_mode.dmPelsWidth >= 800 && + dev_mode.dmPelsHeight >= 600) + { + BOOL resolution_exists = FALSE; + for(S32 i = 0; i < mNumSupportedResolutions; i++) + { + if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth && + mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight) + { + resolution_exists = TRUE; + } + } + if (!resolution_exists) + { + mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth; + mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight; + mNumSupportedResolutions++; + } + } + } + } + + num_resolutions = mNumSupportedResolutions; + return mSupportedResolutions; +} + + +F32 LLWindowWin32::getNativeAspectRatio() +{ + if (mOverrideAspectRatio > 0.f) + { + return mOverrideAspectRatio; + } + else if (mNativeAspectRatio > 0.f) + { + // we grabbed this value at startup, based on the user's desktop settings + return mNativeAspectRatio; + } + // RN: this hack presumes that the largest supported resolution is monitor-limited + // and that pixels in that mode are square, therefore defining the native aspect ratio + // of the monitor...this seems to work to a close approximation for most CRTs/LCDs + S32 num_resolutions; + LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions); + + return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight); +} + +F32 LLWindowWin32::getPixelAspectRatio() +{ + F32 pixel_aspect = 1.f; + if (getFullscreen()) + { + LLCoordScreen screen_size; + getSize(&screen_size); + pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX; + } + + return pixel_aspect; +} + +// Change display resolution. Returns true if successful. +// protected +BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh) +{ + DEVMODE dev_mode; + dev_mode.dmSize = sizeof(dev_mode); + BOOL success = FALSE; + + // Don't change anything if we don't have to + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == bits && + dev_mode.dmDisplayFrequency == refresh ) + { + // ...display mode identical, do nothing + return TRUE; + } + } + + memset(&dev_mode, 0, sizeof(dev_mode)); + dev_mode.dmSize = sizeof(dev_mode); + dev_mode.dmPelsWidth = width; + dev_mode.dmPelsHeight = height; + dev_mode.dmBitsPerPel = bits; + dev_mode.dmDisplayFrequency = refresh; + dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY; + + // CDS_FULLSCREEN indicates that this is a temporary change to the device mode. + LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN); + + success = (DISP_CHANGE_SUCCESSFUL == cds_result); + + if (!success) + { + LL_WARNS("Window") << "setDisplayResolution failed, " + << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL; + } + + return success; +} + +// protected +BOOL LLWindowWin32::setFullscreenResolution() +{ + if (mFullscreen) + { + return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh); + } + else + { + return FALSE; + } +} + +// protected +BOOL LLWindowWin32::resetDisplayResolution() +{ + LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL; + + LONG cds_result = ChangeDisplaySettings(NULL, 0); + + BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result); + + if (!success) + { + LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL; + } + + LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL; + + return success; +} + +void LLWindowWin32::swapBuffers() +{ + SwapBuffers(mhDC); +} + + +// +// LLSplashScreenImp +// +LLSplashScreenWin32::LLSplashScreenWin32() +: mWindow(NULL) +{ +} + +LLSplashScreenWin32::~LLSplashScreenWin32() +{ +} + +void LLSplashScreenWin32::showImpl() +{ + // This appears to work. ??? + HINSTANCE hinst = GetModuleHandle(NULL); + + mWindow = CreateDialog(hinst, + TEXT("SPLASHSCREEN"), + NULL, // no parent + (DLGPROC) LLSplashScreenWin32::windowProc); + ShowWindow(mWindow, SW_SHOW); +} + + +void LLSplashScreenWin32::updateImpl(const std::string& mesg) +{ + if (!mWindow) return; + + WCHAR w_mesg[1024]; + mbstowcs(w_mesg, mesg.c_str(), 1024); + + SendDlgItemMessage(mWindow, + 666, // HACK: text id + WM_SETTEXT, + FALSE, + (LPARAM)w_mesg); +} + + +void LLSplashScreenWin32::hideImpl() +{ + if (mWindow) + { + DestroyWindow(mWindow); + mWindow = NULL; + } +} + + +// static +LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg, + WPARAM w_param, LPARAM l_param) +{ + // Just give it to windows + return DefWindowProc(h_wnd, u_msg, w_param, l_param); +} + +// +// Helper Funcs +// + +S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type) +{ + UINT uType; + + switch(type) + { + case OSMB_OK: + uType = MB_OK; + break; + case OSMB_OKCANCEL: + uType = MB_OKCANCEL; + break; + case OSMB_YESNO: + uType = MB_YESNO; + break; + default: + uType = MB_OK; + break; + } + + // HACK! Doesn't properly handle wide strings! + int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType); + S32 retval; + + switch(retval_win) + { + case IDYES: + retval = OSBTN_YES; + break; + case IDNO: + retval = OSBTN_NO; + break; + case IDOK: + retval = OSBTN_OK; + break; + case IDCANCEL: + retval = OSBTN_CANCEL; + break; + default: + retval = OSBTN_CANCEL; + break; + } + + return retval; +} + + +void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) +{ + bool found = false; + S32 i; + for (i = 0; i < gURLProtocolWhitelistCount; i++) + { + if (escaped_url.find(gURLProtocolWhitelist[i]) == 0) + { + found = true; + break; + } + } + + if (!found) + { + LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL; + return; + } + + LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL; + + // replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work + // reliablly on Vista. + + // this is madness.. no, this is.. + LLWString url_wstring = utf8str_to_wstring( escaped_url ); + llutf16string url_utf16 = wstring_to_utf16str( url_wstring ); + + // let the OS decide what to use to open the URL + SHELLEXECUTEINFO sei = { sizeof( sei ) }; + sei.fMask = SEE_MASK_FLAG_DDEWAIT; + sei.nShow = SW_SHOWNORMAL; + sei.lpVerb = L"open"; + sei.lpFile = url_utf16.c_str(); + ShellExecuteEx( &sei ); + + //// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES + //// DELETE THIS ONCE THE MERGES ARE DONE + + // Figure out the user's default web browser + // HKEY_CLASSES_ROOT\http\shell\open\command + /* + std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command"; + WCHAR reg_path_wstr[256]; + mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) ); + + HKEY key; + WCHAR browser_open_wstr[1024]; + DWORD buffer_length = 1024; + RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key); + RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length); + RegCloseKey(key); + + // Convert to STL string + LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr); + + if (browser_open_wstring.length() < 2) + { + LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL; + return; + } + + // Extract the process that's supposed to be launched + LLWString browser_executable; + if (browser_open_wstring[0] == '"') + { + // executable is quoted, find the matching quote + size_t quote_pos = browser_open_wstring.find('"', 1); + // copy out the string including both quotes + browser_executable = browser_open_wstring.substr(0, quote_pos+1); + } + else + { + // executable not quoted, find a space + size_t space_pos = browser_open_wstring.find(' ', 1); + browser_executable = browser_open_wstring.substr(0, space_pos); + } + + LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL; + LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL; + + // Convert URL to wide string for Windows API + // Assume URL is UTF8, as can come from scripts + LLWString url_wstring = utf8str_to_wstring(escaped_url); + llutf16string url_utf16 = wstring_to_utf16str(url_wstring); + + // Convert executable and path to wide string for Windows API + llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable); + + // ShellExecute returns HINSTANCE for backwards compatiblity. + // MS docs say to cast to int and compare to 32. + HWND our_window = NULL; + LPCWSTR directory_wstr = NULL; + int retval = (int) ShellExecute(our_window, // Flawfinder: ignore + L"open", + browser_exec_utf16.c_str(), + url_utf16.c_str(), + directory_wstr, + SW_SHOWNORMAL); + if (retval > 32) + { + LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL; + } + else + { + LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL; + } + */ +} + + +BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b ) +{ + BOOL retval = FALSE; + + static CHOOSECOLOR cc; + static COLORREF crCustColors[16]; + cc.lStructSize = sizeof(CHOOSECOLOR); + cc.hwndOwner = mWindowHandle; + cc.hInstance = NULL; + cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f)); + //cc.rgbResult = RGB (0x80,0x80,0x80); + cc.lpCustColors = crCustColors; + cc.Flags = CC_RGBINIT | CC_FULLOPEN; + cc.lCustData = 0; + cc.lpfnHook = NULL; + cc.lpTemplateName = NULL; + + // This call is modal, so pause agent + //send_agent_pause(); // this is in newview and we don't want to set up a dependency + { + retval = ChooseColor(&cc); + } + //send_agent_resume(); // this is in newview and we don't want to set up a dependency + + *b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f; + + *g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f; + + *r = ((F32)(cc.rgbResult & 0xff)) / 255.f; + + return (retval); +} + +void *LLWindowWin32::getPlatformWindow() +{ + return (void*)mWindowHandle; +} + +void LLWindowWin32::bringToFront() +{ + BringWindowToTop(mWindowHandle); +} + +// set (OS) window focus back to the client +void LLWindowWin32::focusClient() +{ + SetFocus ( mWindowHandle ); +} + +void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) +{ + if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable()) + { + return; + } + + if (preeditor != mPreeditor && !b) + { + // This condition may occur with a call to + // setEnabled(BOOL) from LLTextEditor or LLLineEditor + // when the control is not focused. + // We need to silently ignore the case so that + // the language input status of the focused control + // is not disturbed. + return; + } + + // Take care of old and new preeditors. + if (preeditor != mPreeditor || !b) + { + if (sLanguageTextInputAllowed) + { + interruptLanguageTextInput(); + } + mPreeditor = (b ? preeditor : NULL); + } + + sLanguageTextInputAllowed = b; + + if ( sLanguageTextInputAllowed ) + { + // Allowing: Restore the previous IME status, so that the user has a feeling that the previous + // text input continues naturally. Be careful, however, the IME status is meaningful only during the user keeps + // using same Input Locale (aka Keyboard Layout). + if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::setOpenStatus(himc, TRUE); + LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode); + LLWinImm::releaseContext(mWindowHandle, himc); + } + } + else + { + // Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly. + // However, do it after saving the current IME status. We need to restore the status when + // allowing language text input again. + sWinInputLocale = GetKeyboardLayout(0); + sWinIMEOpened = LLWinImm::isIME(sWinInputLocale); + if (sWinIMEOpened) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + sWinIMEOpened = LLWinImm::getOpenStatus(himc); + if (sWinIMEOpened) + { + LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode); + + // We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's + // keyboard hooking, because Some IME reacts only on the former and some other on the latter... + LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode); + LLWinImm::setOpenStatus(himc, FALSE); + } + LLWinImm::releaseContext(mWindowHandle, himc); + } + } +} + +void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, + CANDIDATEFORM *form) +{ + LLCoordWindow caret_coord, top_left, bottom_right; + convertCoords(caret, &caret_coord); + convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); + convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); + + memset(form, 0, sizeof(CANDIDATEFORM)); + form->dwStyle = CFS_EXCLUDE; + form->ptCurrentPos.x = caret_coord.mX; + form->ptCurrentPos.y = caret_coord.mY; + form->rcArea.left = top_left.mX; + form->rcArea.top = top_left.mY; + form->rcArea.right = bottom_right.mX; + form->rcArea.bottom = bottom_right.mY; +} + + +// Put the IME window at the right place (near current text input). Point coordinates should be the top of the current text line. +void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position ) +{ + if (sLanguageTextInputAllowed && LLWinImm::isAvailable()) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + + LLCoordWindow win_pos; + convertCoords( position, &win_pos ); + + if ( win_pos.mX >= 0 && win_pos.mY >= 0 && + (win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) ) + { + COMPOSITIONFORM ime_form; + memset( &ime_form, 0, sizeof(ime_form) ); + ime_form.dwStyle = CFS_POINT; + ime_form.ptCurrentPos.x = win_pos.mX; + ime_form.ptCurrentPos.y = win_pos.mY; + + LLWinImm::setCompositionWindow( himc, &ime_form ); + + sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY ); + } + + LLWinImm::releaseContext(mWindowHandle, himc); + } +} + + +void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control, + IMECHARPOSITION *char_position) +{ + LLCoordScreen caret_coord, top_left, bottom_right; + convertCoords(caret, &caret_coord); + convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); + convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); + + char_position->pt.x = caret_coord.mX; + char_position->pt.y = top_left.mY; // Windows wants the coordinate of upper left corner of a character... + char_position->cLineHeight = bottom_right.mY - top_left.mY; + char_position->rcDocument.left = top_left.mX; + char_position->rcDocument.top = top_left.mY; + char_position->rcDocument.right = bottom_right.mX; + char_position->rcDocument.bottom = bottom_right.mY; +} + +void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont) +{ + // Our font is a list of FreeType recognized font files that may + // not have a corresponding ones in Windows' fonts. Hence, we + // can't simply tell Windows which font we are using. We will + // notify a _standard_ font for a current input locale instead. + // We use a hard-coded knowledge about the Windows' standard + // configuration to do so... + + memset(logfont, 0, sizeof(LOGFONT)); + + const WORD lang_id = LOWORD(GetKeyboardLayout(0)); + switch (PRIMARYLANGID(lang_id)) + { + case LANG_CHINESE: + // We need to identify one of two Chinese fonts. + switch (SUBLANGID(lang_id)) + { + case SUBLANG_CHINESE_SIMPLIFIED: + case SUBLANG_CHINESE_SINGAPORE: + logfont->lfCharSet = GB2312_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("SimHei")); + break; + case SUBLANG_CHINESE_TRADITIONAL: + case SUBLANG_CHINESE_HONGKONG: + case SUBLANG_CHINESE_MACAU: + default: + logfont->lfCharSet = CHINESEBIG5_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("MingLiU")); + break; + } + break; + case LANG_JAPANESE: + logfont->lfCharSet = SHIFTJIS_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("MS Gothic")); + break; + case LANG_KOREAN: + logfont->lfCharSet = HANGUL_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("Gulim")); + break; + default: + logfont->lfCharSet = ANSI_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("Tahoma")); + break; + } + + logfont->lfHeight = mPreeditor->getPreeditFontSize(); + logfont->lfWeight = FW_NORMAL; +} + +U32 LLWindowWin32::fillReconvertString(const LLWString &text, + S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string) +{ + const llutf16string text_utf16 = wstring_to_utf16str(text); + const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR); + if (reconvert_string && reconvert_string->dwSize >= required_size) + { + const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus); + const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length); + + reconvert_string->dwVersion = 0; + reconvert_string->dwStrLen = text_utf16.length(); + reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING); + reconvert_string->dwCompStrLen = focus_utf16_length; + reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR); + reconvert_string->dwTargetStrLen = 0; + reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR); + + const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING)); + memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR)); + } + return required_size; +} + +void LLWindowWin32::updateLanguageTextInputArea() +{ + if (!mPreeditor || !LLWinImm::isAvailable()) + { + return; + } + + LLCoordGL caret_coord; + LLRect preedit_bounds; + if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL)) + { + mLanguageTextInputPointGL = caret_coord; + mLanguageTextInputAreaGL = preedit_bounds; + + CANDIDATEFORM candidate_form; + fillCandidateForm(caret_coord, preedit_bounds, &candidate_form); + + HIMC himc = LLWinImm::getContext(mWindowHandle); + // Win32 document says there may be up to 4 candidate windows. + // This magic number 4 appears only in the document, and + // there are no constant/macro for the value... + for (int i = 3; i >= 0; --i) + { + candidate_form.dwIndex = i; + LLWinImm::setCandidateWindow(himc, &candidate_form); + } + LLWinImm::releaseContext(mWindowHandle, himc); + } +} + +void LLWindowWin32::interruptLanguageTextInput() +{ + if (mPreeditor) + { + if (LLWinImm::isAvailable()) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0); + LLWinImm::releaseContext(mWindowHandle, himc); + } + + // Win32 document says there will be no composition string + // after NI_COMPOSITIONSTR returns. The following call to + // resetPreedit should be a NOP unless IME goes mad... + mPreeditor->resetPreedit(); + } +} + +void LLWindowWin32::handleStartCompositionMessage() +{ + // Let IME know the font to use in feedback UI. + LOGFONT logfont; + fillCompositionLogfont(&logfont); + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::setCompositionFont(himc, &logfont); + LLWinImm::releaseContext(mWindowHandle, himc); +} + +// Handle WM_IME_COMPOSITION message. + +void LLWindowWin32::handleCompositionMessage(const U32 indexes) +{ + BOOL needs_update = FALSE; + LLWString result_string; + LLWString preedit_string; + S32 preedit_string_utf16_length = 0; + LLPreeditor::segment_lengths_t preedit_segment_lengths; + LLPreeditor::standouts_t preedit_standouts; + + // Step I: Receive details of preedits from IME. + + HIMC himc = LLWinImm::getContext(mWindowHandle); + + if (indexes & GCS_RESULTSTR) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0); + if (size >= 0) + { + const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; + size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size); + if (size > 0) + { + result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); + } + delete[] data; + needs_update = TRUE; + } + } + + if (indexes & GCS_COMPSTR) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0); + if (size >= 0) + { + const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; + size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size); + if (size > 0) + { + preedit_string_utf16_length = size / sizeof(WCHAR); + preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); + } + delete[] data; + needs_update = TRUE; + } + } + + if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0); + if (size > 0) + { + const LPDWORD data = new DWORD[size / sizeof(DWORD)]; + size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size); + if (size >= sizeof(DWORD) * 2 + && data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length) + { + preedit_segment_lengths.resize(size / sizeof(DWORD) - 1); + S32 offset = 0; + for (U32 i = 0; i < preedit_segment_lengths.size(); i++) + { + const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]); + preedit_segment_lengths[i] = length; + offset += length; + } + } + delete[] data; + } + } + + if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0); + if (size > 0) + { + const LPBYTE data = new BYTE[size / sizeof(BYTE)]; + size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size); + if (size == preedit_string_utf16_length) + { + preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); + S32 offset = 0; + for (U32 i = 0; i < preedit_segment_lengths.size(); i++) + { + if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset]) + { + preedit_standouts[i] = TRUE; + } + offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]); + } + } + delete[] data; + } + } + + S32 caret_position = preedit_string.length(); + if (indexes & GCS_CURSORPOS) + { + const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0); + if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length) + { + caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16); + } + } + + if (indexes == 0) + { + // I'm not sure this condition really happens, but + // Windows SDK document says it is an indication + // of "reset everything." + needs_update = TRUE; + } + + LLWinImm::releaseContext(mWindowHandle, himc); + + // Step II: Update the active preeditor. + + if (needs_update) + { + mPreeditor->resetPreedit(); + + if (result_string.length() > 0) + { + for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++) + { + mPreeditor->handleUnicodeCharHere(*i); + } + } + + if (preedit_string.length() == 0) + { + preedit_segment_lengths.clear(); + preedit_standouts.clear(); + } + else + { + if (preedit_segment_lengths.size() == 0) + { + preedit_segment_lengths.assign(1, preedit_string.length()); + } + if (preedit_standouts.size() == 0) + { + preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); + } + } + mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position); + + // Some IME doesn't query char position after WM_IME_COMPOSITION, + // so we need to update them actively. + updateLanguageTextInputArea(); + } +} + +// Given a text and a focus range, find_context finds and returns a +// surrounding context of the focused subtext. A variable pointed +// to by offset receives the offset in llwchars of the beginning of +// the returned context string in the given wtext. + +static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset) +{ + static const S32 CONTEXT_EXCESS = 30; // This value is by experiences. + + const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS); + S32 end = focus + focus_length; + while (end < e && '\n' != wtext[end]) + { + end++; + } + + const S32 s = llmax(0, focus - CONTEXT_EXCESS); + S32 start = focus; + while (start > s && '\n' != wtext[start - 1]) + { + --start; + } + + *offset = start; + return wtext.substr(start, end - start); +} + +// final stage of handling drop requests - both from WM_DROPFILES message +// for files and via IDropTarget interface requests. +BOOL LLWindowWin32::completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url ) +{ + if ( mCallbacks->handleDrop( this, gl_coord, mask, url ) ) + { + return TRUE; + }; + + return FALSE; +}; + +// Handle WM_IME_REQUEST message. +// If it handled the message, returns TRUE. Otherwise, FALSE. +// When it handled the message, the value to be returned from +// the Window Procedure is set to *result. + +BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result) +{ + if ( mPreeditor ) + { + switch (request) + { + case IMR_CANDIDATEWINDOW: // http://msdn2.microsoft.com/en-us/library/ms776080.aspx + { + LLCoordGL caret_coord; + LLRect preedit_bounds; + mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL); + + CANDIDATEFORM *const form = (CANDIDATEFORM *)param; + DWORD const dwIndex = form->dwIndex; + fillCandidateForm(caret_coord, preedit_bounds, form); + form->dwIndex = dwIndex; + + *result = 1; + return TRUE; + } + case IMR_QUERYCHARPOSITION: + { + IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param; + + // char_position->dwCharPos counts in number of + // WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the + // number to getPreeditLocation. + + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 preedit, preedit_length; + mPreeditor->getPreeditRange(&preedit, &preedit_length); + LLCoordGL caret_coord; + LLRect preedit_bounds, text_control; + const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos); + + if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control)) + { + LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL; + return FALSE; + } + fillCharPosition(caret_coord, preedit_bounds, text_control, char_position); + + *result = 1; + return TRUE; + } + case IMR_COMPOSITIONFONT: + { + fillCompositionLogfont((LOGFONT *)param); + + *result = 1; + return TRUE; + } + case IMR_RECONVERTSTRING: + { + mPreeditor->resetPreedit(); + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 select, select_length; + mPreeditor->getSelectionRange(&select, &select_length); + + S32 context_offset; + const LLWString context = find_context(wtext, select, select_length, &context_offset); + + RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param; + const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string); + if (reconvert_string) + { + if (select_length == 0) + { + // Let the IME to decide the reconversion range, and + // adjust the reconvert_string structure accordingly. + HIMC himc = LLWinImm::getContext(mWindowHandle); + const BOOL adjusted = LLWinImm::setCompositionString(himc, + SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0); + LLWinImm::releaseContext(mWindowHandle, himc); + if (adjusted) + { + const llutf16string & text_utf16 = wstring_to_utf16str(context); + const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR); + const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen; + select = utf16str_wstring_length(text_utf16, new_preedit_start); + select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select; + select += context_offset; + } + } + mPreeditor->markAsPreedit(select, select_length); + } + + *result = size; + return TRUE; + } + case IMR_CONFIRMRECONVERTSTRING: + { + *result = FALSE; + return TRUE; + } + case IMR_DOCUMENTFEED: + { + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 preedit, preedit_length; + mPreeditor->getPreeditRange(&preedit, &preedit_length); + + S32 context_offset; + LLWString context = find_context(wtext, preedit, preedit_length, &context_offset); + preedit -= context_offset; + if (preedit_length) + { + // IMR_DOCUMENTFEED may be called when we have an active preedit. + // We should pass the context string *excluding* the preedit string. + // Otherwise, some IME are confused. + context.erase(preedit, preedit_length); + } + + RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param; + *result = fillReconvertString(context, preedit, 0, reconvert_string); + return TRUE; + } + default: + return FALSE; + } + } + + return FALSE; +} + +//static +std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList() +{ + // Fonts previously in getFontListSans() have moved to fonts.xml. + return std::vector<std::string>(); +} + + +#endif // LL_WINDOWS diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index e14324c9f17..1382cf93a2b 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -39,6 +39,7 @@ #include <windows.h> #include "llwindow.h" +#include "lldragdropwin32.h" // Hack for async host by name #define LL_WM_HOST_RESOLVED (WM_APP + 1) @@ -112,6 +113,8 @@ class LLWindowWin32 : public LLWindow /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); + BOOL completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url ); + static std::vector<std::string> getDynamicFallbackFontList(); protected: @@ -206,6 +209,8 @@ class LLWindowWin32 : public LLWindow LLPreeditor *mPreeditor; + LLDragDropWin32* mDragDrop; + friend class LLWindowManager; }; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index a0802430865..220f90c2f52 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -817,7 +817,7 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS return TRUE; } -BOOL LLViewerWindow::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void* data) +BOOL LLViewerWindow::handleDrop( LLWindow *window, LLCoordGL pos, MASK mask, std::string data ) { if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { @@ -825,7 +825,7 @@ BOOL LLViewerWindow::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, voi LLUUID object_id = pick_info.getObjectID(); S32 object_face = pick_info.mObjectFace; - std::string url = std::string( (char*)data ); + std::string url = data; llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 44704b99e39..cf024df9bf9 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void* data); + /*virtual*/ BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); -- GitLab From 66ce1b04297cd48520e666a3fa903af143f89c57 Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Mon, 2 Nov 2009 15:05:38 -0800 Subject: [PATCH 004/521] Added CMake file for new cpp/h file --- indra/llwindow/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index 7b1cab696f4..b4a3f744512 100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt @@ -102,11 +102,13 @@ if (WINDOWS) llwindowwin32.cpp lldxhardware.cpp llkeyboardwin32.cpp + lldragdropwin32.cpp ) list(APPEND llwindow_HEADER_FILES llwindowwin32.h lldxhardware.h llkeyboardwin32.h + lldragdropwin32.h ) list(APPEND llwindow_LINK_LIBRARIES comdlg32 # Common Dialogs for ChooseColor -- GitLab From 996740607a11ac7f8633f12b65ead0508e1435fa Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Tue, 3 Nov 2009 09:33:21 -0800 Subject: [PATCH 005/521] Convert screen coordinates from IDropAction to window coordinates. --- indra/llwindow/lldragdropwin32.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 0daff853955..d05dbf19a5e 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -209,11 +209,18 @@ class LLDragDropWin32Target: LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA); if (NULL != window_imp) { - LLCoordGL gl_coord( pt.x, pt.y); - LLCoordWindow cursor_coord_window( pt.x, pt.y ); + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); window_imp->convertCoords(cursor_coord_window, &gl_coord); llinfos << "### (Drop) URL is: " << lpszText << llendl; llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; + llinfos << "### window coords are: " << pt2.x << " x " << pt2.y << llendl; llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; llinfos << llendl; -- GitLab From 4f0731d722c41b6717d08b8165e941a06edd3a1f Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 5 Nov 2009 17:51:04 -0800 Subject: [PATCH 006/521] make drop add media if not there, navigate if already there --- indra/newview/llviewerwindow.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b43479689f2..ead99613fbc 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -831,12 +831,27 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window, LLCoordGL pos, MASK mask, st LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); if (obj) { - LLSD media_data; - /// XXX home URL too? - media_data[LLMediaEntry::CURRENT_URL_KEY] = url; - media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; - obj->syncMediaData(object_face, media_data, true, true); - obj->sendMediaDataUpdate(); + LLTextureEntry *te = obj->getTE(object_face); + if (te) + { + if (! te->hasMedia()) + { + // Create new media entry + LLSD media_data; + // XXX Should we really do Home URL too? + media_data[LLMediaEntry::HOME_URL_KEY] = url; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; + obj->syncMediaData(object_face, media_data, true, true); + // XXX This shouldn't be necessary, should it ?!? + obj->getMediaImpl(object_face)->navigateReload(); + obj->sendMediaDataUpdate(); + } + else { + // just navigate to the URL + obj->getMediaImpl(object_face)->navigateTo(url); + } + } } } // Always handled as far as the OS is concerned. -- GitLab From bf5ce0fcbd9a71ce1372db0f42395ba47747fd78 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 12 Nov 2009 11:06:29 -0800 Subject: [PATCH 007/521] Change 'handleDrop()' API to 'handleDragNDrop', which now takes a "drop" BOOL --- indra/llwindow/lldragdropwin32.cpp | 18 ++++++++++++- indra/llwindow/llwindowcallbacks.cpp | 2 +- indra/llwindow/llwindowcallbacks.h | 2 +- indra/llwindow/llwindowwin32.cpp | 13 +++------- indra/llwindow/llwindowwin32.h | 2 +- indra/newview/llviewerwindow.cpp | 39 ++++++++++++++++------------ indra/newview/llviewerwindow.h | 2 +- 7 files changed, 48 insertions(+), 30 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index d05dbf19a5e..879f2d2b90f 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -171,6 +171,22 @@ class LLDragDropWin32Target: STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) { HRESULT hr = S_OK; + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + bDropTargetValid = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); + } if (bDropTargetValid) *pdwEffect=DROPEFFECT_COPY; @@ -225,7 +241,7 @@ class LLDragDropWin32Target: llinfos << llendl; MASK mask = gKeyboard->currentMask(TRUE); - window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) ); + window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, std::string( lpszText ) ); }; GlobalUnlock(hText); diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 1098529e1cd..b8927a1ac4f 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } -BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data ) +BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) { return FALSE; } diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 3a09100168b..8e7605a6505 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -68,7 +68,7 @@ class LLWindowCallbacks virtual void handleWindowBlock(LLWindow *window); // window is taking over CPU for a while virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); - virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data); + virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index da096b9a0a2..eda8cf15b08 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2401,7 +2401,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ MASK mask = gKeyboard->currentMask(TRUE); - if ( window_imp->completeDropRequest( gl_coord, mask, (char*)url ) ) + if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url ) ) { return 0; }; @@ -3578,15 +3578,10 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng // final stage of handling drop requests - both from WM_DROPFILES message // for files and via IDropTarget interface requests. -BOOL LLWindowWin32::completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url ) +BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ) { - if ( mCallbacks->handleDrop( this, gl_coord, mask, url ) ) - { - return TRUE; - }; - - return FALSE; -}; + return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url ); +} // Handle WM_IME_REQUEST message. // If it handled the message, returns TRUE. Otherwise, FALSE. diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 1382cf93a2b..e99c26b7f1f 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); - BOOL completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url ); + BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ); static std::vector<std::string> getDynamicFallbackFontList(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 06d6819b5e5..d2f81f21ac4 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -819,8 +819,9 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS return TRUE; } -BOOL LLViewerWindow::handleDrop( LLWindow *window, LLCoordGL pos, MASK mask, std::string data ) +BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) { + BOOL result = FALSE; if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); @@ -837,28 +838,34 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window, LLCoordGL pos, MASK mask, st LLTextureEntry *te = obj->getTE(object_face); if (te) { - if (! te->hasMedia()) + if (drop) { - // Create new media entry - LLSD media_data; - // XXX Should we really do Home URL too? - media_data[LLMediaEntry::HOME_URL_KEY] = url; - media_data[LLMediaEntry::CURRENT_URL_KEY] = url; - media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; - obj->syncMediaData(object_face, media_data, true, true); - // XXX This shouldn't be necessary, should it ?!? - obj->getMediaImpl(object_face)->navigateReload(); - obj->sendMediaDataUpdate(); + if (! te->hasMedia()) + { + // Create new media entry + LLSD media_data; + // XXX Should we really do Home URL too? + media_data[LLMediaEntry::HOME_URL_KEY] = url; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; + obj->syncMediaData(object_face, media_data, true, true); + // XXX This shouldn't be necessary, should it ?!? + obj->getMediaImpl(object_face)->navigateReload(); + obj->sendMediaDataUpdate(); + } + else { + // just navigate to the URL + obj->getMediaImpl(object_face)->navigateTo(url); + } } else { - // just navigate to the URL - obj->getMediaImpl(object_face)->navigateTo(url); + // XXX TODO: make object glow? Hard because how do we "unglow?" } + result = TRUE; } } } - // Always handled as far as the OS is concerned. - return TRUE; + return result; } BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index cdc9eb47866..d7cfcff925f 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data); + /*virtual*/ BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); -- GitLab From 778005a350308d51f114ece74b4e7f3e7af3d37e Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Fri, 13 Nov 2009 17:43:55 -0800 Subject: [PATCH 008/521] Reworked IDropTarget COM interface impl - now much cleaner and doesn't crash! --- indra/llwindow/lldragdropwin32.cpp | 287 +++++++++++++---------------- indra/llwindow/lldragdropwin32.h | 8 +- 2 files changed, 135 insertions(+), 160 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index d05dbf19a5e..aac68e71af2 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -34,216 +34,183 @@ #include "linden_common.h" -#define WIN32_LEAN_AND_MEAN -#include <windows.h> - #include "llwindowwin32.h" #include "llkeyboardwin32.h" -#include "lldragdropwin32.h" - #include "llwindowcallbacks.h" - -#include <windows.h> -#include <ole2.h> -#include <shlobj.h> -#include <shellapi.h> -#include <shlwapi.h> - -// FIXME: this should be done in CMake -#pragma comment( lib, "shlwapi.lib" ) +#include "lldragdropwin32.h" class LLDragDropWin32Target: public IDropTarget { public: + //////////////////////////////////////////////////////////////////////////////// + // LLDragDropWin32Target( HWND hWnd ) : - mWindowHandle( hWnd ), - mRefCount( 0 ) + mRefCount( 1 ), + mAppWindowHandle( hWnd ), + mAllowDrop( false) { - strcpy(szFileDropped,""); - bDropTargetValid = false; - bTextDropped = false; }; - /* IUnknown methods */ - STDMETHOD_( ULONG, AddRef )( void ) + //////////////////////////////////////////////////////////////////////////////// + // + ULONG __stdcall AddRef( void ) { - return ++mRefCount; + return InterlockedIncrement( &mRefCount ); }; - STDMETHOD_( ULONG, Release )( void ) + //////////////////////////////////////////////////////////////////////////////// + // + ULONG __stdcall Release( void ) { - if ( --mRefCount == 0 ) + LONG count = InterlockedDecrement( &mRefCount ); + + if ( count == 0 ) { delete this; return 0; } - return mRefCount; + else + { + return count; + }; }; - STDMETHOD ( QueryInterface )( REFIID iid, void ** ppvObject ) + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject ) { if ( iid == IID_IUnknown || iid == IID_IDropTarget ) { - *ppvObject = this; AddRef(); + *ppvObject = this; return S_OK; + } + else + { + *ppvObject = 0; + return E_NOINTERFACE; }; - - *ppvObject = NULL; - return E_NOINTERFACE; }; - - /* IDropTarget methods */ - STDMETHOD (DragEnter)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) { - HRESULT hr = E_INVALIDARG; - bDropTargetValid = false; - bTextDropped = false; - *pdwEffect=DROPEFFECT_NONE; - - FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; - STGMEDIUM medium; - - if (pDataObj && SUCCEEDED (pDataObj->GetData (&fmte, &medium))) - { - // We can Handle Only one File At a time !!! - if (1 == DragQueryFile ((HDROP)medium.hGlobal,0xFFFFFFFF,NULL,0 )) - { - // Get the File Name - if (DragQueryFileA((HDROP)medium.hGlobal, 0, szFileDropped,MAX_PATH)) - { - if (!PathIsDirectoryA(szFileDropped)) - { - char szTempFile[MAX_PATH]; - _splitpath(szFileDropped,NULL,NULL,NULL,szTempFile); - -// if (!stricmp(szTempFile,".lnk")) -// { -// if (ResolveLink(szFileDropped,szTempFile)) -// { -// strcpy(szFileDropped,szTempFile); -// *pdwEffect=DROPEFFECT_COPY; -// We Want to Create a Copy -// bDropTargetValid = true; -// hr = S_OK; -// } -// } -// else -// { - *pdwEffect=DROPEFFECT_COPY; - //We Want to Create a Copy - bDropTargetValid = true; - hr = S_OK; -// } - } - } - } - - if (medium.pUnkForRelease) - medium.pUnkForRelease->Release (); - else - GlobalFree (medium.hGlobal); - } - else + FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + + // support CF_TEXT using a HGLOBAL? + if ( S_OK == pDataObject->QueryGetData( &fmtetc ) ) { - fmte.cfFormat = CF_TEXT; - fmte.ptd = NULL; - fmte.dwAspect = DVASPECT_CONTENT; - fmte.lindex = -1; - fmte.tymed = TYMED_HGLOBAL; - - // Does the drag source provide CF_TEXT ? - if (NOERROR == pDataObj->QueryGetData(&fmte)) - { - bDropTargetValid = true; - bTextDropped = true; - *pdwEffect=DROPEFFECT_COPY; - hr = S_OK; - } - } - return hr; + mAllowDrop = true; + *pdwEffect = DROPEFFECT_COPY; + SetFocus( mAppWindowHandle ); + } + else + { + mAllowDrop = false; + *pdwEffect = DROPEFFECT_NONE; + }; + return S_OK; }; - STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) { - HRESULT hr = S_OK; - if (bDropTargetValid) - *pdwEffect=DROPEFFECT_COPY; + if ( mAllowDrop ) + { + *pdwEffect = DROPEFFECT_COPY; + } + else + { + *pdwEffect = DROPEFFECT_NONE; + }; - return hr; + return S_OK; }; - STDMETHOD (DragLeave)(void) + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragLeave( void ) { - HRESULT hr = S_OK; - strcpy(szFileDropped,""); - return hr; + return S_OK; }; - STDMETHOD (Drop)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) { - HRESULT hr = S_OK; - if (bDropTargetValid) + if ( mAllowDrop ) { - *pdwEffect=DROPEFFECT_COPY; - - FORMATETC fmte; - STGMEDIUM medium; + // construct a FORMATETC object + FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; - if (bTextDropped) + // do we have text? + if( S_OK == pDataObject->QueryGetData( &fmtetc ) ) { - fmte.cfFormat = CF_TEXT; - fmte.ptd = NULL; - fmte.dwAspect = DVASPECT_CONTENT; - fmte.lindex = -1; - fmte.tymed = TYMED_HGLOBAL; - - hr = pDataObj->GetData(&fmte, &medium); - HGLOBAL hText = medium.hGlobal; - LPSTR lpszText = (LPSTR)GlobalLock(hText); - - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA); - if (NULL != window_imp) + STGMEDIUM stgmed; + if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) ) { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt2; - pt2.x = pt.x; - pt2.y = pt.y; - ScreenToClient( mWindowHandle, &pt2 ); - - LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - llinfos << "### (Drop) URL is: " << lpszText << llendl; - llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; - llinfos << "### window coords are: " << pt2.x << " x " << pt2.y << llendl; - llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; - llinfos << llendl; - - MASK mask = gKeyboard->currentMask(TRUE); - window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) ); + // note: data is in an HGLOBAL - not 'regular' memory + PVOID data = GlobalLock( stgmed.hGlobal ); + + // window impl stored in Window data (neat!) + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); + if ( NULL != window_imp ) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt_client; + pt_client.x = pt.x; + pt_client.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt_client ); + + LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + llinfos << "### (Drop) URL is: " << data << llendl; + llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; + llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl; + llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; + llinfos << llendl; + + // no keyboard modifier option yet but we could one day + MASK mask = gKeyboard->currentMask( TRUE ); + + // actually do the drop + window_imp->completeDropRequest( gl_coord, mask, std::string( (char*)data ) ); + }; + + GlobalUnlock( stgmed.hGlobal ); + + ReleaseStgMedium( &stgmed ); }; + }; - GlobalUnlock(hText); - ReleaseStgMedium(&medium); - } + *pdwEffect = DROPEFFECT_COPY; } - return hr; + else + { + *pdwEffect = DROPEFFECT_NONE; + }; + + return S_OK; }; - + + //////////////////////////////////////////////////////////////////////////////// + // private: - ULONG mRefCount; - HWND mWindowHandle; - char szFileDropped[1024]; - bool bDropTargetValid; - bool bTextDropped; + LONG mRefCount; + HWND mAppWindowHandle; + bool mAllowDrop; friend class LLWindowWin32; }; +//////////////////////////////////////////////////////////////////////////////// +// LLDragDropWin32::LLDragDropWin32() : mDropTarget( NULL ), mDropWindowHandle( NULL ) @@ -251,19 +218,23 @@ LLDragDropWin32::LLDragDropWin32() : { } +//////////////////////////////////////////////////////////////////////////////// +// LLDragDropWin32::~LLDragDropWin32() { } +//////////////////////////////////////////////////////////////////////////////// +// bool LLDragDropWin32::init( HWND hWnd ) { - if (NOERROR != OleInitialize(NULL)) + if ( NOERROR != OleInitialize( NULL ) ) return FALSE; mDropTarget = new LLDragDropWin32Target( hWnd ); if ( mDropTarget ) { - HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, TRUE ); + HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE ); if ( S_OK == result ) { result = RegisterDragDrop( hWnd, mDropTarget ); @@ -287,12 +258,14 @@ bool LLDragDropWin32::init( HWND hWnd ) return true; } +//////////////////////////////////////////////////////////////////////////////// +// void LLDragDropWin32::reset() { if ( mDropTarget ) { - CoLockObjectExternal( mDropTarget, FALSE, TRUE ); RevokeDragDrop( mDropWindowHandle ); + CoLockObjectExternal( mDropTarget, FALSE, TRUE ); mDropTarget->Release(); }; diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h index 6137e5eb655..624f4ad24bc 100644 --- a/indra/llwindow/lldragdropwin32.h +++ b/indra/llwindow/lldragdropwin32.h @@ -33,10 +33,10 @@ #ifndef LL_LLDRAGDROP32_H #define LL_LLDRAGDROP32_H +#if LL_WINDOWS + #include <windows.h> #include <ole2.h> -#include <shlobj.h> -#include <shlwapi.h> class LLDragDropWin32 { @@ -52,4 +52,6 @@ class LLDragDropWin32 HWND mDropWindowHandle; }; -#endif +#endif // LL_WINDOWS + +#endif // LL_LLDRAGDROP32_H -- GitLab From 4419e367bcbe8c1b248e88eab8096f0b8ac4707c Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Wed, 18 Nov 2009 21:15:44 -0800 Subject: [PATCH 009/521] Add support for removing the Windows specific drag/drop code from the codebase via a new CMake file (DragDrop.cmake). --- indra/cmake/DragDrop.cmake | 25 +++++++++++++++++++++++++ indra/llwindow/CMakeLists.txt | 1 + indra/llwindow/lldragdropwin32.cpp | 7 ++++++- indra/llwindow/lldragdropwin32.h | 29 ++++++++++++++++++++++++++--- indra/newview/CMakeLists.txt | 1 + 5 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 indra/cmake/DragDrop.cmake diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake new file mode 100644 index 00000000000..a2d7df13129 --- /dev/null +++ b/indra/cmake/DragDrop.cmake @@ -0,0 +1,25 @@ +# -*- cmake -*- + +if (VIEWER) + + OPTION (OS_DRAG_DROP + "Build the viewer with OS level drag and drop turned on or off" + OFF) + + if (OS_DRAG_DROP) + + if (WINDOWS) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) + endif (WINDOWS) + + if (DARWIN) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) + endif (DARWIN) + + if (LINUX) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) + endif (LINUX) + + endif (OS_DRAG_DROP) + +endif (VIEWER) diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index b4a3f744512..77c6fa57b6c 100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt @@ -12,6 +12,7 @@ project(llwindow) include(00-Common) include(DirectX) +include(DragDrop) include(LLCommon) include(LLImage) include(LLMath) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index aac68e71af2..471c88675df 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -32,6 +32,8 @@ #if LL_WINDOWS +#if LL_OS_DRAGDROP_ENABLED + #include "linden_common.h" #include "llwindowwin32.h" @@ -272,4 +274,7 @@ void LLDragDropWin32::reset() OleUninitialize(); } -#endif +#endif // LL_OS_DRAGDROP_ENABLED + +#endif // LL_WINDOWS + diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h index 624f4ad24bc..26c8e4aeff5 100644 --- a/indra/llwindow/lldragdropwin32.h +++ b/indra/llwindow/lldragdropwin32.h @@ -30,11 +30,13 @@ * $/LicenseInfo$ */ +#if LL_WINDOWS + +#if LL_OS_DRAGDROP_ENABLED + #ifndef LL_LLDRAGDROP32_H #define LL_LLDRAGDROP32_H -#if LL_WINDOWS - #include <windows.h> #include <ole2.h> @@ -51,7 +53,28 @@ class LLDragDropWin32 IDropTarget* mDropTarget; HWND mDropWindowHandle; }; +#endif // LL_LLDRAGDROP32_H -#endif // LL_WINDOWS +#else // LL_OS_DRAGDROP_ENABLED +#ifndef LL_LLDRAGDROP32_H +#define LL_LLDRAGDROP32_H + +#include <windows.h> +#include <ole2.h> + +// imposter class that does nothing +class LLDragDropWin32 +{ + public: + LLDragDropWin32() {}; + ~LLDragDropWin32() {}; + + bool init( HWND hWnd ) { return false; }; + void reset() { }; +}; #endif // LL_LLDRAGDROP32_H + +#endif // LL_OS_DRAGDROP_ENABLED + +#endif // LL_WINDOWS diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b129bca1f39..352e9a93820 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -7,6 +7,7 @@ include(Boost) include(BuildVersion) include(DBusGlib) include(DirectX) +include(DragDrop) include(ELFIO) include(FMOD) include(OPENAL) -- GitLab From 9e53ad6111ce0e15cb10f2ffb47fee8b48d1c3db Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Wed, 18 Nov 2009 21:17:39 -0800 Subject: [PATCH 010/521] Doh! Update the CMake file that controls drag and drop to turn it ON --- indra/cmake/DragDrop.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake index a2d7df13129..739d011813a 100644 --- a/indra/cmake/DragDrop.cmake +++ b/indra/cmake/DragDrop.cmake @@ -4,7 +4,7 @@ if (VIEWER) OPTION (OS_DRAG_DROP "Build the viewer with OS level drag and drop turned on or off" - OFF) + ON) if (OS_DRAG_DROP) -- GitLab From d4ba73ed721fa0811474fc53300f560539d38018 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 19 Nov 2009 09:24:26 -0800 Subject: [PATCH 011/521] Fix merge error --- indra/llwindow/lldragdropwin32.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 4fc64f2f69d..b39cd836982 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -124,7 +124,7 @@ class LLDragDropWin32Target: if ( mAllowDrop ) { // XXX MAJOR MAJOR HACK! - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA); + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); if (NULL != window_imp) { LLCoordGL gl_coord( 0, 0 ); @@ -132,12 +132,12 @@ class LLDragDropWin32Target: POINT pt2; pt2.x = pt.x; pt2.y = pt.y; - ScreenToClient( mWindowHandle, &pt2 ); + ScreenToClient( mAppWindowHandle, &pt2 ); LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); window_imp->convertCoords(cursor_coord_window, &gl_coord); MASK mask = gKeyboard->currentMask(TRUE); - bDropTargetValid = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); + window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); } *pdwEffect = DROPEFFECT_COPY; } -- GitLab From dbe1f9755896e41e2064a3ee69725d753c67921f Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 23 Nov 2009 17:18:54 -0800 Subject: [PATCH 012/521] Highlight the object if it is being dragged over and can be dropped upon --- indra/newview/llviewerwindow.cpp | 10 ++++++++-- indra/newview/llviewerwindow.h | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 55e66e11382..17b9490f632 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -833,7 +833,8 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); - if (obj) + gPipeline.setHighlightObject(NULL); + if (obj && obj->permModify()) { LLTextureEntry *te = obj->getTE(object_face); if (te) @@ -859,11 +860,16 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas } } else { - // XXX TODO: make object glow? Hard because how do we "unglow?" + mDragHoveredObject = obj; + // Make the object glow + gPipeline.setHighlightObject(mDragHoveredObject->mDrawable); } result = TRUE; } } + else { + mDragHoveredObject = NULL; + } } return result; } diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 311fea3508f..428c602b73a 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -474,6 +474,9 @@ class LLViewerWindow : public LLWindowCallbacks static std::string sSnapshotDir; static std::string sMovieBaseName; + +private: + LLPointer<LLViewerObject> mDragHoveredObject; }; void toggle_flying(void*); -- GitLab From 8d84b7ae4062d8680aae2bb8325813bdac0335ed Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Tue, 24 Nov 2009 18:31:30 -0800 Subject: [PATCH 013/521] Add support for changing OS cursor when mouse passes over a prim you can drop on versus one you can't. --- indra/llwindow/lldragdropwin32.cpp | 38 +++++++++++++++++------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index a10cfbf12f0..6024931092d 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -125,23 +125,29 @@ class LLDragDropWin32Target: { if ( mAllowDrop ) { - // XXX MAJOR MAJOR HACK! - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); - if (NULL != window_imp) - { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt2; - pt2.x = pt.x; - pt2.y = pt.y; - ScreenToClient( mAppWindowHandle, &pt2 ); + bool allowed_to_drop = false; - LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - MASK mask = gKeyboard->currentMask(TRUE); - window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); - } - *pdwEffect = DROPEFFECT_COPY; + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); + } + + if ( allowed_to_drop ) + *pdwEffect = DROPEFFECT_COPY; + else + *pdwEffect = DROPEFFECT_NONE; } else { -- GitLab From e2e7d544b6a114e70e3b46f516a4f0e8d7db4bd1 Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Tue, 24 Nov 2009 20:20:53 -0800 Subject: [PATCH 014/521] Added support for dropping SURLs onto viewer Does right thing when logged in - needs some work at login page Removed (commented out) WM_DROPFILES code for now --- indra/llwindow/lldragdropwin32.cpp | 103 +++++++++++++------------- indra/llwindow/llwindowcallbacks.cpp | 2 +- indra/llwindow/llwindowcallbacks.h | 2 +- indra/llwindow/llwindowwin32.cpp | 105 ++++++++++++++------------- indra/llwindow/llwindowwin32.h | 2 +- indra/newview/llviewerwindow.cpp | 10 ++- indra/newview/llviewerwindow.h | 2 +- 7 files changed, 121 insertions(+), 105 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 6024931092d..74f96f6da3c 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -54,6 +54,10 @@ class LLDragDropWin32Target: { }; + virtual ~LLDragDropWin32Target() + { + }; + //////////////////////////////////////////////////////////////////////////////// // ULONG __stdcall AddRef( void ) @@ -105,6 +109,20 @@ class LLDragDropWin32Target: if ( S_OK == pDataObject->QueryGetData( &fmtetc ) ) { mAllowDrop = true; + mDropUrl = std::string(); + mIsSlurl = false; + + STGMEDIUM stgmed; + if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) ) + { + PVOID data = GlobalLock( stgmed.hGlobal ); + mDropUrl = std::string( (char*)data ); + + mIsSlurl = ( mDropUrl.find( "slurl.com" ) != std::string::npos ); + + GlobalUnlock( stgmed.hGlobal ); + ReleaseStgMedium( &stgmed ); + }; *pdwEffect = DROPEFFECT_COPY; @@ -125,8 +143,6 @@ class LLDragDropWin32Target: { if ( mAllowDrop ) { - bool allowed_to_drop = false; - // XXX MAJOR MAJOR HACK! LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); if (NULL != window_imp) @@ -141,13 +157,17 @@ class LLDragDropWin32Target: LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); window_imp->convertCoords(cursor_coord_window, &gl_coord); MASK mask = gKeyboard->currentMask(TRUE); - allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); - } - if ( allowed_to_drop ) - *pdwEffect = DROPEFFECT_COPY; - else - *pdwEffect = DROPEFFECT_NONE; + bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ), mIsSlurl ); + if ( allowed_to_drop ) + *pdwEffect = DROPEFFECT_COPY; + else + *pdwEffect = DROPEFFECT_NONE; + + // special case for SLURLs - you can always drop them on the client window and we need a different cursor + if ( mIsSlurl ) + *pdwEffect = DROPEFFECT_LINK; + }; } else { @@ -161,6 +181,7 @@ class LLDragDropWin32Target: // HRESULT __stdcall DragLeave( void ) { + mDropUrl = std::string(); return S_OK; }; @@ -170,48 +191,30 @@ class LLDragDropWin32Target: { if ( mAllowDrop ) { - // construct a FORMATETC object - FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; - - // do we have text? - if( S_OK == pDataObject->QueryGetData( &fmtetc ) ) + // window impl stored in Window data (neat!) + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); + if ( NULL != window_imp ) { - STGMEDIUM stgmed; - if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) ) - { - // note: data is in an HGLOBAL - not 'regular' memory - PVOID data = GlobalLock( stgmed.hGlobal ); - - // window impl stored in Window data (neat!) - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); - if ( NULL != window_imp ) - { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt_client; - pt_client.x = pt.x; - pt_client.y = pt.y; - ScreenToClient( mAppWindowHandle, &pt_client ); - - LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - llinfos << "### (Drop) URL is: " << data << llendl; - llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; - llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl; - llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; - llinfos << llendl; - - // no keyboard modifier option yet but we could one day - MASK mask = gKeyboard->currentMask( TRUE ); - - // actually do the drop - window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, std::string( (char*)data ) ); - }; - - GlobalUnlock( stgmed.hGlobal ); - - ReleaseStgMedium( &stgmed ); - }; + LLCoordGL gl_coord( 0, 0 ); + + POINT pt_client; + pt_client.x = pt.x; + pt_client.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt_client ); + + LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + llinfos << "### (Drop) URL is: " << mDropUrl << llendl; + llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; + llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl; + llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; + llinfos << llendl; + + // no keyboard modifier option yet but we could one day + MASK mask = gKeyboard->currentMask( TRUE ); + + // actually do the drop + window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl, mIsSlurl ); }; *pdwEffect = DROPEFFECT_COPY; @@ -230,6 +233,8 @@ class LLDragDropWin32Target: LONG mRefCount; HWND mAppWindowHandle; bool mAllowDrop; + std::string mDropUrl; + bool mIsSlurl; friend class LLWindowWin32; }; diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index b8927a1ac4f..3b0aeeab1fa 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } -BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) +BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl ) { return FALSE; } diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 8e7605a6505..1b4a6cbda22 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -68,7 +68,7 @@ class LLWindowCallbacks virtual void handleWindowBlock(LLWindow *window); // window is taking over CPU for a while virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); - virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); + virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index eda8cf15b08..78bc3b9c587 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2355,57 +2355,60 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ }; return 0; - case WM_DROPFILES: - { - // HDROP contains what we need - HDROP hdrop = (HDROP)w_param; - - // get location in window space where drop occured and convert to OpenGL coordinate space - POINT pt; - DragQueryPoint( hdrop, &pt ); - LLCoordGL gl_coord; - LLCoordWindow cursor_coord_window( pt.x, pt.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - - // get payload (eventually, this needs to more advanced and grab size of payload dynamically - static char file_name[ 1024 ]; - DragQueryFileA( hdrop, 0, file_name, 1024 ); - void* url = (void*)( file_name ); - - // if it's a .URL or .lnk ("shortcut") file - if ( std::string( file_name ).find( ".lnk" ) != std::string::npos || - std::string( file_name ).find( ".URL" ) != std::string::npos ) - { - // read through file - looks like a 2 line file with second line URL= but who knows.. - std::ifstream file_handle( file_name ); - if ( file_handle.is_open() ) - { - std::string line; - while ( ! file_handle.eof() ) - { - std::getline( file_handle, line ); - if ( ! file_handle.eof() ) - { - std::string prefix( "URL=" ); - if ( line.find( prefix, 0 ) != std::string::npos ) - { - line = line.substr( 4 ); // skip off the URL= bit - strcpy( (char*)url, line.c_str() ); - break; - }; - }; - }; - file_handle.close(); - }; - }; + // only useful for droppnig files - could be used for file upload dialog one day + //case WM_DROPFILES: + // { + // // HDROP contains what we need + // HDROP hdrop = (HDROP)w_param; + + // // get location in window space where drop occured and convert to OpenGL coordinate space + // POINT pt; + // DragQueryPoint( hdrop, &pt ); + // LLCoordGL gl_coord; + // LLCoordWindow cursor_coord_window( pt.x, pt.y ); + // window_imp->convertCoords(cursor_coord_window, &gl_coord); + + // // get payload (eventually, this needs to more advanced and grab size of payload dynamically + // static char file_name[ 1024 ]; + // DragQueryFileA( hdrop, 0, file_name, 1024 ); + // void* url = (void*)( file_name ); + + // // if it's a .URL or .lnk ("shortcut") file + // if ( std::string( file_name ).find( ".lnk" ) != std::string::npos || + // std::string( file_name ).find( ".URL" ) != std::string::npos ) + // { + // // read through file - looks like a 2 line file with second line URL= but who knows.. + // std::ifstream file_handle( file_name ); + // if ( file_handle.is_open() ) + // { + // std::string line; + // while ( ! file_handle.eof() ) + // { + // std::getline( file_handle, line ); + // if ( ! file_handle.eof() ) + // { + // std::string prefix( "URL=" ); + // if ( line.find( prefix, 0 ) != std::string::npos ) + // { + // line = line.substr( 4 ); // skip off the URL= bit + // strcpy( (char*)url, line.c_str() ); + // break; + // }; + // }; + // }; + // file_handle.close(); + // }; + // }; + + // MASK mask = gKeyboard->currentMask(TRUE); + + // if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url, false ) ) + // { + // return 0; + // }; + // } - MASK mask = gKeyboard->currentMask(TRUE); - if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url ) ) - { - return 0; - }; - } break; } @@ -3578,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng // final stage of handling drop requests - both from WM_DROPFILES message // for files and via IDropTarget interface requests. -BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ) +BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl ) { - return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url ); + return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url, is_slurl ); } // Handle WM_IME_REQUEST message. diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index e99c26b7f1f..7f7acd5751c 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); - BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ); + BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl ); static std::vector<std::string> getDynamicFallbackFontList(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 17b9490f632..dd84140d5be 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -80,6 +80,7 @@ #include "llviewermenu.h" #include "lltooltip.h" #include "llmediaentry.h" +#include "llurldispatcher.h" // newview includes #include "llagent.h" @@ -819,11 +820,18 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS return TRUE; } -BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) +BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl ) { BOOL result = FALSE; if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { + // special case SLURLs + if ( slurl ) + { + LLURLDispatcher::dispatch( data, NULL, true ); + return TRUE; + }; + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); LLUUID object_id = pick_info.getObjectID(); diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 428c602b73a..4296495067a 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); + /*virtual*/ BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); -- GitLab From 97af20b4ba4a400569e99a616fc026190d3eec6c Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 25 Nov 2009 09:52:20 -0800 Subject: [PATCH 015/521] Change drag highlighting to use LLSelectMgr::{un}highlightObjectOnly() instead of gPipeline.setHighlightObject(). The latter seems a little buggy. --- indra/newview/llviewerwindow.cpp | 14 ++++++++++---- indra/newview/llviewerwindow.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 17b9490f632..cc74c1fbe23 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -833,7 +833,7 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); - gPipeline.setHighlightObject(NULL); + if (obj && obj->permModify()) { LLTextureEntry *te = obj->getTE(object_face); @@ -858,19 +858,25 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas // just navigate to the URL obj->getMediaImpl(object_face)->navigateTo(url); } + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = NULL; } else { mDragHoveredObject = obj; - // Make the object glow - gPipeline.setHighlightObject(mDragHoveredObject->mDrawable); + // Highlight the dragged object + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); } result = TRUE; } } - else { + + if (!result && !mDragHoveredObject.isNull()) + { + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); mDragHoveredObject = NULL; } } + return result; } diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 428c602b73a..c3aa1b2407f 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -476,6 +476,7 @@ class LLViewerWindow : public LLWindowCallbacks static std::string sMovieBaseName; private: + // Object temporarily hovered over while dragging LLPointer<LLViewerObject> mDragHoveredObject; }; -- GitLab From e0a7b7608f087b7d3a4b91ba7868e0a5c04aaa86 Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Mon, 30 Nov 2009 20:19:39 -0800 Subject: [PATCH 016/521] Add support for dropping a region SLURL on login page and populating the UI --- indra/newview/llpanellogin.cpp | 15 +++++++++++++++ indra/newview/llpanellogin.h | 3 ++- indra/newview/llviewerwindow.cpp | 6 +++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index d2a17dbd979..ba3782bf53a 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -682,6 +682,21 @@ void LLPanelLogin::refreshLocation( bool force_visible ) #endif } +// static +void LLPanelLogin::updateLocationUI() +{ + std::string sim_string = LLURLSimString::sInstance.mSimString; + if (!sim_string.empty()) + { + // Replace "<Type region name>" with this region name + LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo"); + combo->remove(2); + combo->add( sim_string ); + combo->setTextEntry(sim_string); + combo->setCurrentByIndex( 2 ); + } +} + // static void LLPanelLogin::closePanel() { diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index acb2001c22f..8f24450c086 100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -70,6 +70,7 @@ class LLPanelLogin: static void addServer(const std::string& server, S32 domain_name); static void refreshLocation( bool force_visible ); + static void updateLocationUI(); static void getFields(std::string *firstname, std::string *lastname, std::string *password); @@ -99,7 +100,7 @@ class LLPanelLogin: static void onPassKey(LLLineEditor* caller, void* user_data); static void onSelectServer(LLUICtrl*, void*); static void onServerComboLostFocus(LLFocusableElement*); - + private: LLPointer<LLUIImage> mLogoImage; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f953a45890d..31b30344bef 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -50,6 +50,7 @@ #include "llviewquery.h" #include "llxmltree.h" +#include "llslurl.h" //#include "llviewercamera.h" #include "llrender.h" @@ -828,9 +829,12 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { // special case SLURLs - if ( slurl ) + if ( drop && slurl ) { LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); + LLPanelLogin::refreshLocation( true ); + LLPanelLogin::updateLocationUI(); return TRUE; }; -- GitLab From c272582ab78d43c595eefb843126c999c09dfd4f Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 3 Dec 2009 11:48:28 -0800 Subject: [PATCH 017/521] Change API to no longer include slurl argument (its a platform-agnostic policy), add some code (not working yet) to implement DND on the mac --- indra/llwindow/llwindowcallbacks.cpp | 4 +- indra/llwindow/llwindowcallbacks.h | 11 +++- indra/llwindow/llwindowmacosx.cpp | 96 ++++++++++++++++++++++++++-- indra/llwindow/llwindowmacosx.h | 13 +++- indra/newview/llviewerwindow.cpp | 22 ++++--- indra/newview/llviewerwindow.h | 2 +- 6 files changed, 125 insertions(+), 23 deletions(-) diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 3b0aeeab1fa..a6d23527327 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,9 +163,9 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } -BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl ) +LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) { - return FALSE; + return LLWindowCallbacks::DND_NONE; } BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window) diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 1b4a6cbda22..a109879da73 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -68,10 +68,17 @@ class LLWindowCallbacks virtual void handleWindowBlock(LLWindow *window); // window is taking over CPU for a while virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); - virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); - + + enum DragNDropResult { + DND_NONE = 0, // No drop allowed + DND_MOVE, // Drop accepted would result in a "move" operation + DND_COPY, // Drop accepted would result in a "copy" operation + DND_LINK // Drop accepted would result in a "link" operation + }; + virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); + virtual void handlePingWatchdog(LLWindow *window, const char * msg); virtual void handlePauseWatchdog(LLWindow *window); virtual void handleResumeWatchdog(LLWindow *window); diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index af9a30cb257..0acda8ab3a2 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -499,8 +499,9 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits // Set up window event handlers (some window-related events ONLY go to window handlers.) InstallStandardEventHandler(GetWindowEventTarget(mWindow)); - InstallWindowEventHandler (mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler - + InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler + InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this ); + InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this ); } { @@ -2172,11 +2173,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e } else { - MASK mask = 0; - if(modifiers & shiftKey) { mask |= MASK_SHIFT; } - if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; } - if(modifiers & optionKey) { mask |= MASK_ALT; } - + MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); + llassert( actualType == typeUnicodeText ); // The result is a UTF16 buffer. Pass the characters in turn to handleUnicodeChar. @@ -3377,3 +3375,87 @@ std::vector<std::string> LLWindowMacOSX::getDynamicFallbackFontList() return std::vector<std::string>(); } +// static +MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers) +{ + MASK mask = 0; + if(modifiers & shiftKey) { mask |= MASK_SHIFT; } + if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; } + if(modifiers & optionKey) { mask |= MASK_ALT; } + return mask; +} + +OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, + void * handlerRefCon, DragRef theDrag) +{ + LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; + return self->handleDragNDrop(theDrag, false); +} + +OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, + DragRef theDrag) +{ + LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; + return self->handleDragNDrop(theDrag, true); + +} + +OSErr LLWindowMacOSX::handleDragNDrop(DragRef theDrag, bool drop) +{ + OSErr result = noErr; + + UInt16 num_items = 0; + ::CountDragItems(theDrag, &num_items); + if (1 == num_items) + { + SInt16 modifiers, mouseDownModifiers, mouseUpModifiers; + ::GetDragModifiers(theDrag, &modifiers, &mouseDownModifiers, &mouseUpModifiers); + MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); + + Point mouse_point; + // This will return the mouse point in global screen coords + ::GetDragMouse(theDrag, &mouse_point, NULL); + LLCoordScreen screen_coords(mouse_point.v, mouse_point.h); + LLCoordGL gl_pos; + convertCoords(screen_coords, &gl_pos); + + DragItemRef theItemRef; + ::GetDragItemReferenceNumber(theDrag, 0, &theItemRef); + + UInt16 numFlavors = 0; + ::CountDragItemFlavors(theDrag, theItemRef, &numFlavors); + + FlavorType theType = kScrapFlavorTypeUnicode; + std::string url; + for (UInt16 i=0; i<numFlavors; i++) + { + ::GetFlavorType(theDrag, theItemRef, i, &theType); + + printf("Drag Flavor: '%lu'", theType); + fflush(stdout); + } + + Size size = 1024; + ::GetFlavorDataSize(theDrag, theItemRef, theType, &size); + + ::GetFlavorData(theDrag, theItemRef, theType, mDragData, &size, 0); + url = mDragData; + + printf("Drag Flavor: '%lu' - Drag data : %s", theType, url.c_str()); + fflush(stdout); + + LLWindowCallbacks::DragNDropResult res = + mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url); + + if (LLWindowCallbacks::DND_NONE == res) + { + result = dragNotAcceptedErr; + } + } + else { + result = dragNotAcceptedErr; + } + + return result; +} + diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 17074080eb0..24e44417f50 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -160,8 +160,12 @@ class LLWindowMacOSX : public LLWindow void adjustCursorDecouple(bool warpingMouse = false); void fixWindowSize(void); void stopDockTileBounce(); - - + static MASK modifiersToMask(SInt16 modifiers); + static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, + void * handlerRefCon, DragRef theDrag); + static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag); + OSErr handleDragNDrop(DragRef theDrag, bool drop); + // // Platform specific variables // @@ -198,13 +202,16 @@ class LLWindowMacOSX : public LLWindow NMRec mBounceRec; LLTimer mBounceTimer; - // Imput method management through Text Service Manager. + // Input method management through Text Service Manager. TSMDocumentID mTSMDocument; BOOL mLanguageTextInputAllowed; ScriptCode mTSMScriptCode; LangCode mTSMLangCode; LLPreeditor* mPreeditor; + // Storage for drag data + char mDragData[1024]; + static BOOL sUseMultGL; friend class LLWindowManager; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f953a45890d..fe6c9439bb0 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -822,16 +822,16 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS return TRUE; } -BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl ) +LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data) { - BOOL result = FALSE; + LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE; if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { // special case SLURLs - if ( slurl ) + if ( std::string::npos != data.find("slurl.com") ) { LLURLDispatcher::dispatch( data, NULL, true ); - return TRUE; + return LLWindowCallbacks::DND_MOVE; }; LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); @@ -863,24 +863,30 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mas // XXX This shouldn't be necessary, should it ?!? obj->getMediaImpl(object_face)->navigateReload(); obj->sendMediaDataUpdate(); + + result = LLWindowCallbacks::DND_COPY; } else { // just navigate to the URL obj->getMediaImpl(object_face)->navigateTo(url); + + result = LLWindowCallbacks::DND_LINK; } LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); mDragHoveredObject = NULL; + } else { mDragHoveredObject = obj; // Highlight the dragged object LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + + result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } - result = TRUE; } } - if (!result && !mDragHoveredObject.isNull()) + if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull()) { LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); mDragHoveredObject = NULL; @@ -3312,8 +3318,8 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans } else { - llwarns << "List of last picks is empty" << llendl; - llwarns << "Using stub pick" << llendl; + lldebugs << "List of last picks is empty" << llendl; + lldebugs << "Using stub pick" << llendl; mLastPick = LLPickInfo(); } diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 11d19cf24d9..dc58292a6af 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl); + /*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); -- GitLab From ff53d4ff9b497f4f0f30035d7e02e6df290db6a4 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 3 Dec 2009 12:19:02 -0800 Subject: [PATCH 018/521] Fix Windows build based on API change to handleDragNDrop() --- indra/llwindow/lldragdropwin32.cpp | 4 ++-- indra/llwindow/llwindowwin32.cpp | 4 ++-- indra/llwindow/llwindowwin32.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 74f96f6da3c..a96f04ff1f2 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -158,7 +158,7 @@ class LLDragDropWin32Target: window_imp->convertCoords(cursor_coord_window, &gl_coord); MASK mask = gKeyboard->currentMask(TRUE); - bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ), mIsSlurl ); + bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); if ( allowed_to_drop ) *pdwEffect = DROPEFFECT_COPY; else @@ -214,7 +214,7 @@ class LLDragDropWin32Target: MASK mask = gKeyboard->currentMask( TRUE ); // actually do the drop - window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl, mIsSlurl ); + window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl ); }; *pdwEffect = DROPEFFECT_COPY; diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 78bc3b9c587..dc1e2c017c5 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -3581,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng // final stage of handling drop requests - both from WM_DROPFILES message // for files and via IDropTarget interface requests. -BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl ) +BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ) { - return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url, is_slurl ); + return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url ); } // Handle WM_IME_REQUEST message. diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 7f7acd5751c..e99c26b7f1f 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); - BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl ); + BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ); static std::vector<std::string> getDynamicFallbackFontList(); -- GitLab From bfe66526c83d260d3e69971d30786d1e061c2c47 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 3 Dec 2009 17:01:58 -0800 Subject: [PATCH 019/521] Rewrote LLWindowMacOSX::handleDragNDrop() to use pasteboard manager instead of old, busted scrap manager to extract the data. Also fixed a mouse coordinate issue that caused drag tracking to be off. --- indra/llwindow/llwindowmacosx.cpp | 141 +++++++++++++++++++----------- indra/llwindow/llwindowmacosx.h | 3 - 2 files changed, 92 insertions(+), 52 deletions(-) diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 0acda8ab3a2..87296b1202b 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -3386,75 +3386,118 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers) } OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, - void * handlerRefCon, DragRef theDrag) + void * handlerRefCon, DragRef drag) { + OSErr result = noErr; LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; - return self->handleDragNDrop(theDrag, false); + + lldebugs << "drag tracking handler, message = " << message << llendl; + + switch(message) + { + case kDragTrackingInWindow: + result = self->handleDragNDrop(drag, false); + break; + + case kDragTrackingEnterHandler: + case kDragTrackingLeaveHandler: + // TODO: We probably want to do something clever for these (at least for the LeaveHandler). + break; + + default: + break; + } + + return result; } OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, - DragRef theDrag) + DragRef drag) { LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; - return self->handleDragNDrop(theDrag, true); + return self->handleDragNDrop(drag, true); } -OSErr LLWindowMacOSX::handleDragNDrop(DragRef theDrag, bool drop) +OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop) { - OSErr result = noErr; + OSErr result = dragNotAcceptedErr; // overall function result + OSErr err = noErr; // for local error handling + + // Get the mouse position and modifiers of this drag. + SInt16 modifiers, mouseDownModifiers, mouseUpModifiers; + ::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers); + MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); + + Point mouse_point; + // This will return the mouse point in global screen coords + ::GetDragMouse(drag, &mouse_point, NULL); + LLCoordScreen screen_coords(mouse_point.h, mouse_point.v); + LLCoordGL gl_pos; + convertCoords(screen_coords, &gl_pos); - UInt16 num_items = 0; - ::CountDragItems(theDrag, &num_items); - if (1 == num_items) + // Look at the pasteboard and try to extract an URL from it + PasteboardRef pasteboard; + if(GetDragPasteboard(drag, &pasteboard) == noErr) { - SInt16 modifiers, mouseDownModifiers, mouseUpModifiers; - ::GetDragModifiers(theDrag, &modifiers, &mouseDownModifiers, &mouseUpModifiers); - MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); - - Point mouse_point; - // This will return the mouse point in global screen coords - ::GetDragMouse(theDrag, &mouse_point, NULL); - LLCoordScreen screen_coords(mouse_point.v, mouse_point.h); - LLCoordGL gl_pos; - convertCoords(screen_coords, &gl_pos); - - DragItemRef theItemRef; - ::GetDragItemReferenceNumber(theDrag, 0, &theItemRef); + ItemCount num_items = 0; + // Treat an error here as an item count of 0 + (void)PasteboardGetItemCount(pasteboard, &num_items); - UInt16 numFlavors = 0; - ::CountDragItemFlavors(theDrag, theItemRef, &numFlavors); - - FlavorType theType = kScrapFlavorTypeUnicode; - std::string url; - for (UInt16 i=0; i<numFlavors; i++) + // Only deal with single-item drags. + if(num_items == 1) { - ::GetFlavorType(theDrag, theItemRef, i, &theType); + PasteboardItemID item_id = NULL; + CFArrayRef flavors = NULL; + CFDataRef data = NULL; - printf("Drag Flavor: '%lu'", theType); - fflush(stdout); - } - - Size size = 1024; - ::GetFlavorDataSize(theDrag, theItemRef, theType, &size); - - ::GetFlavorData(theDrag, theItemRef, theType, mDragData, &size, 0); - url = mDragData; + err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based. + + // Try to extract an URL from the pasteboard + if(err == noErr) + { + err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors); + } + + if(err == noErr) + { + if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL)) + { + // This is an URL. + err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeURL, &data); + } + else if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeUTF8PlainText)) + { + // This is a string that might be an URL. + err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data); + } - printf("Drag Flavor: '%lu' - Drag data : %s", theType, url.c_str()); - fflush(stdout); + } - LLWindowCallbacks::DragNDropResult res = - mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url); - - if (LLWindowCallbacks::DND_NONE == res) - { - result = dragNotAcceptedErr; + if(flavors != NULL) + { + CFRelease(flavors); + } + + if(data != NULL) + { + std::string url; + url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data)); + CFRelease(data); + + if(!url.empty()) + { + LLWindowCallbacks::DragNDropResult res = + mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url); + + if (LLWindowCallbacks::DND_NONE != res) + { + result = noErr; + } + } + } } } - else { - result = dragNotAcceptedErr; - } return result; } diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 24e44417f50..23e33a6e07e 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -209,9 +209,6 @@ class LLWindowMacOSX : public LLWindow LangCode mTSMLangCode; LLPreeditor* mPreeditor; - // Storage for drag data - char mDragData[1024]; - static BOOL sUseMultGL; friend class LLWindowManager; -- GitLab From fe0b027d4d7381a532bb0f14f64ecffdeb7190b6 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 3 Dec 2009 17:40:58 -0800 Subject: [PATCH 020/521] Added the LLWindowCallbacks::DragNDropAction enum, and made the mac implementation and the cross-platform window callbacks use it (instead of 'bool drop'). This will break the windows impl until someone fixes it to match. --- indra/llwindow/llwindowcallbacks.cpp | 2 +- indra/llwindow/llwindowcallbacks.h | 9 +- indra/llwindow/llwindowmacosx.cpp | 13 +-- indra/llwindow/llwindowmacosx.h | 3 +- indra/newview/llviewerwindow.cpp | 122 ++++++++++++++++----------- indra/newview/llviewerwindow.h | 2 +- 6 files changed, 91 insertions(+), 60 deletions(-) diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index a6d23527327..6d9f012cc32 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da { } -LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data ) +LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data ) { return LLWindowCallbacks::DND_NONE; } diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index a109879da73..42add8dde07 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -70,6 +70,13 @@ class LLWindowCallbacks virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); + + enum DragNDropAction { + DNDA_START_TRACKING = 0,// Start tracking an incoming drag + DNDA_TRACK, // User is dragging an incoming drag around the window + DNDA_STOP_TRACKING, // User is no longer dragging an incoming drag around the window (may have either cancelled or dropped on the window) + DNDA_DROPPED // User dropped an incoming drag on the window (this is the "commit" event) + }; enum DragNDropResult { DND_NONE = 0, // No drop allowed @@ -77,7 +84,7 @@ class LLWindowCallbacks DND_COPY, // Drop accepted would result in a "copy" operation DND_LINK // Drop accepted would result in a "link" operation }; - virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); + virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data); virtual void handlePingWatchdog(LLWindow *window, const char * msg); virtual void handlePauseWatchdog(LLWindow *window); diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 87296b1202b..02fa9df22de 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -3396,12 +3396,15 @@ OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef switch(message) { case kDragTrackingInWindow: - result = self->handleDragNDrop(drag, false); + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK); break; case kDragTrackingEnterHandler: + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING); + break; + case kDragTrackingLeaveHandler: - // TODO: We probably want to do something clever for these (at least for the LeaveHandler). + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING); break; default: @@ -3415,11 +3418,11 @@ OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefC DragRef drag) { LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; - return self->handleDragNDrop(drag, true); + return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED); } -OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop) +OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action) { OSErr result = dragNotAcceptedErr; // overall function result OSErr err = noErr; // for local error handling @@ -3488,7 +3491,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop) if(!url.empty()) { LLWindowCallbacks::DragNDropResult res = - mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url); + mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url); if (LLWindowCallbacks::DND_NONE != res) { diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 23e33a6e07e..6af54c5471f 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -34,6 +34,7 @@ #define LL_LLWINDOWMACOSX_H #include "llwindow.h" +#include "llwindowcallbacks.h" #include "lltimer.h" @@ -164,7 +165,7 @@ class LLWindowMacOSX : public LLWindow static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef theDrag); static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag); - OSErr handleDragNDrop(DragRef theDrag, bool drop); + OSErr handleDragNDrop(DragRef theDrag, LLWindowCallbacks::DragNDropAction action); // // Platform specific variables diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index e80a2ae11c0..fed676775cb 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -823,71 +823,91 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS return TRUE; } -LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data) +LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data) { LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE; if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { - // special case SLURLs - if ( drop && std::string::npos != data.find("slurl.com") ) + + switch(action) { - LLURLDispatcher::dispatch( data, NULL, true ); - LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); - LLPanelLogin::refreshLocation( true ); - LLPanelLogin::updateLocationUI(); - return LLWindowCallbacks::DND_MOVE; - }; + // Much of the handling for these two cases is the same. + case LLWindowCallbacks::DNDA_TRACK: + case LLWindowCallbacks::DNDA_DROPPED: + { + bool drop = (LLWindowCallbacks::DNDA_DROPPED == action); + + // special case SLURLs + if ( drop && std::string::npos != data.find("slurl.com") ) + { + LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); + LLPanelLogin::refreshLocation( true ); + LLPanelLogin::updateLocationUI(); + return LLWindowCallbacks::DND_MOVE; + }; - LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); - LLUUID object_id = pick_info.getObjectID(); - S32 object_face = pick_info.mObjectFace; - std::string url = data; + LLUUID object_id = pick_info.getObjectID(); + S32 object_face = pick_info.mObjectFace; + std::string url = data; - llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; - LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); - - if (obj && obj->permModify()) - { - LLTextureEntry *te = obj->getTE(object_face); - if (te) - { - if (drop) + LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); + + if (obj && obj->permModify()) { - if (! te->hasMedia()) + LLTextureEntry *te = obj->getTE(object_face); + if (te) { - // Create new media entry - LLSD media_data; - // XXX Should we really do Home URL too? - media_data[LLMediaEntry::HOME_URL_KEY] = url; - media_data[LLMediaEntry::CURRENT_URL_KEY] = url; - media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; - obj->syncMediaData(object_face, media_data, true, true); - // XXX This shouldn't be necessary, should it ?!? - obj->getMediaImpl(object_face)->navigateReload(); - obj->sendMediaDataUpdate(); - - result = LLWindowCallbacks::DND_COPY; - } - else { - // just navigate to the URL - obj->getMediaImpl(object_face)->navigateTo(url); - - result = LLWindowCallbacks::DND_LINK; + if (drop) + { + if (! te->hasMedia()) + { + // Create new media entry + LLSD media_data; + // XXX Should we really do Home URL too? + media_data[LLMediaEntry::HOME_URL_KEY] = url; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; + obj->syncMediaData(object_face, media_data, true, true); + // XXX This shouldn't be necessary, should it ?!? + obj->getMediaImpl(object_face)->navigateReload(); + obj->sendMediaDataUpdate(); + + result = LLWindowCallbacks::DND_COPY; + } + else { + // just navigate to the URL + obj->getMediaImpl(object_face)->navigateTo(url); + + result = LLWindowCallbacks::DND_LINK; + } + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = NULL; + + } + else { + mDragHoveredObject = obj; + // Highlight the dragged object + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + + result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; + } } - LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); - mDragHoveredObject = NULL; - - } - else { - mDragHoveredObject = obj; - // Highlight the dragged object - LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); - - result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } } + break; + + case LLWindowCallbacks::DNDA_START_TRACKING: + // No special handling here yet -- we'll actually start tracking on the first DNDA_TRACK event. + break; + + case LLWindowCallbacks::DNDA_STOP_TRACKING: + // The cleanup case below will make sure things are unhilighted if necessary. + break; } if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull()) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 2543d1096f4..e209ff1ad97 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks /*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask); - /*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data); + /*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); -- GitLab From 4c33c54ce03bffd3ad75be3dccaed2d26a68e157 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 3 Dec 2009 19:02:12 -0800 Subject: [PATCH 021/521] Fix windows build to now use DragNDropAction instead of a bool 'drop' --- indra/llwindow/lldragdropwin32.cpp | 95 +++++++++++++++++++++++++----- indra/llwindow/llwindowwin32.cpp | 4 +- indra/llwindow/llwindowwin32.h | 3 +- 3 files changed, 83 insertions(+), 19 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index a96f04ff1f2..4865570f07d 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -117,15 +117,45 @@ class LLDragDropWin32Target: { PVOID data = GlobalLock( stgmed.hGlobal ); mDropUrl = std::string( (char*)data ); - - mIsSlurl = ( mDropUrl.find( "slurl.com" ) != std::string::npos ); + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl ); + + switch (result) + { + case LLWindowCallbacks::DND_COPY: + *pdwEffect = DROPEFFECT_COPY; + break; + case LLWindowCallbacks::DND_LINK: + *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } + }; GlobalUnlock( stgmed.hGlobal ); ReleaseStgMedium( &stgmed ); }; - - *pdwEffect = DROPEFFECT_COPY; - SetFocus( mAppWindowHandle ); } else @@ -158,15 +188,25 @@ class LLDragDropWin32Target: window_imp->convertCoords(cursor_coord_window, &gl_coord); MASK mask = gKeyboard->currentMask(TRUE); - bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) ); - if ( allowed_to_drop ) + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_TRACK, std::string( "" ) ); + + switch (result) + { + case LLWindowCallbacks::DND_COPY: *pdwEffect = DROPEFFECT_COPY; - else - *pdwEffect = DROPEFFECT_NONE; - - // special case for SLURLs - you can always drop them on the client window and we need a different cursor - if ( mIsSlurl ) + break; + case LLWindowCallbacks::DND_LINK: *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } }; } else @@ -181,7 +221,14 @@ class LLDragDropWin32Target: // HRESULT __stdcall DragLeave( void ) { - mDropUrl = std::string(); + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + MASK mask = gKeyboard->currentMask(TRUE); + window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl ); + }; return S_OK; }; @@ -214,10 +261,26 @@ class LLDragDropWin32Target: MASK mask = gKeyboard->currentMask( TRUE ); // actually do the drop - window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl ); - }; + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_DROPPED, mDropUrl ); - *pdwEffect = DROPEFFECT_COPY; + switch (result) + { + case LLWindowCallbacks::DND_COPY: + *pdwEffect = DROPEFFECT_COPY; + break; + case LLWindowCallbacks::DND_LINK: + *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } + }; } else { diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index dc1e2c017c5..322b9c9a01c 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -3581,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng // final stage of handling drop requests - both from WM_DROPFILES message // for files and via IDropTarget interface requests. -BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ) +LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ) { - return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url ); + return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url ); } // Handle WM_IME_REQUEST message. diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index e99c26b7f1f..3e907cde00e 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -39,6 +39,7 @@ #include <windows.h> #include "llwindow.h" +#include "llwindowcallbacks.h" #include "lldragdropwin32.h" // Hack for async host by name @@ -113,7 +114,7 @@ class LLWindowWin32 : public LLWindow /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); - BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url ); + LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ); static std::vector<std::string> getDynamicFallbackFontList(); -- GitLab From 064c9be9aedf238530ccdc941861fd057580e5b1 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 16 Dec 2009 18:56:01 -0800 Subject: [PATCH 022/521] Don't allow drag if the cap URL is empty or if the whitelist does not pass --- indra/newview/llviewerwindow.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 5d2ca331d64..e3de2891a13 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -827,9 +827,9 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data) { LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE; + if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) { - switch(action) { // Much of the handling for these two cases is the same. @@ -854,11 +854,11 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi S32 object_face = pick_info.mObjectFace; std::string url = data; - llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); - if (obj && obj->permModify()) + if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty()) { LLTextureEntry *te = obj->getTE(object_face); if (te) @@ -881,10 +881,14 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi result = LLWindowCallbacks::DND_COPY; } else { - // just navigate to the URL - obj->getMediaImpl(object_face)->navigateTo(url); + // Check the whitelist + if (te->getMediaData()->checkCandidateUrl(url)) + { + // just navigate to the URL + obj->getMediaImpl(object_face)->navigateTo(url); - result = LLWindowCallbacks::DND_LINK; + result = LLWindowCallbacks::DND_LINK; + } } LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); mDragHoveredObject = NULL; -- GitLab From 3b110e76332712e7efb7972fb27324a763596b6c Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 18 Dec 2009 15:52:45 -0800 Subject: [PATCH 023/521] Fix crash when DnD onto an item with media but no impl --- indra/newview/llviewerwindow.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 6c73cc18dbf..08f598b2885 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -875,7 +875,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; obj->syncMediaData(object_face, media_data, true, true); // XXX This shouldn't be necessary, should it ?!? - obj->getMediaImpl(object_face)->navigateReload(); + if (obj->getMediaImpl(object_face)) + obj->getMediaImpl(object_face)->navigateReload(); obj->sendMediaDataUpdate(); result = LLWindowCallbacks::DND_COPY; @@ -885,8 +886,20 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi if (te->getMediaData()->checkCandidateUrl(url)) { // just navigate to the URL - obj->getMediaImpl(object_face)->navigateTo(url); - + if (obj->getMediaImpl(object_face)) + { + obj->getMediaImpl(object_face)->navigateTo(url); + } + else { + // This is very strange. Navigation should + // happen via the Impl, but we don't have one. + // This sends it to the server, which /should/ + // trigger us getting it. Hopefully. + LLSD media_data; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + obj->syncMediaData(object_face, media_data, true, true); + obj->sendMediaDataUpdate(); + } result = LLWindowCallbacks::DND_LINK; } } -- GitLab From 9204681c31184c4c76c8f41c48da76e174e3276a Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 18 Dec 2009 16:21:57 -0800 Subject: [PATCH 024/521] Fix slurl crashing, fix slurls highlighting objects, fix overlapping objects not "unhighlighting" --- indra/newview/llpanellogin.cpp | 2 ++ indra/newview/llviewerwindow.cpp | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index cdfa64ba57a..ce83ab3e374 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -688,6 +688,8 @@ void LLPanelLogin::refreshLocation( bool force_visible ) // static void LLPanelLogin::updateLocationUI() { + if (!sInstance) return; + std::string sim_string = LLURLSimString::sInstance.mSimString; if (!sim_string.empty()) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 08f598b2885..71fe8dd7732 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -839,12 +839,15 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi bool drop = (LLWindowCallbacks::DNDA_DROPPED == action); // special case SLURLs - if ( drop && std::string::npos != data.find("slurl.com") ) + if (std::string::npos != data.find("slurl.com") ) { - LLURLDispatcher::dispatch( data, NULL, true ); - LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); - LLPanelLogin::refreshLocation( true ); - LLPanelLogin::updateLocationUI(); + if (drop) + { + LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); + LLPanelLogin::refreshLocation( true ); + LLPanelLogin::updateLocationUI(); + } return LLWindowCallbacks::DND_MOVE; }; @@ -908,10 +911,13 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi } else { - mDragHoveredObject = obj; - // Highlight the dragged object - LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); - + if ( obj != mDragHoveredObject) + { + // Highlight the dragged object + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = obj; + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + } result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } } -- GitLab From 75c1fb26649df73770459a31641c434e156e2c17 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Tue, 5 Jan 2010 15:03:27 -0800 Subject: [PATCH 025/521] Build fix: add missing #include --- indra/newview/llviewerwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 21bf567b0c3..313f7284898 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -83,6 +83,7 @@ #include "lltooltip.h" #include "llmediaentry.h" #include "llurldispatcher.h" +#include "llurlsimstring.h" // newview includes #include "llagent.h" -- GitLab From e57f6a5cee1cf03df2bf43cd7a8b2c42c3918f8b Mon Sep 17 00:00:00 2001 From: Callum Prentice <callum@lindenlab.com> Date: Thu, 7 Jan 2010 14:21:57 -0800 Subject: [PATCH 026/521] Fix drag and drop for windows. Makes Win32 state machine behave more like Mac. --- indra/llwindow/lldragdropwin32.cpp | 2 +- indra/newview/llviewerwindow.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 4865570f07d..1e10626e8a0 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -189,7 +189,7 @@ class LLDragDropWin32Target: MASK mask = gKeyboard->currentMask(TRUE); LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, - LLWindowCallbacks::DNDA_TRACK, std::string( "" ) ); + LLWindowCallbacks::DNDA_TRACK, mDropUrl ); switch (result) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 02b81581886..81fcfc13c2d 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -835,6 +835,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi // Much of the handling for these two cases is the same. case LLWindowCallbacks::DNDA_TRACK: case LLWindowCallbacks::DNDA_DROPPED: + case LLWindowCallbacks::DNDA_START_TRACKING: { bool drop = (LLWindowCallbacks::DNDA_DROPPED == action); @@ -925,10 +926,6 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi } break; - case LLWindowCallbacks::DNDA_START_TRACKING: - // No special handling here yet -- we'll actually start tracking on the first DNDA_TRACK event. - break; - case LLWindowCallbacks::DNDA_STOP_TRACKING: // The cleanup case below will make sure things are unhilighted if necessary. break; -- GitLab From 5d2167c66a027cc5e4e002dca51e163b0d08fe42 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Fri, 8 Jan 2010 15:10:59 -0800 Subject: [PATCH 027/521] Fix a typo bug caught by pyflakes. eys.exit(1) -> sys.exit(1) --- indra/develop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index eaecdd0ab66..9d606da1d9b 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -504,7 +504,7 @@ def _get_generator(self): break else: print >> sys.stderr, 'Cannot find a Visual Studio installation!' - eys.exit(1) + sys.exit(1) return self._generator def _set_generator(self, gen): -- GitLab From 1500e90eccf237fb50f901528c5dc9d747f6d2f0 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 8 Jan 2010 15:11:03 -0800 Subject: [PATCH 028/521] Make sure mac build honors compile-time flag that en/disables OS drag and drop. Also fixed the cmake file to properly set LL_OS_DRAGDROP_ENABLED. --- indra/cmake/DragDrop.cmake | 6 ++---- indra/llwindow/llwindowmacosx.cpp | 5 +++++ indra/llwindow/llwindowmacosx.h | 3 +++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake index 739d011813a..e56264f1875 100644 --- a/indra/cmake/DragDrop.cmake +++ b/indra/cmake/DragDrop.cmake @@ -2,9 +2,7 @@ if (VIEWER) - OPTION (OS_DRAG_DROP - "Build the viewer with OS level drag and drop turned on or off" - ON) + set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off") if (OS_DRAG_DROP) @@ -13,7 +11,7 @@ if (VIEWER) endif (WINDOWS) if (DARWIN) - add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) endif (DARWIN) if (LINUX) diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index ffc44a1e84c..dc5a98756a3 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -500,8 +500,10 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits // Set up window event handlers (some window-related events ONLY go to window handlers.) InstallStandardEventHandler(GetWindowEventTarget(mWindow)); InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler +#if LL_OS_DRAGDROP_ENABLED InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this ); InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this ); +#endif // LL_OS_DRAGDROP_ENABLED } { @@ -3387,6 +3389,8 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers) return mask; } +#if LL_OS_DRAGDROP_ENABLED + OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef drag) { @@ -3507,3 +3511,4 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop return result; } +#endif // LL_OS_DRAGDROP_ENABLED diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index bd3e46ebb49..09b8891db09 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -161,10 +161,13 @@ class LLWindowMacOSX : public LLWindow void fixWindowSize(void); void stopDockTileBounce(); static MASK modifiersToMask(SInt16 modifiers); + +#if LL_OS_DRAGDROP_ENABLED static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef theDrag); static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag); OSErr handleDragNDrop(DragRef theDrag, LLWindowCallbacks::DragNDropAction action); +#endif // LL_OS_DRAGDROP_ENABLED // // Platform specific variables -- GitLab From e31d695247f89df1490afb4b9581f562fa99617c Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 8 Jan 2010 15:11:15 -0800 Subject: [PATCH 029/521] get rid of commented-out code --- indra/llwindow/llwindowwin32.cpp | 54 -------------------------------- 1 file changed, 54 deletions(-) diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 439c10c95cc..ed39786b37d 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2376,60 +2376,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ }; return 0; - // only useful for droppnig files - could be used for file upload dialog one day - //case WM_DROPFILES: - // { - // // HDROP contains what we need - // HDROP hdrop = (HDROP)w_param; - - // // get location in window space where drop occured and convert to OpenGL coordinate space - // POINT pt; - // DragQueryPoint( hdrop, &pt ); - // LLCoordGL gl_coord; - // LLCoordWindow cursor_coord_window( pt.x, pt.y ); - // window_imp->convertCoords(cursor_coord_window, &gl_coord); - - // // get payload (eventually, this needs to more advanced and grab size of payload dynamically - // static char file_name[ 1024 ]; - // DragQueryFileA( hdrop, 0, file_name, 1024 ); - // void* url = (void*)( file_name ); - - // // if it's a .URL or .lnk ("shortcut") file - // if ( std::string( file_name ).find( ".lnk" ) != std::string::npos || - // std::string( file_name ).find( ".URL" ) != std::string::npos ) - // { - // // read through file - looks like a 2 line file with second line URL= but who knows.. - // std::ifstream file_handle( file_name ); - // if ( file_handle.is_open() ) - // { - // std::string line; - // while ( ! file_handle.eof() ) - // { - // std::getline( file_handle, line ); - // if ( ! file_handle.eof() ) - // { - // std::string prefix( "URL=" ); - // if ( line.find( prefix, 0 ) != std::string::npos ) - // { - // line = line.substr( 4 ); // skip off the URL= bit - // strcpy( (char*)url, line.c_str() ); - // break; - // }; - // }; - // }; - // file_handle.close(); - // }; - // }; - - // MASK mask = gKeyboard->currentMask(TRUE); - - // if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url, false ) ) - // { - // return 0; - // }; - // } - - break; } -- GitLab From 010bfed411cffdb7037872a209adf51c77f48140 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Fri, 8 Jan 2010 15:50:09 -0800 Subject: [PATCH 030/521] DEV-44838 - This is an attempt at the minimal possible change to fix the quoting bug on windows. This commit is untested! The simplest approach to testing is to push into a repo watched by parabuild. Also, develop.py could be improved to use subprocess consistently across all platforms. Doing so could simplify the code, but until I understand how to test it better, I'm going to leave it alone. --- indra/develop.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/indra/develop.py b/indra/develop.py index 9d606da1d9b..27c3d0ca2ce 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -41,6 +41,7 @@ import socket import sys import commands +import subprocess class CommandError(Exception): pass @@ -576,16 +577,20 @@ def get_build_cmd(self): return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config} # devenv.com is CLI friendly, devenv.exe... not so much. - return ('"%sdevenv.com" %s.sln /build %s' % - (self.find_visual_studio(), self.project_name, self.build_type)) + executable = '%sdevenv.com' % (self.find_visual_studio(),) + cmd = ('"%s" %s.sln /build %s' % + (executable, self.project_name, self.build_type)) + return (executable, cmd) #return ('devenv.com %s.sln /build %s' % # (self.project_name, self.build_type)) def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' + assert name is not None, 'On windows an executable path must be given in name.' while retries: retries = retries - 1 print "develop.py tries to run:", command + ret = subprocess.call(command, executable=name) ret = os.system(command) print "got ret", ret, "from", command if ret: @@ -617,18 +622,19 @@ def run_vstool(self): if prev_build == self.build_type: # Only run vstool if the build type has changed. continue - vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') + + executable = os.path.join('tools','vstool','VSTool.exe') + vstool_cmd = (executable + ' --solution ' + os.path.join(build_dir,'SecondLife.sln') + ' --config ' + self.build_type + ' --startup secondlife-bin') print 'Running %r in %r' % (vstool_cmd, getcwd()) - self.run(vstool_cmd) + self.run(vstool_cmd, name=executable) print >> open(stamp, 'w'), self.build_type def run_build(self, opts, targets): cwd = getcwd() - build_cmd = self.get_build_cmd() + executable, build_cmd = self.get_build_cmd() for d in self.build_dirs(): try: @@ -637,11 +643,11 @@ def run_build(self, opts, targets): for t in targets: cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) print 'Running %r in %r' % (cmd, d) - self.run(cmd, retry_on=4, retries=3) + self.run(cmd, name=executable, retry_on=4, retries=3) else: cmd = '%s %s' % (build_cmd, ' '.join(opts)) print 'Running %r in %r' % (cmd, d) - self.run(cmd, retry_on=4, retries=3) + self.run(cmd, name=executable, retry_on=4, retries=3) finally: os.chdir(cwd) -- GitLab From 6b33d5955a2c4ff34c17b58dd4a23b53a3c1dde7 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Fri, 8 Jan 2010 17:42:22 -0800 Subject: [PATCH 031/521] DEV-44838 - See if the executable parameter to subprocess.Popen must be absolute on windows. --- indra/develop.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/develop.py b/indra/develop.py index 27c3d0ca2ce..dc1190699ce 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -587,6 +587,8 @@ def get_build_cmd(self): def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' assert name is not None, 'On windows an executable path must be given in name.' + if not os.path.isfile(name): + name = self.find_in_path(name) while retries: retries = retries - 1 print "develop.py tries to run:", command -- GitLab From 61bc236b355e19bf09851b79c7d73b7210b4a7af Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Fri, 8 Jan 2010 17:58:56 -0800 Subject: [PATCH 032/521] DEV-44838 - Remove a typo line which would cause duplicate executions for every run call. --- indra/develop.py | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index dc1190699ce..e19ecb7314c 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -593,7 +593,6 @@ def run(self, command, name=None, retry_on=None, retries=1): retries = retries - 1 print "develop.py tries to run:", command ret = subprocess.call(command, executable=name) - ret = os.system(command) print "got ret", ret, "from", command if ret: if name is None: -- GitLab From 8246b382b732a9b49c49a012274cd17ce1af4e94 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Fri, 8 Jan 2010 18:00:32 -0800 Subject: [PATCH 033/521] DEV-44838 - find_in_path() returns a list of candidates. Select the first. --- indra/develop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index e19ecb7314c..17ac1b38016 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -588,7 +588,7 @@ def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' assert name is not None, 'On windows an executable path must be given in name.' if not os.path.isfile(name): - name = self.find_in_path(name) + name = self.find_in_path(name)[0] while retries: retries = retries - 1 print "develop.py tries to run:", command -- GitLab From f37f806660f66b064490b9c14d724273dc67fcbb Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Mon, 11 Jan 2010 10:38:13 -0800 Subject: [PATCH 034/521] DEV-44838 - Fix a bug introduced by inconsistently changing the get_build_cmd() interface. --- indra/develop.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/develop.py b/indra/develop.py index 17ac1b38016..a20badcfba3 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -574,15 +574,15 @@ def get_build_cmd(self): if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]: config = '\"%s|Win32\"' % config - return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config} + executable = self.find_in_path('buildconsole') + cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable} + return (executable, cmd) # devenv.com is CLI friendly, devenv.exe... not so much. executable = '%sdevenv.com' % (self.find_visual_studio(),) cmd = ('"%s" %s.sln /build %s' % (executable, self.project_name, self.build_type)) return (executable, cmd) - #return ('devenv.com %s.sln /build %s' % - # (self.project_name, self.build_type)) def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' -- GitLab From 11eac588c2e26b42e269da9394bbb8918552fb1c Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Mon, 11 Jan 2010 10:45:01 -0800 Subject: [PATCH 035/521] DEV-44838 - Fix another bug introduced by passing "executable" in WindowsSetup.run(); find_in_path() does not handle absolute paths, but name is guaranteed to be an absolute path. This explains the bogus message in the log of the form "process $foo exited with nonzero status; process $foo is not found", described here: https://jira.lindenlab.com/jira/browse/DEV-44838?focusedCommentId=328441&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_328441 --- indra/develop.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/indra/develop.py b/indra/develop.py index a20badcfba3..71569f15d23 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -595,10 +595,7 @@ def run(self, command, name=None, retry_on=None, retries=1): ret = subprocess.call(command, executable=name) print "got ret", ret, "from", command if ret: - if name is None: - name = command.split(None, 1)[0] - path = self.find_in_path(name) - if not path: + if not name: error = 'was not found' else: error = 'exited with status %d' % ret -- GitLab From 33df069238130a9e8c02a2aadcd41956780397db Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Mon, 11 Jan 2010 11:07:04 -0800 Subject: [PATCH 036/521] DEV-44838 - Fix a silly bug in yet another place: find_in_path returns a list, so select the first element. --- indra/develop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index 71569f15d23..897fbb6544c 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -574,7 +574,7 @@ def get_build_cmd(self): if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]: config = '\"%s|Win32\"' % config - executable = self.find_in_path('buildconsole') + executable = self.find_in_path('buildconsole')[0] cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable} return (executable, cmd) -- GitLab From 2d337ca8c6b05ecd7e8d4a8f0c3d88fabcc5bcbc Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Mon, 11 Jan 2010 12:30:27 -0800 Subject: [PATCH 037/521] DEV-44838 - See if buildconsole is confused by having the absolute path (with spaces) in the commandline. To accomplish this we put relative paths in the command string but lookup the absolute path for the executable parameter. --- indra/develop.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/indra/develop.py b/indra/develop.py index 897fbb6544c..b8fdd1a8150 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -574,7 +574,7 @@ def get_build_cmd(self): if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]: config = '\"%s|Win32\"' % config - executable = self.find_in_path('buildconsole')[0] + executable = 'buildconsole' cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable} return (executable, cmd) @@ -587,18 +587,17 @@ def get_build_cmd(self): def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' assert name is not None, 'On windows an executable path must be given in name.' - if not os.path.isfile(name): - name = self.find_in_path(name)[0] + if os.path.isfile(name): + path = name + else: + path = self.find_in_path(name)[0] while retries: retries = retries - 1 print "develop.py tries to run:", command - ret = subprocess.call(command, executable=name) + ret = subprocess.call(command, executable=path) print "got ret", ret, "from", command if ret: - if not name: - error = 'was not found' - else: - error = 'exited with status %d' % ret + error = 'exited with status %d' % ret if retry_on is not None and retry_on == ret: print "Retrying... the command %r %s" % (name, error) else: -- GitLab From a74d494dd7c13e0307ee5ba526ba021583b1f2b5 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 11 Jan 2010 16:41:08 -0800 Subject: [PATCH 038/521] Fix unposted bug: drag feedback didn't check whitelist http://codereview.lindenlab.com/274039/show --- indra/newview/llviewerwindow.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 81fcfc13c2d..5dd640539f4 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -912,14 +912,18 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi } else { - if ( obj != mDragHoveredObject) + // Check the whitelist, if there's media (otherwise just show it) + if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url)) { - // Highlight the dragged object - LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); - mDragHoveredObject = obj; - LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + if ( obj != mDragHoveredObject) + { + // Highlight the dragged object + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = obj; + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + } + result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } - result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } } } -- GitLab From a3ca95e3bd0e288792f6024d9487d618730fd40f Mon Sep 17 00:00:00 2001 From: Callum Prentice <callum@lindenlab.com> Date: Mon, 11 Jan 2010 17:26:28 -0800 Subject: [PATCH 039/521] Fix that stops "Start Location" corruption if you drag an invalid http://slurl.com SLURL onto the login page --- indra/newview/llviewerwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 81fcfc13c2d..c5c9e49934f 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -840,7 +840,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi bool drop = (LLWindowCallbacks::DNDA_DROPPED == action); // special case SLURLs - if (std::string::npos != data.find("slurl.com") ) + if ( LLSLURL::isSLURL( data ) ) { if (drop) { -- GitLab From b06d655727c15530c1f65ccea83ab911f42e04ff Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 11 Jan 2010 18:44:00 -0800 Subject: [PATCH 040/521] Add cursor-change override while dragging on the mac This changes the setCursor() call in LLWindowMacOSX to be ignored if we're currently dragging via the OS http://codereview.lindenlab.com/273045 --- indra/llwindow/llwindowmacosx.cpp | 38 +++++++++++++++++++++++++++++-- indra/llwindow/llwindowmacosx.h | 2 ++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index dc5a98756a3..783d1f39cab 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -278,6 +278,8 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks, mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator); mGlobalHandlerRef = NULL; mWindowHandlerRef = NULL; + + mDragOverrideCursor = -1; // We're not clipping yet SetRect( &mOldMouseClip, 0, 0, 0, 0 ); @@ -2795,6 +2797,8 @@ void LLWindowMacOSX::setCursor(ECursorType cursor) { OSStatus result = noErr; + if (mDragOverrideCursor != -1) return; + if (cursor == UI_CURSOR_ARROW && mBusyCount > 0) { @@ -3499,10 +3503,40 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop LLWindowCallbacks::DragNDropResult res = mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url); - if (LLWindowCallbacks::DND_NONE != res) + switch (res) { + case LLWindowCallbacks::DND_NONE: // No drop allowed + if (action == LLWindowCallbacks::DNDA_TRACK) + { + mDragOverrideCursor = kThemeNotAllowedCursor; + } + else { + mDragOverrideCursor = -1; + } + break; + case LLWindowCallbacks::DND_MOVE: // Drop accepted would result in a "move" operation + mDragOverrideCursor = kThemePointingHandCursor; + result = noErr; + break; + case LLWindowCallbacks::DND_COPY: // Drop accepted would result in a "copy" operation + mDragOverrideCursor = kThemeCopyArrowCursor; + result = noErr; + break; + case LLWindowCallbacks::DND_LINK: // Drop accepted would result in a "link" operation: + mDragOverrideCursor = kThemeAliasArrowCursor; + result = noErr; + break; + default: + mDragOverrideCursor = -1; + break; + } + if (mDragOverrideCursor == -1) { - result = noErr; + SetThemeCursor(kThemeArrowCursor); + } + else { + SetThemeCursor(mDragOverrideCursor); } + } } } diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 09b8891db09..377f10b6d48 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -201,6 +201,8 @@ class LLWindowMacOSX : public LLWindow U32 mFSAASamples; BOOL mForceRebuild; + S32 mDragOverrideCursor; + F32 mBounceTime; NMRec mBounceRec; LLTimer mBounceTimer; -- GitLab From df69302cd2f00dd44b5b34aeb3ba896ce7548556 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Tue, 12 Jan 2010 11:31:07 -0800 Subject: [PATCH 041/521] Add restoring of previous cursor to mac impl http://codereview.lindenlab.com/273045 --- indra/llwindow/llwindowmacosx.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 783d1f39cab..9ccd4c7f97d 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -2797,8 +2797,14 @@ void LLWindowMacOSX::setCursor(ECursorType cursor) { OSStatus result = noErr; - if (mDragOverrideCursor != -1) return; - + if (mDragOverrideCursor != -1) + { + // A drag is in progress...remember the requested cursor and we'll + // restore it when it is done + mCurrentCursor = cursor; + return; + } + if (cursor == UI_CURSOR_ARROW && mBusyCount > 0) { @@ -3529,11 +3535,19 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop mDragOverrideCursor = -1; break; } + // This overrides the cursor being set by setCursor. + // This is a bit of a hack workaround because lots of areas + // within the viewer just blindly set the cursor. if (mDragOverrideCursor == -1) { - SetThemeCursor(kThemeArrowCursor); + // Restore the cursor + ECursorType temp_cursor = mCurrentCursor; + // get around the "setting the same cursor" code in setCursor() + mCurrentCursor = UI_CURSOR_COUNT; + setCursor(temp_cursor); } else { + // Override the cursor SetThemeCursor(mDragOverrideCursor); } -- GitLab From dd7840aa9e0627430753522c4480212cf032463e Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Wed, 13 Jan 2010 15:47:57 -0800 Subject: [PATCH 042/521] Add an assertion for my sanity. --- indra/develop.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/develop.py b/indra/develop.py index b8fdd1a8150..59722c4bc2e 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -630,6 +630,8 @@ def run_vstool(self): print >> open(stamp, 'w'), self.build_type def run_build(self, opts, targets): + for t in targets: + assert t.strip(), 'Unexpected empty targets: ' + repr(targets) cwd = getcwd() executable, build_cmd = self.get_build_cmd() -- GitLab From bee98d70e3a8eca7f6f6f80d4ee6a14939771ae0 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Wed, 13 Jan 2010 16:08:30 -0800 Subject: [PATCH 043/521] DEV-44838 - Add the string "DEV-44838" to assertion failures to future devs understand preconditions on windows run(). --- indra/develop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index 59722c4bc2e..a8a7b63aa7f 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -586,7 +586,7 @@ def get_build_cmd(self): def run(self, command, name=None, retry_on=None, retries=1): '''Run a program. If the program fails, raise an exception.''' - assert name is not None, 'On windows an executable path must be given in name.' + assert name is not None, 'On windows an executable path must be given in name. [DEV-44838]' if os.path.isfile(name): path = name else: -- GitLab From d194d95391f03b8a60c779f50f830df014e4b71e Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Wed, 13 Jan 2010 16:09:07 -0800 Subject: [PATCH 044/521] DEV-44838 - Fix a logic flaw in the windows run() retry code which would re-execute a process if its exit status was 0. --- indra/develop.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/develop.py b/indra/develop.py index a8a7b63aa7f..0a2d3c5e521 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -596,7 +596,9 @@ def run(self, command, name=None, retry_on=None, retries=1): print "develop.py tries to run:", command ret = subprocess.call(command, executable=path) print "got ret", ret, "from", command - if ret: + if ret == 0: + break + else: error = 'exited with status %d' % ret if retry_on is not None and retry_on == ret: print "Retrying... the command %r %s" % (name, error) -- GitLab From 228d37a8d72146d9baed57c7406a9324ce8c0175 Mon Sep 17 00:00:00 2001 From: Callum Prentice <callum@lindenlab.com> Date: Tue, 19 Jan 2010 11:52:41 -0800 Subject: [PATCH 045/521] Fix for EXT-4191 - Drag and Drop viewer resolves some slurls to "//" --- indra/newview/llviewerwindow.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 45e153049be..d4ffe70f249 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -824,8 +824,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi { if (drop) { - LLURLDispatcher::dispatch( data, NULL, true ); - LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); + LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) ); LLPanelLogin::refreshLocation( true ); LLPanelLogin::updateLocationUI(); } -- GitLab From 95fc42c3219151d085f139a8f239bdc5fb6b30f3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed <nat@lindenlab.com> Date: Tue, 19 Jan 2010 15:19:11 -0500 Subject: [PATCH 046/521] Ensure Lynx's Boost patch is in place -- Windows --- install.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.xml b/install.xml index 5069e44d46c..5cb960c506f 100644 --- a/install.xml +++ b/install.xml @@ -214,9 +214,9 @@ <key>windows</key> <map> <key>md5sum</key> - <string>6746ae9fd9aff98b15f7b9f0f40334ab</string> + <string>acbf7a4165a917a4e087879d1756b355</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20091204.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20100119.tar.bz2</uri> </map> </map> </map> -- GitLab From dab8a89df68fe29ce3794d7763e9890da5ff7ed2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed <nat@lindenlab.com> Date: Tue, 19 Jan 2010 12:23:25 -0800 Subject: [PATCH 047/521] Ensure Lynx's Boost patch is in place -- linux, linux64 --- install.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.xml b/install.xml index fdd7458384f..e94654e1757 100644 --- a/install.xml +++ b/install.xml @@ -200,16 +200,16 @@ <key>linux</key> <map> <key>md5sum</key> - <string>7085044567999489d82b9ed28f16e480</string> + <string>ee8e1b4bbcf137a84d6a85a1c51386ff</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100119.tar.bz2</uri> </map> <key>linux64</key> <map> <key>md5sum</key> - <string>b4aeefcba3d749f1e9f2a12c6f70192b</string> + <string>af4badd6b2c10bc4db82ff1256695892</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20100119.tar.bz2</uri> </map> <key>windows</key> <map> -- GitLab From 56c021f606d249e4b7ba334809b0332fe2fdcc11 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed <nat@lindenlab.com> Date: Tue, 19 Jan 2010 15:28:10 -0500 Subject: [PATCH 048/521] Ensure Lynx's Boost patch is in place -- darwin --- install.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.xml b/install.xml index fdd7458384f..e08676d869d 100644 --- a/install.xml +++ b/install.xml @@ -193,9 +193,9 @@ <key>darwin</key> <map> <key>md5sum</key> - <string>609c469ee1857723260b5a9943b9c2c1</string> + <string>84821102cb819257a66c8f38732647fc</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20091202.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20100119.tar.bz2</uri> </map> <key>linux</key> <map> -- GitLab From ae079af48d8ab6b1939168b0a2ac95876da66d24 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 20 Jan 2010 09:55:36 -0800 Subject: [PATCH 049/521] Add another setting controlling whether SLURL drag-and-drop performs a teleport --- indra/newview/app_settings/settings.xml | 13 ++- indra/newview/llviewerwindow.cpp | 146 +++++++++++++----------- 2 files changed, 90 insertions(+), 69 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9f261978e69..6096504b969 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5552,7 +5552,7 @@ <key>PrimMediaDragNDrop</key> <map> <key>Comment</key> - <string>Enable drag and drop</string> + <string>Enable drag and drop of URLs onto prim faces</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -10786,6 +10786,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>SLURLDragNDrop</key> + <map> + <key>Comment</key> + <string>Enable drag and drop of SLURLs onto the viewer</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>soundsbeacon</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 45e153049be..e743d3419ec 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -808,7 +808,10 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi { LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE; - if (gSavedSettings.getBOOL("PrimMediaDragNDrop")) + const bool prim_media_dnd_enabled = gSavedSettings.getBOOL("PrimMediaDragNDrop"); + const bool slurl_dnd_enabled = gSavedSettings.getBOOL("SLURLDragNDrop"); + + if ( prim_media_dnd_enabled || slurl_dnd_enabled ) { switch(action) { @@ -819,90 +822,96 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi { bool drop = (LLWindowCallbacks::DNDA_DROPPED == action); - // special case SLURLs - if ( LLSLURL::isSLURL( data ) ) + if (slurl_dnd_enabled) { - if (drop) + // special case SLURLs + if ( LLSLURL::isSLURL( data ) ) { - LLURLDispatcher::dispatch( data, NULL, true ); - LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); - LLPanelLogin::refreshLocation( true ); - LLPanelLogin::updateLocationUI(); - } - return LLWindowCallbacks::DND_MOVE; - }; + if (drop) + { + LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setString( LLSLURL::stripProtocol( data ) ); + LLPanelLogin::refreshLocation( true ); + LLPanelLogin::updateLocationUI(); + } + return LLWindowCallbacks::DND_MOVE; + }; + } - LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); + if (prim_media_dnd_enabled) + { + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); - LLUUID object_id = pick_info.getObjectID(); - S32 object_face = pick_info.mObjectFace; - std::string url = data; + LLUUID object_id = pick_info.getObjectID(); + S32 object_face = pick_info.mObjectFace; + std::string url = data; - lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; + lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl; - LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); + LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject())); - if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty()) - { - LLTextureEntry *te = obj->getTE(object_face); - if (te) + if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty()) { - if (drop) + LLTextureEntry *te = obj->getTE(object_face); + if (te) { - if (! te->hasMedia()) + if (drop) { - // Create new media entry - LLSD media_data; - // XXX Should we really do Home URL too? - media_data[LLMediaEntry::HOME_URL_KEY] = url; - media_data[LLMediaEntry::CURRENT_URL_KEY] = url; - media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; - obj->syncMediaData(object_face, media_data, true, true); - // XXX This shouldn't be necessary, should it ?!? - if (obj->getMediaImpl(object_face)) - obj->getMediaImpl(object_face)->navigateReload(); - obj->sendMediaDataUpdate(); - - result = LLWindowCallbacks::DND_COPY; - } - else { - // Check the whitelist - if (te->getMediaData()->checkCandidateUrl(url)) + if (! te->hasMedia()) { - // just navigate to the URL + // Create new media entry + LLSD media_data; + // XXX Should we really do Home URL too? + media_data[LLMediaEntry::HOME_URL_KEY] = url; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; + obj->syncMediaData(object_face, media_data, true, true); + // XXX This shouldn't be necessary, should it ?!? if (obj->getMediaImpl(object_face)) + obj->getMediaImpl(object_face)->navigateReload(); + obj->sendMediaDataUpdate(); + + result = LLWindowCallbacks::DND_COPY; + } + else { + // Check the whitelist + if (te->getMediaData()->checkCandidateUrl(url)) { - obj->getMediaImpl(object_face)->navigateTo(url); + // just navigate to the URL + if (obj->getMediaImpl(object_face)) + { + obj->getMediaImpl(object_face)->navigateTo(url); + } + else { + // This is very strange. Navigation should + // happen via the Impl, but we don't have one. + // This sends it to the server, which /should/ + // trigger us getting it. Hopefully. + LLSD media_data; + media_data[LLMediaEntry::CURRENT_URL_KEY] = url; + obj->syncMediaData(object_face, media_data, true, true); + obj->sendMediaDataUpdate(); + } + result = LLWindowCallbacks::DND_LINK; } - else { - // This is very strange. Navigation should - // happen via the Impl, but we don't have one. - // This sends it to the server, which /should/ - // trigger us getting it. Hopefully. - LLSD media_data; - media_data[LLMediaEntry::CURRENT_URL_KEY] = url; - obj->syncMediaData(object_face, media_data, true, true); - obj->sendMediaDataUpdate(); - } - result = LLWindowCallbacks::DND_LINK; } - } - LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); - mDragHoveredObject = NULL; + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = NULL; - } - else { - // Check the whitelist, if there's media (otherwise just show it) - if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url)) - { - if ( obj != mDragHoveredObject) + } + else { + // Check the whitelist, if there's media (otherwise just show it) + if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url)) { - // Highlight the dragged object - LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); - mDragHoveredObject = obj; - LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + if ( obj != mDragHoveredObject) + { + // Highlight the dragged object + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = obj; + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + } + result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } - result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; } } } @@ -915,7 +924,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi break; } - if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull()) + if (prim_media_dnd_enabled && + result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull()) { LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); mDragHoveredObject = NULL; -- GitLab From 5fc9d8bddad16b7d8dc6d481107a8ce690fdf731 Mon Sep 17 00:00:00 2001 From: Nathan Wilcox <inoshiro@lindenlab.com> Date: Wed, 20 Jan 2010 11:46:40 -0800 Subject: [PATCH 050/521] Remove a tab character from the end of a line to pass policy requirements. --- scripts/template_verifier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py index d5fc1192700..adcfcbcae63 100755 --- a/scripts/template_verifier.py +++ b/scripts/template_verifier.py @@ -103,7 +103,7 @@ def die(msg): PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer) DEVELOPMENT_ACCEPTABLE = ( compatibility.Same, compatibility.Newer, - compatibility.Older, compatibility.Mixed) + compatibility.Older, compatibility.Mixed) MAX_MASTER_AGE = 60 * 60 * 4 # refresh master cache every 4 hours -- GitLab From 5d8de7b7200c514bb874e4f60581c6df6cf3be5a Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Thu, 21 Jan 2010 10:52:58 -0800 Subject: [PATCH 051/521] getting chiclet stuff out of test floater since it causes a crash --- .../default/xui/en/floater_test_checkbox.xml | 79 ------------------- 1 file changed, 79 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml index 042b4226c34..9977e85a9d1 100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -71,83 +71,4 @@ name="font_checkbox" top_pad="14" width="150" /> - -<chiclet_im_p2p - height="25" - name="im_p2p_chiclet" - show_speaker="false" - width="25"> - <chiclet_im_p2p.chiclet_button - height="25" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - name="chiclet_button" - tab_stop="false" - width="25"/> - <chiclet_im_p2p.speaker - auto_update="true" - draw_border="false" - height="25" - left="25" - name="speaker" - visible="false" - width="20" /> - <chiclet_im_p2p.avatar_icon - bottom="3" - follows="left|top|bottom" - height="20" - left="2" - mouse_opaque="false" - name="avatar_icon" - width="21" /> - <chiclet_im_p2p.unread_notifications - height="25" - font_halign="center" - left="25" - mouse_opaque="false" - name="unread" - text_color="white" - v_pad="5" - visible="false" - width="20"/> - <chiclet_im_p2p.new_message_icon - bottom="11" - height="14" - image_name="Unread_Chiclet" - left="12" - name="new_message_icon" - visible="false" - width="14" /> -</chiclet_im_p2p> - - -<chiclet_offer - height="25" - name="offer_chiclet" - width="25"> - <chiclet_offer.chiclet_button - height="25" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - name="chiclet_button" - tab_stop="false" - width="25"/> - <chiclet_offer.icon - bottom="3" - default_icon="Generic_Object_Small" - follows="all" - height="19" - left="3" - mouse_opaque="false" - name="chiclet_icon" - width="19" /> - <chiclet_offer.new_message_icon - bottom="11" - height="14" - image_name="Unread_Chiclet" - left="12" - name="new_message_icon" - visible="false" - width="14" /> -</chiclet_offer> </floater> -- GitLab From 8cf95e16830521d5aa9467b1f4d84e4d1343bd31 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Fri, 22 Jan 2010 20:27:58 +0200 Subject: [PATCH 052/521] Fixed normal bug EXT-4486(nearby voice list not aligned correctly): Corrected indent of my_panel content. Changed the order of buttons of avatar list item, notice that it affects all avatar lists(on people panel, group chat participants, etc). --HG-- branch : product-engine --- indra/newview/llavatarlistitem.cpp | 12 ++++---- indra/newview/llavatarlistitem.h | 2 +- .../default/xui/en/floater_voice_controls.xml | 3 +- .../default/xui/en/panel_avatar_list_item.xml | 28 ++++++++++--------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 66ab32f3e88..2bcd0977175 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -440,17 +440,17 @@ LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap() // static void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) { + //speaking indicator width + padding + S32 speaking_indicator_width = avatar_item->getRect().getWidth() - avatar_item->mSpeakingIndicator->getRect().mLeft; + //profile btn width + padding - S32 profile_btn_width = avatar_item->getRect().getWidth() - avatar_item->mProfileBtn->getRect().mLeft; + S32 profile_btn_width = avatar_item->mSpeakingIndicator->getRect().mLeft - avatar_item->mProfileBtn->getRect().mLeft; //info btn width + padding S32 info_btn_width = avatar_item->mProfileBtn->getRect().mLeft - avatar_item->mInfoBtn->getRect().mLeft; - //speaking indicator width + padding - S32 speaking_indicator_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mSpeakingIndicator->getRect().mLeft; - // last interaction time textbox width + padding - S32 last_interaction_time_width = avatar_item->mSpeakingIndicator->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft; + S32 last_interaction_time_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft; // icon width + padding S32 icon_width = avatar_item->mAvatarName->getRect().mLeft - avatar_item->mAvatarIcon->getRect().mLeft; @@ -462,9 +462,9 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) sChildrenWidths[--index] = icon_width; sChildrenWidths[--index] = 0; // for avatar name we don't need its width, it will be calculated as "left available space" sChildrenWidths[--index] = last_interaction_time_width; - sChildrenWidths[--index] = speaking_indicator_width; sChildrenWidths[--index] = info_btn_width; sChildrenWidths[--index] = profile_btn_width; + sChildrenWidths[--index] = speaking_indicator_width; } void LLAvatarListItem::updateChildren() diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 479a4833cb9..61c0a8660e3 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -129,9 +129,9 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver * @see updateChildren() */ typedef enum e_avatar_item_child { + ALIC_SPEAKER_INDICATOR, ALIC_PROFILE_BUTTON, ALIC_INFO_BUTTON, - ALIC_SPEAKER_INDICATOR, ALIC_INTERACTION_TIME, ALIC_NAME, ALIC_ICON, diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml index f473a51ff6d..c4411db8c5b 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -56,7 +56,7 @@ height="18" default_icon_name="Generic_Person" layout="topleft" - left="0" + left="5" name="user_icon" top="0" width="18" /> @@ -78,6 +78,7 @@ follows="top|right" height="16" layout="topleft" + right="-3" name="speaking_indicator" left_pad="5" visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml index 615ade99a2b..c605975c8e1 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -65,28 +65,18 @@ height="15" layout="topleft" left_pad="5" + right="-72" name="last_interaction" text_color="LtGray_50" value="0s" width="24" /> - <output_monitor - auto_update="true" - follows="right" - draw_border="false" - height="16" - layout="topleft" - left_pad="5" - mouse_opaque="true" - name="speaking_indicator" - visible="true" - width="20" /> <button follows="right" height="16" image_pressed="Info_Press" image_unselected="Info_Over" left_pad="3" - right="-31" + right="-53" name="info_btn" top_delta="-2" width="16" /> @@ -96,9 +86,21 @@ image_overlay="ForwardArrow_Off" layout="topleft" left_pad="5" - right="-3" + right="-28" name="profile_btn" tool_tip="View profile" top_delta="-2" width="20" /> + <output_monitor + auto_update="true" + follows="right" + draw_border="false" + height="16" + layout="topleft" + left_pad="5" + right="-3" + mouse_opaque="true" + name="speaking_indicator" + visible="true" + width="20" /> </panel> -- GitLab From 69ead1e7987571e36f2a42e87093555bceb5885d Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Fri, 22 Jan 2010 20:27:58 +0200 Subject: [PATCH 053/521] Fixed normal bug EXT-4557 ([BSI] New IM session steals focus) --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_im_session.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 613530b7aa9..d2e54731573 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -11,7 +11,7 @@ can_dock="false" can_minimize="true" can_close="true" - visible="true" + visible="false" width="360" can_resize="true" min_width="250" -- GitLab From 48b4b3ab6a54423686af3a2d8d3679291951d7ef Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Fri, 22 Jan 2010 20:16:55 +0200 Subject: [PATCH 054/521] Removed a temporary comment. --HG-- branch : product-engine --- indra/newview/llfloaterreporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 2efae0c8dbf..4a1eb51dbe9 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -324,7 +324,7 @@ void LLFloaterReporter::setFromAvatar(const LLUUID& avatar_id, const std::string std::string avatar_link = LLSLURL::buildCommand("agent", mObjectID, "inspect"); childSetText("owner_name", avatar_link); - childSetText("object_name", avatar_name); // name + childSetText("object_name", avatar_name); childSetText("abuser_name_edit", avatar_name); } -- GitLab From 818ab4b493f97b6bd98f361518953a5f2d624c03 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Fri, 22 Jan 2010 22:10:20 +0200 Subject: [PATCH 055/521] Fixed bug EXT-4580 (Duplicated avatar's name appears in 'Group invitation' floater if use context menu for invitation). Because duplicated postBuild() calls, the "OK" button callback was set and *called* twice. --HG-- branch : product-engine --- indra/newview/llfloatergroups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 29f415bd439..c71764c2e54 100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp @@ -75,7 +75,7 @@ LLFloaterGroupPicker::~LLFloaterGroupPicker() void LLFloaterGroupPicker::setPowersMask(U64 powers_mask) { mPowersMask = powers_mask; - postBuild(); + init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), mPowersMask); } -- GitLab From ab0c9c6754836cb26a520d0a9b2d7bbdd13a5f32 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Fri, 22 Jan 2010 22:16:57 +0200 Subject: [PATCH 056/521] Fixed normal bugs EXT-4450 ([BSI] call buttons enabled when voice is disabled) and EXT-4313 (Should not be able to start a call when voice is disabled). Call buttons state now reacts on voice changes in time. - Added voiceWorking() method to LLVoiceClient to determine real availability of voice, because voiceEnabled() doesn't take into account possible errors. Perhaps there is no need in two methods- some investigation will be made and depending on its results they may become one non-static method. voiceWorking() uses state of voice client(mState) to determine voice availability. Also some states which are not currently counted by voiceWorking() as valid may be added if testing reveals problems. - To enable/disable call buttons in time, LLVoiceClientStatusObserver is used. Its trigger uses states from its enum only to skip updating button in some states(to avoid button blinking), but to determine button state LLVoiceClient's voiceWorking() is used. --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 13 +----- indra/newview/llavataractions.h | 4 +- indra/newview/llgrouplist.cpp | 4 ++ indra/newview/llpanelavatar.cpp | 31 +++++++++++++- indra/newview/llpanelavatar.h | 11 +++++ indra/newview/llpanelgroup.cpp | 33 ++++++++++----- indra/newview/llpanelgroup.h | 8 +++- indra/newview/llpanelimcontrolpanel.cpp | 54 ++++++++++++++++--------- indra/newview/llpanelimcontrolpanel.h | 12 +++++- indra/newview/llpanelpeople.cpp | 45 +++++++++------------ indra/newview/llpanelpeople.h | 9 ++++- indra/newview/llpanelpeoplemenus.cpp | 15 +------ indra/newview/llparticipantlist.cpp | 2 +- indra/newview/llvoiceclient.cpp | 5 +++ indra/newview/llvoiceclient.h | 2 + 15 files changed, 159 insertions(+), 89 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 40c9bb6afab..bb14c41cec8 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -263,18 +263,9 @@ bool LLAvatarActions::isCalling(const LLUUID &id) } //static -bool LLAvatarActions::canCall(const LLUUID &id) +bool LLAvatarActions::canCall() { - // For now we do not need to check whether passed UUID is ID of agent's friend. - // Use common check of Voice Client state. - { - // don't need to check online/offline status because "usual resident" (resident that is not a friend) - // can be only ONLINE. There is no way to see "usual resident" in OFFLINE status. If we see "usual - // resident" it automatically means that the resident is ONLINE. So to make a call to the "usual resident" - // we need to check only that "our" voice is enabled. - return LLVoiceClient::voiceEnabled(); - } - + return LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); } // static diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index a4504ae679b..ebfd40b796f 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -129,10 +129,10 @@ class LLAvatarActions static bool isCalling(const LLUUID &id); /** - * @return true if call to the resident can be made (resident is online and voice is enabled) + * @return true if call to the resident can be made */ - static bool canCall(const LLUUID &id); + static bool canCall(); /** * Invite avatar to a group. */ diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index e75d35bea41..e01709aa3a0 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -48,6 +48,7 @@ #include "lltextutil.h" #include "llviewercontrol.h" // for gSavedSettings #include "llviewermenu.h" // for gMenuHolder +#include "llvoiceclient.h" static LLDefaultChildRegistry::Register<LLGroupList> r("group_list"); S32 LLGroupListItem::sIconWidth = 0; @@ -271,6 +272,9 @@ bool LLGroupList::onContextMenuItemEnable(const LLSD& userdata) if (userdata.asString() == "activate") return gAgent.getGroupID() != selected_group_id; + if (userdata.asString() == "call") + return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking(); + return real_group_selected; } diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 85e95ca1d65..564c80a492c 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -165,6 +165,8 @@ BOOL LLPanelAvatarNotes::postBuild() resetControls(); resetData(); + gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this); + return TRUE; } @@ -337,6 +339,8 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes() if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); + if(LLVoiceClient::getInstance()) + LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this); } } @@ -346,6 +350,17 @@ void LLPanelAvatarNotes::changed(U32 mask) childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); } +// virtual +void LLPanelAvatarNotes::onChange(EStatusType status, const std::string &channelURI, bool proximal) +{ + if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) + { + return; + } + + childSetEnabled("call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()); +} + void LLPanelAvatarNotes::setAvatarId(const LLUUID& id) { if(id.notNull()) @@ -437,7 +452,6 @@ void LLPanelProfileTab::updateButtons() bool enable_map_btn = is_avatar_online && gAgent.isGodlike() || is_agent_mappable(getAvatarId()); childSetEnabled("show_on_map_btn", enable_map_btn); - childSetEnabled("call", LLAvatarActions::canCall(getAvatarId())); } ////////////////////////////////////////////////////////////////////////// @@ -485,6 +499,8 @@ BOOL LLPanelAvatarProfile::postBuild() pic = getChild<LLTextureCtrl>("real_world_pic"); pic->setFallbackImageName("default_profile_picture.j2c"); + gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this); + resetControls(); resetData(); @@ -757,6 +773,8 @@ LLPanelAvatarProfile::~LLPanelAvatarProfile() if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); + if(LLVoiceClient::getInstance()) + LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this); } } @@ -766,6 +784,17 @@ void LLPanelAvatarProfile::changed(U32 mask) childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); } +// virtual +void LLPanelAvatarProfile::onChange(EStatusType status, const std::string &channelURI, bool proximal) +{ + if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) + { + return; + } + + childSetEnabled("call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()); +} + void LLPanelAvatarProfile::setAvatarId(const LLUUID& id) { if(id.notNull()) diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 22efa5dc351..1174c72d60c 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -36,6 +36,7 @@ #include "llpanel.h" #include "llavatarpropertiesprocessor.h" #include "llcallingcard.h" +#include "llvoiceclient.h" class LLComboBox; class LLLineEditor; @@ -122,6 +123,7 @@ class LLPanelProfileTab class LLPanelAvatarProfile : public LLPanelProfileTab , public LLFriendObserver + , public LLVoiceClientStatusObserver { public: LLPanelAvatarProfile(); @@ -134,6 +136,10 @@ class LLPanelAvatarProfile */ virtual void changed(U32 mask); + // Implements LLVoiceClientStatusObserver::onChange() to enable the call + // button when voice is available + /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + /*virtual*/ void setAvatarId(const LLUUID& id); /** @@ -257,6 +263,7 @@ class LLPanelMyProfile class LLPanelAvatarNotes : public LLPanelProfileTab , public LLFriendObserver + , public LLVoiceClientStatusObserver { public: LLPanelAvatarNotes(); @@ -269,6 +276,10 @@ class LLPanelAvatarNotes */ virtual void changed(U32 mask); + // Implements LLVoiceClientStatusObserver::onChange() to enable the call + // button when voice is available + /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ BOOL postBuild(); diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index c30ef3221d4..1d447a22d73 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -101,6 +101,8 @@ LLPanelGroup::LLPanelGroup() LLPanelGroup::~LLPanelGroup() { LLGroupMgr::getInstance()->removeObserver(this); + if(LLVoiceClient::getInstance()) + LLVoiceClient::getInstance()->removeObserver(this); } void LLPanelGroup::onOpen(const LLSD& key) @@ -188,6 +190,8 @@ BOOL LLPanelGroup::postBuild() if(panel_general) panel_general->setupCtrls(this); + + gVoiceClient->addObserver(this); return TRUE; } @@ -300,6 +304,17 @@ void LLPanelGroup::changed(LLGroupChange gc) update(gc); } +// virtual +void LLPanelGroup::onChange(EStatusType status, const std::string &channelURI, bool proximal) +{ + if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) + { + return; + } + + childSetEnabled("btn_call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()); +} + void LLPanelGroup::notifyObservers() { changed(GC_ALL); @@ -356,6 +371,13 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it) (*it)->setGroupID(group_id); + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID); + if(gdatap) + { + childSetValue("group_name", gdatap->mName); + childSetToolTip("group_name",gdatap->mName); + } + LLButton* button_apply = findChild<LLButton>("btn_apply"); LLButton* button_refresh = findChild<LLButton>("btn_refresh"); LLButton* button_create = findChild<LLButton>("btn_create"); @@ -457,17 +479,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) } reposButtons(); - - LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID); - - if(gdatap) - { - childSetValue("group_name", gdatap->mName); - childSetToolTip("group_name",gdatap->mName); - - //group data is already present, call update manually - update(GC_ALL); - } } bool LLPanelGroup::apply(LLPanelGroupTab* tab) diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 7ea5e67b44f..8c846956771 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -35,6 +35,7 @@ #include "llgroupmgr.h" #include "llpanel.h" #include "lltimer.h" +#include "llvoiceclient.h" struct LLOfferInfo; @@ -47,7 +48,8 @@ class LLAgent; class LLPanelGroup : public LLPanel, - public LLGroupMgrObserver + public LLGroupMgrObserver, + public LLVoiceClientStatusObserver { public: LLPanelGroup(); @@ -64,6 +66,10 @@ class LLPanelGroup : public LLPanel, // Group manager observer trigger. virtual void changed(LLGroupChange gc); + // Implements LLVoiceClientStatusObserver::onChange() to enable the call + // button when voice is available + /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + void showNotice(const std::string& subject, const std::string& message, const bool& has_inventory, diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index a334eb9d680..ff1e43b5268 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -64,21 +64,52 @@ void LLPanelChatControlPanel::onOpenVoiceControlsClicked() LLFloaterReg::showInstance("voice_controls"); } +void LLPanelChatControlPanel::onChange(EStatusType status, const std::string &channelURI, bool proximal) +{ + if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) + { + return; + } + + updateCallButton(); +} + void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state) { updateButtons(new_state >= LLVoiceChannel::STATE_CALL_STARTED); } +void LLPanelChatControlPanel::updateCallButton() +{ + // hide/show call button + bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); + + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); + if (!session) return; + + bool session_initialized = session->mSessionInitialized; + bool callback_enabled = session->mCallBackEnabled; + + BOOL enable_connect = session_initialized + && voice_enabled + && callback_enabled; + childSetEnabled("call_btn", enable_connect); +} + void LLPanelChatControlPanel::updateButtons(bool is_call_started) { childSetVisible("end_call_btn_panel", is_call_started); childSetVisible("voice_ctrls_btn_panel", is_call_started); childSetVisible("call_btn_panel", ! is_call_started); + updateCallButton(); + } LLPanelChatControlPanel::~LLPanelChatControlPanel() { mVoiceChannelStateChangeConnection.disconnect(); + if(LLVoiceClient::getInstance()) + LLVoiceClient::getInstance()->removeObserver(this); } BOOL LLPanelChatControlPanel::postBuild() @@ -87,26 +118,9 @@ BOOL LLPanelChatControlPanel::postBuild() childSetAction("end_call_btn", boost::bind(&LLPanelChatControlPanel::onEndCallButtonClicked, this)); childSetAction("voice_ctrls_btn", boost::bind(&LLPanelChatControlPanel::onOpenVoiceControlsClicked, this)); - return TRUE; -} - -void LLPanelChatControlPanel::draw() -{ - // hide/show start call and end call buttons - bool voice_enabled = LLVoiceClient::voiceEnabled(); - - LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); - if (!session) return; + gVoiceClient->addObserver(this); - bool session_initialized = session->mSessionInitialized; - bool callback_enabled = session->mCallBackEnabled; - - BOOL enable_connect = session_initialized - && voice_enabled - && callback_enabled; - childSetEnabled("call_btn", enable_connect); - - LLPanel::draw(); + return TRUE; } void LLPanelChatControlPanel::setSessionId(const LLUUID& session_id) @@ -266,6 +280,8 @@ void LLPanelGroupControlPanel::draw() // Need to resort the participant list if it's in sort by recent speaker order. if (mParticipantList) mParticipantList->updateRecentSpeakersOrder(); + //* TODO: find better way to properly enable call button for group and remove this call from draw() + updateCallButton(); LLPanelChatControlPanel::draw(); } diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index 25fdf944c92..3ab505a084d 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -39,7 +39,9 @@ class LLParticipantList; -class LLPanelChatControlPanel : public LLPanel +class LLPanelChatControlPanel + : public LLPanel + , public LLVoiceClientStatusObserver { public: LLPanelChatControlPanel() : @@ -47,15 +49,21 @@ class LLPanelChatControlPanel : public LLPanel ~LLPanelChatControlPanel(); virtual BOOL postBuild(); - virtual void draw(); void onCallButtonClicked(); void onEndCallButtonClicked(); void onOpenVoiceControlsClicked(); + // Implements LLVoiceClientStatusObserver::onChange() to enable the call + // button when voice is available + /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + virtual void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state); void updateButtons(bool is_call_started); + + // Enables/disables call button depending on voice availability + void updateCallButton(); virtual void setSessionId(const LLUUID& session_id); const LLUUID& getSessionId() { return mSessionId; } diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index c14b282488c..b01cdcc832b 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -462,6 +462,9 @@ LLPanelPeople::~LLPanelPeople() delete mFriendListUpdater; delete mRecentListUpdater; + if(LLVoiceClient::getInstance()) + LLVoiceClient::getInstance()->removeObserver(this); + LLView::deleteViewByHandle(mGroupPlusMenuHandle); LLView::deleteViewByHandle(mNearbyViewSortMenuHandle); LLView::deleteViewByHandle(mFriendsViewSortMenuHandle); @@ -612,6 +615,8 @@ BOOL LLPanelPeople::postBuild() if(recent_view_sort) mRecentViewSortMenuHandle = recent_view_sort->getHandle(); + gVoiceClient->addObserver(this); + // call this method in case some list is empty and buttons can be in inconsistent state updateButtons(); @@ -621,6 +626,17 @@ BOOL LLPanelPeople::postBuild() return TRUE; } +// virtual +void LLPanelPeople::onChange(EStatusType status, const std::string &channelURI, bool proximal) +{ + if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) + { + return; + } + + updateButtons(); +} + void LLPanelPeople::updateFriendList() { if (!mOnlineFriendList || !mAllFriendList) @@ -775,41 +791,20 @@ void LLPanelPeople::updateButtons() } } + bool enable_calls = gVoiceClient->voiceWorking() && gVoiceClient->voiceEnabled(); + buttonSetEnabled("teleport_btn", friends_tab_active && item_selected && isFriendOnline(selected_uuids.front())); buttonSetEnabled("view_profile_btn", item_selected); buttonSetEnabled("im_btn", multiple_selected); // allow starting the friends conference for multiple selection - buttonSetEnabled("call_btn", multiple_selected && canCall()); + buttonSetEnabled("call_btn", multiple_selected && enable_calls); buttonSetEnabled("share_btn", item_selected); // not implemented yet bool none_group_selected = item_selected && selected_id.isNull(); buttonSetEnabled("group_info_btn", !none_group_selected); - buttonSetEnabled("group_call_btn", !none_group_selected); + buttonSetEnabled("group_call_btn", !none_group_selected && enable_calls); buttonSetEnabled("chat_btn", !none_group_selected); } -bool LLPanelPeople::canCall() -{ - std::vector<LLUUID> selected_uuids; - getCurrentItemIDs(selected_uuids); - - bool result = false; - - std::vector<LLUUID>::const_iterator - id = selected_uuids.begin(), - uuids_end = selected_uuids.end(); - - for (;id != uuids_end; ++id) - { - if (LLAvatarActions::canCall(*id)) - { - result = true; - break; - } - } - - return result; -} - std::string LLPanelPeople::getActiveTabName() const { return mTabContainer->getCurrentPanel()->getName(); diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 7580fdbeeff..6d3d4361568 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -36,13 +36,16 @@ #include <llpanel.h> #include "llcallingcard.h" // for avatar tracker +#include "llvoiceclient.h" class LLFilterEditor; class LLTabContainer; class LLAvatarList; class LLGroupList; -class LLPanelPeople : public LLPanel +class LLPanelPeople + : public LLPanel + , public LLVoiceClientStatusObserver { LOG_CLASS(LLPanelPeople); public: @@ -52,6 +55,9 @@ class LLPanelPeople : public LLPanel /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ bool notifyChildren(const LLSD& info); + // Implements LLVoiceClientStatusObserver::onChange() to enable call buttons + // when voice is available + /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); // internals class Updater; @@ -73,7 +79,6 @@ class LLPanelPeople : public LLPanel bool isFriendOnline(const LLUUID& id); bool isItemsFreeOfFriends(const std::vector<LLUUID>& uuids); - bool canCall(); void updateButtons(); std::string getActiveTabName() const; diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index c1c10e60220..d9651a60450 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -183,20 +183,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata) } else if (item == std::string("can_call")) { - bool result = false; - std::vector<LLUUID>::const_iterator - id = mUUIDs.begin(), - uuids_end = mUUIDs.end(); - - for (;id != uuids_end; ++id) - { - if (LLAvatarActions::canCall(*id)) - { - result = true; - break; - } - } - return result; + return LLAvatarActions::canCall(); } return false; } diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 88b706fb6bf..c0302eee9e0 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -628,7 +628,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& } else if (item == "can_call") { - return LLVoiceClient::voiceEnabled(); + return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking(); } return true; diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index c84afa5af12..e52d6a089bd 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -5853,6 +5853,11 @@ bool LLVoiceClient::voiceEnabled() return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice"); } +bool LLVoiceClient::voiceWorking() +{ + return (stateLoggedIn <= mState) && (mState <= stateLeavingSession); +} + void LLVoiceClient::setLipSyncEnabled(BOOL enabled) { mLipSyncEnabled = enabled; diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 6231c6ba29f..8f668dff196 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -191,6 +191,8 @@ static void updatePosition(void); void inputUserControlState(bool down); // interpret any sort of up-down mic-open control input according to ptt-toggle prefs void setVoiceEnabled(bool enabled); static bool voiceEnabled(); + // Checks is voice working judging from mState + bool voiceWorking(); void setUsePTT(bool usePTT); void setPTTIsToggle(bool PTTIsToggle); bool getPTTIsToggle(); -- GitLab From dcbe10044808d39c890fd26677374981147fe1f5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 22 Jan 2010 15:55:41 -0800 Subject: [PATCH 057/521] Linux: Don't strip or tar the viewer if it's not a release build. This is some more work towards making RelWithDebInfo very developer-friendly. --- indra/newview/viewer_manifest.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 00a903431a6..15a51bbe140 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -822,8 +822,8 @@ def package_finish(self): 'dst': self.get_dst_prefix(), 'inst': self.build_path_of(installer_name)}) try: - # only create tarball if it's not a debug build. - if self.args['buildtype'].lower() != 'debug': + # only create tarball if it's a release build. + if self.args['buildtype'].lower() == 'release': # --numeric-owner hides the username of the builder for # security etc. self.run_command('tar -C %(dir)s --numeric-owner -cjf ' @@ -855,7 +855,7 @@ def construct(self): pass - if(self.args['buildtype'].lower() != 'debug'): + if(self.args['buildtype'].lower() == 'release'): print "* packaging stripped viewer binary." self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") else: -- GitLab From 337716d946cf4ece8ba59cce82bd51b3c2148f75 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Fri, 22 Jan 2010 16:51:13 -0800 Subject: [PATCH 058/521] LLPointer cleanup and fix for EXT-4413 reviewed by Rick --- indra/llcommon/llpointer.h | 1 - indra/llcommon/llrefcount.cpp | 11 +++ indra/llcommon/llrefcount.h | 14 +-- indra/llui/llspinctrl.cpp | 16 ++-- indra/llui/llspinctrl.h | 5 +- indra/llui/llstyle.h | 4 +- indra/llui/lltextbase.cpp | 49 ++++------- indra/llui/lltextbase.h | 19 ++-- indra/llui/lltexteditor.cpp | 8 +- indra/llui/llui.cpp | 18 ++-- indra/llui/lluicolortable.h | 2 +- indra/llui/lluiimage.cpp | 4 +- indra/llxuixml/llinitparam.cpp | 12 ++- indra/llxuixml/llinitparam.h | 3 +- indra/llxuixml/lluicolor.cpp | 14 +-- indra/llxuixml/lluicolor.h | 8 +- indra/newview/llavatarlist.h | 10 +-- indra/newview/llavatarlistitem.cpp | 88 +++++++------------ indra/newview/llavatarlistitem.h | 15 +++- indra/newview/llexpandabletextbox.cpp | 6 +- indra/newview/llviewertexteditor.cpp | 2 +- .../xui/en/widgets/avatar_list_item.xml | 44 ++++++++++ 22 files changed, 195 insertions(+), 158 deletions(-) create mode 100644 indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h index 2c37eadcc65..e6c736a2632 100644 --- a/indra/llcommon/llpointer.h +++ b/indra/llcommon/llpointer.h @@ -95,7 +95,6 @@ template <class Type> class LLPointer bool notNull() const { return (mPointer != NULL); } operator Type*() const { return mPointer; } - operator const Type*() const { return mPointer; } bool operator !=(Type* ptr) const { return (mPointer != ptr); } bool operator ==(Type* ptr) const { return (mPointer == ptr); } bool operator ==(const LLPointer<Type>& ptr) const { return (mPointer == ptr.mPointer); } diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp index 33b6875fb0e..c90b52f482f 100644 --- a/indra/llcommon/llrefcount.cpp +++ b/indra/llcommon/llrefcount.cpp @@ -35,6 +35,17 @@ #include "llerror.h" +LLRefCount::LLRefCount(const LLRefCount& other) +: mRef(0) +{ +} + +LLRefCount& LLRefCount::operator=(const LLRefCount&) +{ + // do nothing, since ref count is specific to *this* reference + return *this; +} + LLRefCount::LLRefCount() : mRef(0) { diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 9ab844eb22e..a18f6706a9b 100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h @@ -41,22 +41,20 @@ class LL_COMMON_API LLRefCount { -private: - LLRefCount(const LLRefCount& other); // no implementation -private: - LLRefCount& operator=(const LLRefCount&); // no implementation protected: + LLRefCount(const LLRefCount& other); + LLRefCount& operator=(const LLRefCount&); virtual ~LLRefCount(); // use unref() public: LLRefCount(); - void ref() + void ref() const { mRef++; } - S32 unref() + S32 unref() const { llassert(mRef >= 1); if (0 == --mRef) @@ -67,13 +65,15 @@ class LL_COMMON_API LLRefCount return mRef; } + //NOTE: when passing around a const LLRefCount object, this can return different results + // at different types, since mRef is mutable S32 getNumRefs() const { return mRef; } private: - S32 mRef; + mutable S32 mRef; }; #endif diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp index 20a1ab7af3a..28f3788817a 100644 --- a/indra/llui/llspinctrl.cpp +++ b/indra/llui/llspinctrl.cpp @@ -270,13 +270,19 @@ void LLSpinCtrl::clear() mbHasBeenSet = FALSE; } - +void LLSpinCtrl::updateLabelColor() +{ + if( mLabelBox ) + { + mLabelBox->setColor( getEnabled() ? mTextEnabledColor.get() : mTextDisabledColor.get() ); + } +} void LLSpinCtrl::updateEditor() { LLLocale locale(LLLocale::USER_LOCALE); - // Don't display very small negative values as -0.000 + // Don't display very small negative valu es as -0.000 F32 displayed_value = clamp_precision((F32)getValue().asReal(), mPrecision); // if( S32( displayed_value * pow( 10, mPrecision ) ) == 0 ) @@ -339,10 +345,7 @@ void LLSpinCtrl::setEnabled(BOOL b) { LLView::setEnabled( b ); mEditor->setEnabled( b ); - if( mLabelBox ) - { - mLabelBox->setColor( b ? mTextEnabledColor.get() : mTextDisabledColor.get() ); - } + updateLabelColor(); } @@ -390,6 +393,7 @@ void LLSpinCtrl::setLabel(const LLStringExplicit& label) { llwarns << "Attempting to set label on LLSpinCtrl constructed without one " << getName() << llendl; } + updateLabelColor(); } void LLSpinCtrl::setAllowEdit(BOOL allow_edit) diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h index 0e610b77411..00d6f86f837 100644 --- a/indra/llui/llspinctrl.h +++ b/indra/llui/llspinctrl.h @@ -81,8 +81,8 @@ class LLSpinCtrl virtual void setPrecision(S32 precision); void setLabel(const LLStringExplicit& label); - void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; } - void setDisabledLabelColor(const LLColor4& c) { mTextDisabledColor = c; } + void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; updateLabelColor(); } + void setDisabledLabelColor(const LLColor4& c) { mTextDisabledColor = c; updateLabelColor();} void setAllowEdit(BOOL allow_edit); virtual void onTabInto(); @@ -103,6 +103,7 @@ class LLSpinCtrl void onDownBtn(const LLSD& data); private: + void updateLabelColor(); void updateEditor(); void reportInvalidData(); diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h index ee9ca730e94..2067e8e8be3 100644 --- a/indra/llui/llstyle.h +++ b/indra/llui/llstyle.h @@ -59,11 +59,12 @@ class LLStyle : public LLRefCount void setColor(const LLColor4 &color) { mColor = color; } const LLColor4& getReadOnlyColor() const { return mReadOnlyColor; } + void setReadOnlyColor(const LLColor4& color) { mReadOnlyColor = color; } BOOL isVisible() const; void setVisible(BOOL is_visible); - LLFontGL::ShadowType getShadowType() { return mDropShadow; } + LLFontGL::ShadowType getShadowType() const { return mDropShadow; } void setFont(const LLFontGL* font); const LLFontGL* getFont() const; @@ -116,5 +117,6 @@ class LLStyle : public LLRefCount }; typedef LLPointer<LLStyle> LLStyleSP; +typedef LLPointer<const LLStyle> LLStyleConstSP; #endif // LL_LLSTYLE_H diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 17aecaf32fd..885a830c9fc 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -291,9 +291,13 @@ bool LLTextBase::truncate() return did_truncate; } -LLStyle::Params LLTextBase::getDefaultStyle() +LLStyle::Params LLTextBase::getDefaultStyleParams() { - return LLStyle::Params().color(mFgColor.get()).readonly_color(mReadOnlyFgColor.get()).font(mDefaultFont).drop_shadow(mFontShadow); + return LLStyle::Params() + .color(LLUIColor(&mFgColor)) + .readonly_color(LLUIColor(&mReadOnlyFgColor)) + .font(mDefaultFont) + .drop_shadow(mFontShadow); } void LLTextBase::onValueChange(S32 start, S32 end) @@ -619,7 +623,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s else { // create default editable segment to hold new text - default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), pos, pos + insert_len, *this); + default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), pos, pos + insert_len, *this); } // shift remaining segments to right @@ -743,7 +747,7 @@ void LLTextBase::createDefaultSegment() // ensures that there is always at least one segment if (mSegments.empty()) { - LLTextSegmentPtr default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this); + LLTextSegmentPtr default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this); mSegments.insert(default_segment); default_segment->linkToDocument(this); } @@ -1510,16 +1514,7 @@ std::string LLTextBase::getText() const void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params) { LLStyle::Params style_params(input_params); - style_params.fillFrom(getDefaultStyle()); - - if (!style_params.font.isProvided()) - { - style_params.font = mDefaultFont; - } - if (!style_params.drop_shadow.isProvided()) - { - style_params.drop_shadow = mFontShadow; - } + style_params.fillFrom(getDefaultStyleParams()); S32 part = (S32)LLTextParser::WHOLE; if(mParseHTML) @@ -1536,13 +1531,7 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c LLStyle::Params link_params = style_params; link_params.color = match.getColor(); link_params.readonly_color = match.getColor(); - // apply font name from requested style_params - std::string font_name = LLFontGL::nameFromFont(style_params.font()); - std::string font_size = LLFontGL::sizeFromFont(style_params.font()); - link_params.font.name(font_name); - link_params.font.size(font_size); link_params.font.style("UNDERLINE"); - link_params.link_href = match.getUrl(); // output the text before the Url @@ -1611,9 +1600,9 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c } } -void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& stylep) +void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& style_params) { - if (new_text.empty()) return; + if (new_text.empty()) return; // Save old state S32 selection_start = mSelectionStart; @@ -1631,7 +1620,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen if (mParseHighlights && highlight) { - LLStyle::Params highlight_params = stylep; + LLStyle::Params highlight_params(style_params); LLSD pieces = highlight->parsePartialLineHighlights(new_text, highlight_params.color(), (LLTextParser::EHighlightPosition)highlight_part); for (S32 i = 0; i < pieces.size(); i++) @@ -1651,7 +1640,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen wide_text = utf8str_to_wstring(pieces[i]["text"].asString()); } S32 cur_length = getLength(); - LLTextSegmentPtr segmentp = new LLNormalTextSegment(new LLStyle(highlight_params), cur_length, cur_length + wide_text.size(), *this); + LLTextSegmentPtr segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(highlight_params)), cur_length, cur_length + wide_text.size(), *this); segment_vec_t segments; segments.push_back(segmentp); insertStringNoUndo(cur_length, wide_text, &segments); @@ -1675,7 +1664,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen segment_vec_t segments; S32 segment_start = old_length; S32 segment_end = old_length + wide_text.size(); - segments.push_back(new LLNormalTextSegment(new LLStyle(stylep), segment_start, segment_end, *this )); + segments.push_back(new LLNormalTextSegment(LLStyleConstSP(new LLStyle(style_params)), segment_start, segment_end, *this )); insertStringNoUndo(getLength(), wide_text, &segments); } @@ -1719,7 +1708,7 @@ void LLTextBase::replaceUrlLabel(const std::string &url, for (it = mSegments.begin(); it != mSegments.end(); ++it) { LLTextSegment *seg = *it; - const LLStyleSP style = seg->getStyle(); + LLStyleConstSP style = seg->getStyle(); // update segment start/end length in case we replaced text earlier S32 seg_length = seg->getEnd() - seg->getStart(); @@ -2212,9 +2201,9 @@ bool LLTextSegment::canEdit() const { return false; } void LLTextSegment::unlinkFromDocument(LLTextBase*) {} void LLTextSegment::linkToDocument(LLTextBase*) {} const LLColor4& LLTextSegment::getColor() const { return LLColor4::white; } -void LLTextSegment::setColor(const LLColor4 &color) {} -const LLStyleSP LLTextSegment::getStyle() const {static LLStyleSP sp(new LLStyle()); return sp; } -void LLTextSegment::setStyle(const LLStyleSP &style) {} +//void LLTextSegment::setColor(const LLColor4 &color) {} +LLStyleConstSP LLTextSegment::getStyle() const {static LLStyleConstSP sp(new LLStyle()); return sp; } +void LLTextSegment::setStyle(LLStyleConstSP &style) {} void LLTextSegment::setToken( LLKeywordToken* token ) {} LLKeywordToken* LLTextSegment::getToken() const { return NULL; } void LLTextSegment::setToolTip( const std::string &msg ) {} @@ -2239,7 +2228,7 @@ BOOL LLTextSegment::hasMouseCapture() { return FALSE; } // LLNormalTextSegment // -LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor ) +LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ) : LLTextSegment(start, end), mStyle( style ), mToken(NULL), diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 038b9eaa62b..5526667166f 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -184,7 +184,6 @@ class LLTextBase bool scrolledToEnd(); const LLFontGL* getDefaultFont() const { return mDefaultFont; } - LLStyle::Params getDefaultStyle(); public: // Fired when a URL link is clicked @@ -281,7 +280,8 @@ class LLTextBase void createDefaultSegment(); virtual void updateSegments(); void insertSegment(LLTextSegmentPtr segment_to_insert); - + LLStyle::Params getDefaultStyleParams(); + // manage lines S32 getLineStart( S32 line ) const; S32 getLineEnd( S32 line ) const; @@ -388,9 +388,9 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler virtual void linkToDocument(class LLTextBase* editor); virtual const LLColor4& getColor() const; - virtual void setColor(const LLColor4 &color); - virtual const LLStyleSP getStyle() const; - virtual void setStyle(const LLStyleSP &style); + //virtual void setColor(const LLColor4 &color); + virtual LLStyleConstSP getStyle() const; + virtual void setStyle(LLStyleConstSP &style); virtual void setToken( LLKeywordToken* token ); virtual LLKeywordToken* getToken() const; virtual void setToolTip(const std::string& tooltip); @@ -426,7 +426,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler class LLNormalTextSegment : public LLTextSegment { public: - LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor ); + LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ); LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE); ~LLNormalTextSegment(); @@ -436,9 +436,8 @@ class LLNormalTextSegment : public LLTextSegment /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect); /*virtual*/ bool canEdit() const { return true; } /*virtual*/ const LLColor4& getColor() const { return mStyle->getColor(); } - /*virtual*/ void setColor(const LLColor4 &color) { mStyle->setColor(color); } - /*virtual*/ const LLStyleSP getStyle() const { return mStyle; } - /*virtual*/ void setStyle(const LLStyleSP &style) { mStyle = style; } + /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; } + /*virtual*/ void setStyle(LLStyleConstSP &style) { mStyle = style; } /*virtual*/ void setToken( LLKeywordToken* token ) { mToken = token; } /*virtual*/ LLKeywordToken* getToken() const { return mToken; } /*virtual*/ BOOL getToolTip( std::string& msg ) const; @@ -456,7 +455,7 @@ class LLNormalTextSegment : public LLTextSegment protected: class LLTextBase& mEditor; - LLStyleSP mStyle; + LLStyleConstSP mStyle; S32 mFontHeight; LLKeywordToken* mToken; std::string mTooltip; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index f2c3879a6c9..93ce7a4bea5 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2390,7 +2390,7 @@ void LLTextEditor::replaceUrlLabel(const std::string &url, for (it = mSegments.begin(); it != mSegments.end(); ++it) { LLTextSegment *seg = *it; - const LLStyleSP style = seg->getStyle(); + LLStyleConstSP style = seg->getStyle(); // update segment start/end length in case we replaced text earlier S32 seg_length = seg->getEnd() - seg->getStart(); @@ -2559,13 +2559,15 @@ void LLTextEditor::updateLinkSegments() // if the link's label (what the user can edit) is a valid Url, // then update the link's HREF to be the same as the label text. // This lets users edit Urls in-place. - LLStyleSP style = static_cast<LLStyleSP>(segment->getStyle()); + LLStyleConstSP style = segment->getStyle(); + LLStyle* new_style = new LLStyle(*style); LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart()); if (LLUrlRegistry::instance().hasUrl(url_label)) { std::string new_url = wstring_to_utf8str(url_label); LLStringUtil::trim(new_url); - style->setLinkHREF(new_url); + new_style->setLinkHREF(new_url); + segment->setStyle(LLStyleConstSP(new_style)); } } } diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index d0ed3b6fcae..76f07373b44 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1911,10 +1911,10 @@ namespace LLInitParam void TypedParam<LLUIColor>::setBlockFromValue() { LLColor4 color = mData.mValue.get(); - red = color.mV[VRED]; - green = color.mV[VGREEN]; - blue = color.mV[VBLUE]; - alpha = color.mV[VALPHA]; + red.set(color.mV[VRED], false); + green.set(color.mV[VGREEN], false); + blue.set(color.mV[VBLUE], false); + alpha.set(color.mV[VALPHA], false); control.set("", false); } @@ -1965,9 +1965,9 @@ namespace LLInitParam { if (mData.mValue) { - name = LLFontGL::nameFromFont(mData.mValue); - size = LLFontGL::sizeFromFont(mData.mValue); - style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle()); + name.set(LLFontGL::nameFromFont(mData.mValue), false); + size.set(LLFontGL::sizeFromFont(mData.mValue), false); + style.set(LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle()), false); } } @@ -2073,8 +2073,8 @@ namespace LLInitParam void TypedParam<LLCoordGL>::setBlockFromValue() { - x = mData.mValue.mX; - y = mData.mValue.mY; + x.set(mData.mValue.mX, false); + y.set(mData.mValue.mY, false); } diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h index 59be0c4f9a4..c87695f456a 100644 --- a/indra/llui/lluicolortable.h +++ b/indra/llui/lluicolortable.h @@ -94,7 +94,7 @@ LOG_CLASS(LLUIColorTable); bool loadFromFilename(const std::string& filename); // consider using sorted vector, can be much faster - typedef std::map<std::string, LLColor4> string_color_map_t; + typedef std::map<std::string, LLUIColor> string_color_map_t; void clearTable(string_color_map_t& table); void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table); diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index 966d919dc76..8cd6460b662 100644 --- a/indra/llui/lluiimage.cpp +++ b/indra/llui/lluiimage.cpp @@ -182,11 +182,11 @@ namespace LLInitParam { if (mData.mValue == NULL) { - name = "none"; + name.set("none", false); } else { - name = mData.mValue->getName(); + name.set(mData.mValue->getName(), false); } } diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 4c050844f86..424a9fae8e4 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -84,8 +84,7 @@ namespace LLInitParam // BaseBlock // BaseBlock::BaseBlock() - : mLastChangedParam(0), - mChangeVersion(0) + : mChangeVersion(0) {} BaseBlock::~BaseBlock() @@ -347,7 +346,6 @@ namespace LLInitParam if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second)) { - mLastChangedParam = (*it)->mParamHandle; return true; } } @@ -416,8 +414,10 @@ namespace LLInitParam void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided) { - mLastChangedParam = getHandleFromParam(&last_param); - mChangeVersion++; + if (user_provided) + { + mChangeVersion++; + } } const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const @@ -471,7 +471,6 @@ namespace LLInitParam { Param* paramp = getParamFromHandle(it->mParamHandle); param_changed |= merge_func(*paramp, *other_paramp, true); - mLastChangedParam = it->mParamHandle; } } return param_changed; @@ -492,7 +491,6 @@ namespace LLInitParam { Param* paramp = getParamFromHandle(it->mParamHandle); param_changed |= merge_func(*paramp, *other_paramp, false); - mLastChangedParam = it->mParamHandle; } } return param_changed; diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 7e1e4a3d218..529fae18c02 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -470,7 +470,6 @@ namespace LLInitParam // Blocks can override this to do custom tracking of changes virtual void setLastChangedParam(const Param& last_param, bool user_provided); - const Param* getLastChangedParam() const { return mLastChangedParam ? getParamFromHandle(mLastChangedParam) : NULL; } S32 getLastChangeVersion() const { return mChangeVersion; } bool isDefault() const { return mChangeVersion == 0; } @@ -505,7 +504,6 @@ namespace LLInitParam bool fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other); // can be updated in getters - mutable param_handle_t mLastChangedParam; mutable S32 mChangeVersion; BlockDescriptor* mBlockDescriptor; // most derived block descriptor @@ -1732,6 +1730,7 @@ namespace LLInitParam void set(value_assignment_t val, bool flag_as_provided = true) { Param::enclosingBlock().setLastChangedParam(*this, flag_as_provided); + // set param version number to be up to date, so we ignore block contents mData.mLastParamVersion = BaseBlock::getLastChangeVersion(); diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp index 424d878a6b2..0049ec055c3 100644 --- a/indra/llxuixml/lluicolor.cpp +++ b/indra/llxuixml/lluicolor.cpp @@ -16,13 +16,15 @@ LLUIColor::LLUIColor() { } -LLUIColor::LLUIColor(const LLColor4* color) - :mColorPtr(color) + +LLUIColor::LLUIColor(const LLColor4& color) +: mColor(color), + mColorPtr(NULL) { } -LLUIColor::LLUIColor(const LLColor4& color) - :mColor(color), mColorPtr(NULL) +LLUIColor::LLUIColor(const LLUIColor* color) +: mColorPtr(color) { } @@ -32,14 +34,14 @@ void LLUIColor::set(const LLColor4& color) mColorPtr = NULL; } -void LLUIColor::set(const LLColor4* color) +void LLUIColor::set(const LLUIColor* color) { mColorPtr = color; } const LLColor4& LLUIColor::get() const { - return (mColorPtr == NULL ? mColor : *mColorPtr); + return (mColorPtr == NULL ? mColor : mColorPtr->get()); } LLUIColor::operator const LLColor4& () const diff --git a/indra/llxuixml/lluicolor.h b/indra/llxuixml/lluicolor.h index bb0f7863262..0ef2f78b248 100644 --- a/indra/llxuixml/lluicolor.h +++ b/indra/llxuixml/lluicolor.h @@ -22,11 +22,11 @@ class LLUIColor { public: LLUIColor(); - LLUIColor(const LLColor4* color); LLUIColor(const LLColor4& color); + LLUIColor(const LLUIColor* color); void set(const LLColor4& color); - void set(const LLColor4* color); + void set(const LLUIColor* color); const LLColor4& get() const; @@ -38,7 +38,7 @@ class LLUIColor private: friend struct LLInitParam::ParamCompare<LLUIColor, false>; - const LLColor4* mColorPtr; + const LLUIColor* mColorPtr; LLColor4 mColor; }; @@ -47,7 +47,7 @@ namespace LLInitParam template<> struct ParamCompare<LLUIColor, false> { - static bool equals(const class LLUIColor& a, const class LLUIColor& b); + static bool equals(const LLUIColor& a, const LLUIColor& b); }; } diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index a58a5623786..aeed4fee083 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -57,11 +57,11 @@ class LLAvatarList : public LLFlatListView struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> { - Optional<bool> ignore_online_status; // show all items as online - Optional<bool> show_last_interaction_time; // show most recent interaction time. *HACK: move this to a derived class - Optional<bool> show_info_btn; - Optional<bool> show_profile_btn; - Optional<bool> show_speaking_indicator; + Optional<bool> ignore_online_status, // show all items as online + show_last_interaction_time, // show most recent interaction time. *HACK: move this to a derived class + show_info_btn, + show_profile_btn, + show_speaking_indicator; Params(); }; diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 66ab32f3e88..26a39532dda 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -48,6 +48,17 @@ S32 LLAvatarListItem::sLeftPadding = 0; S32 LLAvatarListItem::sRightNamePadding = 0; S32 LLAvatarListItem::sChildrenWidths[LLAvatarListItem::ALIC_COUNT]; +static LLWidgetNameRegistry::StaticRegistrar sRegisterAvatarListItemParams(&typeid(LLAvatarListItem::Params), "avatar_list_item"); + +LLAvatarListItem::Params::Params() +: default_style("default_style"), + voice_call_invited_style("voice_call_invited_style"), + voice_call_joined_style("voice_call_joined_style"), + voice_call_left_style("voice_call_left_style"), + online_style("online_style"), + offline_style("offline_style") +{}; + LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/) : LLPanel(), @@ -166,9 +177,30 @@ void LLAvatarListItem::setHighlight(const std::string& highlight) void LLAvatarListItem::setState(EItemState item_style) { - item_style_map_t& item_styles_params_map = getItemStylesParams(); + const LLAvatarListItem::Params& params = LLUICtrlFactory::getDefaultParams<LLAvatarListItem>(); - mAvatarNameStyle = item_styles_params_map[item_style]; + switch(item_style) + { + default: + case IS_DEFAULT: + mAvatarNameStyle = params.default_style(); + break; + case IS_VOICE_INVITED: + mAvatarNameStyle = params.voice_call_invited_style(); + break; + case IS_VOICE_JOINED: + mAvatarNameStyle = params.voice_call_joined_style(); + break; + case IS_VOICE_LEFT: + mAvatarNameStyle = params.voice_call_left_style(); + break; + case IS_ONLINE: + mAvatarNameStyle = params.online_style(); + break; + case IS_OFFLINE: + mAvatarNameStyle = params.offline_style(); + break; + } // *NOTE: You cannot set the style on a text box anymore, you must // rebuild the text. This will cause problems if the text contains @@ -352,58 +384,6 @@ std::string LLAvatarListItem::formatSeconds(U32 secs) return getString(fmt, args); } -// static -LLAvatarListItem::item_style_map_t& LLAvatarListItem::getItemStylesParams() -{ - static item_style_map_t item_styles_params_map; - if (!item_styles_params_map.empty()) return item_styles_params_map; - - LLPanel::Params params = LLUICtrlFactory::getDefaultParams<LLPanel>(); - LLPanel* params_panel = LLUICtrlFactory::create<LLPanel>(params); - - BOOL sucsess = LLUICtrlFactory::instance().buildPanel(params_panel, "panel_avatar_list_item_params.xml"); - - if (sucsess) - { - - item_styles_params_map.insert( - std::make_pair(IS_DEFAULT, - params_panel->getChild<LLTextBox>("default_style")->getDefaultStyle())); - - item_styles_params_map.insert( - std::make_pair(IS_VOICE_INVITED, - params_panel->getChild<LLTextBox>("voice_call_invited_style")->getDefaultStyle())); - - item_styles_params_map.insert( - std::make_pair(IS_VOICE_JOINED, - params_panel->getChild<LLTextBox>("voice_call_joined_style")->getDefaultStyle())); - - item_styles_params_map.insert( - std::make_pair(IS_VOICE_LEFT, - params_panel->getChild<LLTextBox>("voice_call_left_style")->getDefaultStyle())); - - item_styles_params_map.insert( - std::make_pair(IS_ONLINE, - params_panel->getChild<LLTextBox>("online_style")->getDefaultStyle())); - - item_styles_params_map.insert( - std::make_pair(IS_OFFLINE, - params_panel->getChild<LLTextBox>("offline_style")->getDefaultStyle())); - } - else - { - item_styles_params_map.insert(std::make_pair(IS_DEFAULT, LLStyle::Params())); - item_styles_params_map.insert(std::make_pair(IS_VOICE_INVITED, LLStyle::Params())); - item_styles_params_map.insert(std::make_pair(IS_VOICE_JOINED, LLStyle::Params())); - item_styles_params_map.insert(std::make_pair(IS_VOICE_LEFT, LLStyle::Params())); - item_styles_params_map.insert(std::make_pair(IS_ONLINE, LLStyle::Params())); - item_styles_params_map.insert(std::make_pair(IS_OFFLINE, LLStyle::Params())); - } - if (params_panel) params_panel->die(); - - return item_styles_params_map; -} - // static LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap() { diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 479a4833cb9..9f81aa08040 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -46,6 +46,18 @@ class LLAvatarIconCtrl; class LLAvatarListItem : public LLPanel, public LLFriendObserver { public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<LLStyle::Params> default_style, + voice_call_invited_style, + voice_call_joined_style, + voice_call_left_style, + online_style, + offline_style; + + Params(); + }; + typedef enum e_item_state_type { IS_DEFAULT, IS_VOICE_INVITED, @@ -143,9 +155,6 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver std::string formatSeconds(U32 secs); - typedef std::map<EItemState, LLStyle::Params> item_style_map_t; - static item_style_map_t& getItemStylesParams(); - typedef std::map<EItemState, LLColor4> icon_color_map_t; static icon_color_map_t& getItemIconColorMap(); diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 9f6412c0ab5..77b3a48cefe 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -169,8 +169,7 @@ void LLExpandableTextBox::LLTextBoxEx::showExpandText() std::pair<S32, S32> visible_lines = getVisibleLines(true); S32 last_line = visible_lines.second - 1; - LLStyle::Params expander_style = getDefaultStyle(); - expander_style.font.name(LLFontGL::nameFromFont(expander_style.font)); + LLStyle::Params expander_style(getDefaultStyleParams()); expander_style.font.style = "UNDERLINE"; expander_style.color = LLUIColorTable::instance().getColor("HTMLLinkColor"); LLExpanderSegment* expanderp = new LLExpanderSegment(new LLStyle(expander_style), getLineStart(last_line), getLength() + 1, mExpanderLabel, *this); @@ -186,8 +185,7 @@ void LLExpandableTextBox::LLTextBoxEx::hideExpandText() if (mExpanderVisible) { // this will overwrite the expander segment and all text styling with a single style - LLNormalTextSegment* segmentp = new LLNormalTextSegment( - new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this); + LLNormalTextSegment* segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this); insertSegment(segmentp); mExpanderVisible = false; diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 300aea1620c..94c257fe8c3 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -247,7 +247,7 @@ class LLEmbeddedItemSegment : public LLTextSegment return FALSE; } - /*virtual*/ const LLStyleSP getStyle() const { return mStyle; } + /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; } private: LLUIImagePtr mImage; diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml new file mode 100644 index 00000000000..1a9a882c7bc --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<avatar_list_item + height="0" + layout="topleft" + left="0" + name="avatar_list_item" + top="0" + width="0"> + <!-- DEFAULT styles for avatar item --> + <default_style + font="SansSerifSmall" + font.style="NORMAL" + text_color="DkGray"/> + + <!-- styles for avatar item INVITED to voice call --> + <voice_call_invited_style + font="SansSerifSmall" + font.style="NORMAL" + text_color="0.5 0.5 0.5 0.5"/> + + <!-- styles for avatar item JOINED to voice call --> + <voice_call_joined_style + font="SansSerifSmall" + font.style="NORMAL" + text_color="white"/> + + <!-- styles for avatar item which HAS LEFT voice call --> + <voice_call_left_style + font="SansSerifSmall" + font.style="ITALIC" + text_color="LtGray_50"/> + + <!-- styles for ONLINE avatar item --> + <online_style + font="SansSerifSmall" + font.style="NORMAL" + text_color="white"/> + + <!-- styles for OFFLINE avatar item --> + <offline_style + font="SansSerifSmall" + font.style="NORMAL" + text_color="0.5 0.5 0.5 1.0"/> +</avatar_list_item> -- GitLab From 955c0cc5a9ab8fb9eda7a6c20cd7bd09c2fd9369 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Fri, 22 Jan 2010 17:17:12 -0800 Subject: [PATCH 059/521] wrong param names for avatar list item colors reviewed by Rick --- .../default/xui/en/widgets/avatar_list_item.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml index 1a9a882c7bc..ed8df69bf40 100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml @@ -10,35 +10,35 @@ <default_style font="SansSerifSmall" font.style="NORMAL" - text_color="DkGray"/> + color="DkGray"/> <!-- styles for avatar item INVITED to voice call --> <voice_call_invited_style font="SansSerifSmall" font.style="NORMAL" - text_color="0.5 0.5 0.5 0.5"/> + color="0.5 0.5 0.5 0.5"/> <!-- styles for avatar item JOINED to voice call --> <voice_call_joined_style font="SansSerifSmall" font.style="NORMAL" - text_color="white"/> + color="white"/> <!-- styles for avatar item which HAS LEFT voice call --> <voice_call_left_style font="SansSerifSmall" font.style="ITALIC" - text_color="LtGray_50"/> + color="LtGray_50"/> <!-- styles for ONLINE avatar item --> <online_style font="SansSerifSmall" font.style="NORMAL" - text_color="white"/> + color="white"/> <!-- styles for OFFLINE avatar item --> <offline_style font="SansSerifSmall" font.style="NORMAL" - text_color="0.5 0.5 0.5 1.0"/> + color="0.5 0.5 0.5 1.0"/> </avatar_list_item> -- GitLab From f942ede38b12cecef954d67f52ff3416a7956a27 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 22 Jan 2010 18:12:33 -0800 Subject: [PATCH 060/521] Remove code that enables tooltip inspector hover over media object (note: reverts changeset b6b3a58fdb30) --- indra/newview/lltoolpie.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index a08e77e3d88..c79a66892d5 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -68,7 +68,6 @@ #include "llviewermedia.h" #include "llvoavatarself.h" #include "llviewermediafocus.h" -#include "llvovolume.h" #include "llworld.h" #include "llui.h" #include "llweb.h" @@ -630,14 +629,12 @@ static bool needs_tooltip(LLSelectNode* nodep) return false; LLViewerObject* object = nodep->getObject(); - LLVOVolume* vovolume = dynamic_cast<LLVOVolume*>(object); LLViewerObject *parent = (LLViewerObject *)object->getParent(); if (object->flagHandleTouch() || (parent && parent->flagHandleTouch()) || object->flagTakesMoney() || (parent && parent->flagTakesMoney()) || object->flagAllowInventoryAdd() - || (vovolume && vovolume->hasMedia()) ) { return true; -- GitLab From ae9449bff10d8c2247ae28044af50870c6a782eb Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Fri, 22 Jan 2010 23:04:59 -0800 Subject: [PATCH 061/521] Group profile layout now resizes with the viewer window. Gave extra room to each accordion panel, and tweaked the layout a bit. --- .../default/xui/en/panel_group_general.xml | 87 +++--- .../xui/en/panel_group_info_sidetray.xml | 163 +++++++----- .../default/xui/en/panel_group_land_money.xml | 104 ++++---- .../default/xui/en/panel_group_notices.xml | 82 +++--- .../default/xui/en/panel_group_roles.xml | 247 ++++++++++-------- .../skins/default/xui/en/panel_side_tray.xml | 2 +- 6 files changed, 395 insertions(+), 290 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index af73faf9a1d..96185bad56c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -1,12 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - follows="all" - height="395" label="General" + follows="all" + height="604" + width="313" class="panel_group_general" - layout="topleft" - name="general_tab" - width="323"> + name="general_tab"> <panel.string name="help_text"> The General tab contains general information about this group, a list of members, general Group Preferences and member options. @@ -25,12 +24,14 @@ Hover your mouse over the options for more help. type="string" follows="left|top|right" left="5" - height="60" + height="150" layout="topleft" max_length="511" name="charter" top="5" right="-1" + bg_readonly_color="DkGray2" + text_readonly_color="White" word_wrap="true"> Group Charter </text_editor> @@ -38,8 +39,8 @@ Hover your mouse over the options for more help. column_padding="0" draw_heading="true" follows="left|top|right" - heading_height="20" - height="156" + heading_height="23" + height="200" layout="topleft" left="0" right="-1" @@ -60,17 +61,29 @@ Hover your mouse over the options for more help. height="12" layout="left|top|right" left="5" + text_color="EmphasisColor" + name="my_group_settngs_label" + top_pad="10" + width="300"> + Me + </text> + <text + follows="left|top|right" + type="string" + height="12" + layout="left|top|right" + left="10" name="active_title_label" top_pad="5" width="300"> - My Title + My title: </text> <combo_box follows="left|top|right" - height="20" + height="23" layout="topleft" - left="5" - right="-5" + left="10" + right="-5" name="active_title" tool_tip="Sets the title that appears in your avatar's name tag when this group is active." top_pad="2" /> @@ -79,7 +92,7 @@ Hover your mouse over the options for more help. font="SansSerifSmall" label="Receive group notices" layout="topleft" - left="5" + left="10" name="receive_notices" tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you." top_pad="5" @@ -88,36 +101,46 @@ Hover your mouse over the options for more help. height="16" label="Show in my profile" layout="topleft" - left="5" + left="10" name="list_groups_in_profile" tool_tip="Sets whether you want to show this group in your profile" top_pad="5" width="295" /> - <panel + <panel background_visible="true" bevel_style="in" border="true" bg_alpha_color="FloaterUnfocusBorderColor" follows="left|top|right" - height="88" + height="140" + width="313" layout="topleft" - left="2" - right="-1" + left="0" name="preferences_container" - top_pad="2"> + top_pad="5"> + <text + follows="left|top|right" + type="string" + height="12" + layout="left|top|right" + left="5" + text_color="EmphasisColor" + name="group_settngs_label" + width="300"> + Group + </text> <check_box follows="right|top|left" height="16" - label="Open enrollment" + label="Anyone can join" layout="topleft" left="10" name="open_enrollement" tool_tip="Sets whether this group allows new members to join without being invited." - top_pad="5" width="90" /> <check_box height="16" - label="Enrollment fee" + label="Cost to join" layout="topleft" left_delta="0" name="check_enrollment_fee" @@ -126,27 +149,26 @@ Hover your mouse over the options for more help. width="300" /> <spinner decimal_digits="0" - follows="left|top|right" + follows="left|top" halign="left" - height="16" + height="23" increment="1" label_width="15" label="L$" layout="topleft" - right="-30" max_val="99999" - left_pad="0" + left="30" name="spin_enrollment_fee" tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked." - width="80" /> - <combo_box - follows="left|top|right" - height="20" + width="170" /> + <combo_box + follows="left|top" + height="23" layout="topleft" left="10" name="group_mature_check" tool_tip="Sets whether your group contains information rated as Moderate" - top_pad="0" + top_pad="4" width="190"> <combo_box.item label="General Content" @@ -158,7 +180,7 @@ Hover your mouse over the options for more help. value="Mature" /> </combo_box> <check_box - follows="left|top|right" + follows="left|top" height="16" initial_value="true" label="Show in search" @@ -168,5 +190,6 @@ Hover your mouse over the options for more help. tool_tip="Let people see this group in search results" top_pad="4" width="300" /> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 673052c3b5d..4e017819c10 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -2,17 +2,17 @@ <panel background_visible="true" follows="all" - height="635" - label="Group Info" + height="570" + label="Group Profile" layout="topleft" - min_height="460" + min_height="350" left="0" top="20" name="GroupInfo" - width="323"> + width="313"> <panel.string name="default_needs_apply_text"> - There are unsaved changes to the current tab + There are unsaved changes </panel.string> <panel.string name="want_apply_text"> @@ -26,6 +26,14 @@ background_visible="true" name="group_join_free"> Free </panel.string> + <panel + name="group_info_top" + follows="top|left" + top="0" + left="0" + height="129" + width="313" + layout="topleft"> <button follows="top|right" height="23" @@ -37,17 +45,19 @@ background_visible="true" top="2" width="23" /> <text - follows="top|left|right" - font="SansSerifHugeBold" - height="26" layout="topleft" - left_pad="10" name="group_name" - text_color="white" - top="0" value="(Loading...)" - use_ellipses="true" - width="300" /> + font="SansSerifHuge" + height="20" + left_pad="5" + text_color="white" + top="3" + use_ellipses="true" + width="270" + follows="top|left" + word_wrap="true" + mouse_opaque="false"/> <line_editor follows="left|top" font="SansSerif" @@ -57,7 +67,7 @@ background_visible="true" max_length="35" name="group_name_editor" top_delta="5" - width="250" + width="270" height="20" visible="false" /> <texture_picker @@ -65,21 +75,24 @@ background_visible="true" height="113" label="" layout="topleft" - left="20" + left="10" name="insignia" tool_tip="Click to choose a picture" top_pad="5" width="100" /> - <text + <text + font="SansSerifSmall" + text_color="White_50" + width="190" + follows="top|left" + layout="topleft" + mouse_opaque="false" type="string" - follows="left|top" height="16" length="1" - layout="topleft" left_pad="10" name="prepend_founded_by" - top_delta="0" - width="140"> + top_delta="0"> Founder: </text> <name_box @@ -92,9 +105,9 @@ background_visible="true" name="founder_name" top_pad="2" use_ellipses="true" - width="140" /> + width="190" /> <text - font="SansSerifBig" + font="SansSerifMedium" text_color="EmphasisColor" type="string" follows="left|top" @@ -104,7 +117,7 @@ background_visible="true" name="join_cost_text" top_pad="10" visible="true" - width="140"> + width="190"> Free </text> <button @@ -116,17 +129,31 @@ background_visible="true" name="btn_join" visible="true" width="120" /> + </panel> + <layout_stack + name="layout" + orientation="vertical" + follows="all" + left="0" + top_pad="0" + height="437" + width="313" + border_size="0"> + <layout_panel + name="group_accordions" + follows="all" + layout="topleft" + auto_resize="true" + > <accordion + left="0" + top="0" single_expansion="true" follows="all" - height="478" layout="topleft" - left="0" - name="groups_accordion" - top_pad="10" - width="323"> - <accordion_tab - expanded="false" + name="groups_accordion"> + <accordion_tab + expanded="true" layout="topleft" name="group_general_tab" title="General"> @@ -136,12 +163,13 @@ background_visible="true" filename="panel_group_general.xml" layout="topleft" left="0" + follows="all" help_topic="group_general_tab" name="group_general_tab_panel" top="0" /> </accordion_tab> <accordion_tab - expanded="true" + expanded="false" layout="topleft" name="group_roles_tab" title="Roles"> @@ -184,28 +212,37 @@ background_visible="true" top="0" /> </accordion_tab> </accordion> - <panel + </layout_panel> + <layout_panel + height="25" + layout="topleft" + auto_resize="false" + left="0" name="button_row" - height="23" follows="bottom|left" - top_pad="-1" - width="323"> + width="313"> <button - follows="top|left" - height="22" + follows="bottom|left" + height="23" image_overlay="Refresh_Off" layout="topleft" - left="10" + left="5" + top="0" name="btn_refresh" width="23" /> - <button - height="22" - label="Create" - label_selected="New group" + <button + follows="bottom|left" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left_pad="2" + top_delta="3" name="btn_create" - left_pad="10" - visible="false" - width="100" /> + visible="true" + tool_tip="Create a new Group" + width="18" /> <!-- <button left_pad="10" height="20" @@ -215,28 +252,30 @@ background_visible="true" visible="false" width="65" />--> <button - follows="bottom|right" - label="Group Chat" + follows="bottom|left" + label="Chat" name="btn_chat" - right="-184" - left_pad="2" - height="22" - width="85" /> - <button - follows="bottom|right" - label="Group Call" + left_pad="2" + height="23" + top_delta="-3" + width="60" /> + <button + follows="bottom|left" + left_pad="2" + height="23" name="btn_call" - right="-97" - left_pad="2" - height="22" - width="85" /> + label="Group Call" + layout="topleft" + tool_tip="Call this group" + width="95" /> <button - height="22" + follows="bottom|left" + height="23" label="Save" label_selected="Save" name="btn_apply" - left_pad="10" - right="-10" + left_pad="2" width="85" /> - </panel> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 2075d7e05b5..38b0f234d5f 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -2,13 +2,13 @@ <panel border="false" follows="all" - height="380" + height="500" label="Land & L$" layout="topleft" left="0" name="land_money_tab" top="0" - width="310"> + width="313"> <panel.string name="help_text"> A warning appears until the Total Land in Use is less than or = to the Total Contribution. @@ -41,16 +41,24 @@ width="260"> Group Owned Land </text> --> + <panel + name="layout_panel_landmoney" + follows="top|left|right" + left="0" + right="-1" + height="250" + width="313" + > <scroll_list draw_heading="true" follows="top|left|right" - heading_height="20" height="130" layout="topleft" left="0" + right="-1" top="0" name="group_parcel_list" - width="310"> + width="313"> <scroll_list.columns label="Parcel" name="name" @@ -67,16 +75,12 @@ label="Area" name="area" width="50" /> - <scroll_list.columns - label="" - name="hidden" - width="-1" /> </scroll_list> <text type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="total_contributed_land_label" @@ -87,30 +91,30 @@ text_color="EmphasisColor" type="string" follows="left|top" - height="15" + height="16" layout="topleft" left_pad="5" name="total_contributed_land_value" top_delta="0" - width="120"> + width="90"> [AREA] m² </text> <button follows="top" - height="20" + height="23" label="Map" label_selected="Map" layout="topleft" name="map_button" - right="-5" + top_delta="-4" left_pad="0" - width="95" + width="60" enabled="false" /> <text type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="total_land_in_use_label" @@ -122,7 +126,7 @@ text_color="EmphasisColor" type="string" follows="left|top" - height="15" + height="16" layout="topleft" left_pad="5" name="total_land_in_use_value" @@ -134,7 +138,7 @@ type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="land_available_label" @@ -146,7 +150,7 @@ text_color="EmphasisColor" type="string" follows="left|top" - height="15" + height="16" layout="topleft" left_pad="5" name="land_available_value" @@ -158,7 +162,7 @@ type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="your_contribution_label" @@ -190,21 +194,22 @@ <text type="string" follows="left|top" - halign="right" - height="12" + halign="left" + height="16" layout="topleft" left="140" name="your_contribution_max_value" top_pad="2" - width="95"> + width="170"> ([AMOUNT] max) </text> <icon - height="18" - image_name="BuyArrow_Over" + height="16" + image_name="Parcel_Exp_Color" layout="topleft" left="75" name="group_over_limit_icon" + color="Green" top_pad="0" visible="true" width="18" /> @@ -212,12 +217,11 @@ follows="left|top" type="string" word_wrap="true" - font="SansSerifSmall" height="20" layout="topleft" left_pad="2" name="group_over_limit_text" - text_color="EmphasisColor" + text_color="ColorPaletteEntry29" top_delta="0" width="213"> More land credits are needed to support land in use @@ -235,39 +239,39 @@ width="100"> Group L$ </text> + </panel> <tab_container follows="all" - height="173" + height="230" halign="center" layout="topleft" left="0" + right="-1" name="group_money_tab_container" tab_position="top" - tab_height="20" top_pad="2" - tab_min_width="75" - width="310"> + tab_min_width="90" + width="313"> <panel border="false" follows="all" - height="173" label="PLANNING" layout="topleft" left="0" help_topic="group_money_planning_tab" name="group_money_planning_tab" - top="5" - width="300"> + top="0" + width="313"> <text_editor type="string" follows="all" - height="140" + height="200" layout="topleft" left="0" max_length="4096" name="group_money_planning_text" top="2" - width="300" + width="313" word_wrap="true"> Loading... </text_editor> @@ -275,24 +279,23 @@ <panel border="false" follows="all" - height="173" label="DETAILS" layout="topleft" left="0" help_topic="group_money_details_tab" name="group_money_details_tab" top="0" - width="300"> + width="313"> <text_editor type="string" follows="all" - height="140" + height="185" layout="topleft" left="0" max_length="4096" name="group_money_details_text" top="2" - width="300" + width="313" word_wrap="true"> Loading... </text_editor> @@ -303,59 +306,58 @@ layout="topleft" name="earlier_details_button" tool_tip="Back" - right="-45" - bottom="0" + left="200" + top_pad="0" width="25" /> <button follows="left|top" height="18" image_overlay="Arrow_Right_Off" layout="topleft" - left_pad="10" name="later_details_button" tool_tip="Next" + left_pad="15" width="25" /> </panel> <panel border="false" follows="all" - height="173" label="SALES" layout="topleft" - left_delta="0" + left="0" help_topic="group_money_sales_tab" name="group_money_sales_tab" top="0" - width="300"> + width="313"> <text_editor type="string" follows="all" - height="140" + height="185" layout="topleft" left="0" max_length="4096" name="group_money_sales_text" top="2" - width="300" + width="313" word_wrap="true"> Loading... </text_editor> - <button - bottom="0" + <button follows="left|top" height="18" image_overlay="Arrow_Left_Off" layout="topleft" name="earlier_sales_button" tool_tip="Back" - right="-45" + left="200" + top_pad="0" width="25" /> <button follows="left|top" height="18" image_overlay="Arrow_Right_Off" layout="topleft" - left_pad="10" + left_pad="15" name="later_sales_button" tool_tip="Next" width="25" /> diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index 0d9c2c21627..5f46ad78601 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel follows="all" - height="463" + height="530" label="Notices" layout="topleft" left="0" name="notices_tab" top="0" - width="310"> + width="313"> <panel.string name="help_text"> Notices let you send a message and an optionally attached item. @@ -23,26 +23,28 @@ You can turn off Notices on the General tab. type="string" word_wrap="true" height="24" - halign="right" + halign="left" layout="topleft" + text_color="White_50" left="5" name="lbl2" + right="-1" top="5" width="300"> Notices are kept for 14 days. Maximum 200 per group daily </text> <scroll_list - follows="left|top" + follows="left|top|right" column_padding="0" draw_heading="true" - heading_height="16" - height="125" + height="175" layout="topleft" - left="2" + left="0" + right="-1" name="notice_list" top_pad="0" - width="300"> + width="313"> <scroll_list.columns label="" name="icon" @@ -71,8 +73,8 @@ Maximum 200 per group daily visible="false"> None found </text> - <button - follows="bottom|left" + <button + follows="top|left" height="18" image_selected="AddItem_Press" image_unselected="AddItem_Off" @@ -85,24 +87,25 @@ Maximum 200 per group daily width="18" /> <button follows="top|left" - height="22" + height="23" image_overlay="Refresh_Off" layout="topleft" name="refresh_notices" - right="-5" + left_pad="230" tool_tip="Refresh list of notices" top_delta="0" width="23" /> <panel - follows="left|top" + follows="left|top|right" height="280" label="Create New Notice" layout="topleft" left="0" + right="-1" top_pad="0" visible="true" name="panel_create_new_notice" - width="300"> + width="313"> <text follows="left|top" type="string" @@ -204,13 +207,16 @@ Maximum 200 per group daily width="72" /> <button follows="left|top" - height="23" - label="Remove" layout="topleft" - left="70" + left="140" name="remove_attachment" - top_delta="45" - width="90" /> + top_delta="50" + height="18" + image_selected="TrashItem_Press" + image_unselected="TrashItem_Off" + image_disabled="TrashItem_Disabled" + tool_tip="Remove attachment from your notification" + width="18" /> <button follows="left|top" height="23" @@ -231,18 +237,19 @@ Maximum 200 per group daily width="280" /> </panel> <panel - follows="left|top" + follows="left|top|right" height="280" label="View Past Notice" layout="topleft" left="0" + right="-1" visible="false" name="panel_view_past_notice" - top="180" - width="300"> + top="230" + width="313"> <text type="string" - font="SansSerifBig" + font="SansSerifMedium" height="16" layout="topleft" left="10" @@ -280,7 +287,7 @@ Maximum 200 per group daily border_style="line" border_thickness="1" enabled="false" - height="16" + height="20" layout="topleft" left_pad="3" max_length="63" @@ -301,40 +308,35 @@ Maximum 200 per group daily Message: </text> <text_editor + follows="top|left|right" enabled="false" height="160" layout="topleft" - left="10" + left="0" + right="-1" max_length="511" name="view_message" - top_delta="-35" - width="285" + top_delta="-40" + width="313" word_wrap="true" /> <line_editor enabled="false" - height="16" + height="20" layout="topleft" - left_delta="0" + left="5" max_length="63" mouse_opaque="false" name="view_inventory_name" top_pad="8" - width="285" /> - <icon - height="16" - layout="topleft" - left_delta="0" - name="view_inv_icon" - top_delta="0" - width="16" /> + width="250"/> <button follows="left|top" height="23" - label="Open attachment" + label="Open Attachment" layout="topleft" - right="-10" + left="5" name="open_attachment" top_pad="5" - width="135" /> + width="180" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 6b3fb045499..a4249ce492c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel follows="all" - height="552" + height="680" label="Members & Roles" layout="topleft" left="0" top="0" name="roles_tab" - width="310"> + width="313"> <panel.string name="default_needs_apply_text"> - There are unsaved changes to the current tab + There are unsaved changes </panel.string> <panel.string name="want_apply_text"> @@ -20,17 +20,18 @@ name="help_text" /> <tab_container border="false" - follows="left|top" + follows="left|top|right" height="552" halign="center" layout="topleft" left="0" + right="-1" name="roles_tab_container" tab_position="top" - tab_height="20" - tab_min_width="75" + tab_height="22" + tab_min_width="90" top="0" - width="310"> + width="313"> <panel border="false" follows="all" @@ -38,11 +39,11 @@ label="MEMBERS" layout="topleft" left="0" + right="-1" help_topic="roles_members_tab" name="members_sub_tab" tool_tip="Members" - class="panel_group_members_subtab" - width="310"> + class="panel_group_members_subtab"> <panel.string name="help_text"> You can add or remove Roles assigned to Members. @@ -53,24 +54,23 @@ clicking on their names. layout="topleft" top="5" left="5" - width="280" - height="20" - follows="top" - max_length="250" + right="-5" + height="22" + search_button_visible="false" + follows="left|top|right" label="Filter Members" name="filter_input" /> <name_list - column_padding="0" + column_padding="2" draw_heading="true" - heading_height="20" height="240" - follows="left|top" + follows="left|top|right" layout="topleft" left="0" + right="-1" multi_select="true" name="member_list" - top_pad="2" - width="300"> + top_pad="5"> <name_list.columns label="Member" name="name" @@ -82,33 +82,33 @@ clicking on their names. <name_list.columns label="Status" name="online" - relative_width="0.15" /> + relative_width="0.14" /> </name_list> <button - height="20" - follows="bottom|left" + height="23" + follows="top|left" label="Invite" - left="5" + left="0" name="member_invite" width="100" /> <button - height="20" + height="23" label="Eject" - left_pad="5" - right="-5" + follows="top|left" + left_pad="10" name="member_eject" width="100" /> </panel> <panel border="false" - height="230" + height="303" label="ROLES" layout="topleft" left="0" + right="-1" help_topic="roles_roles_tab" name="roles_sub_tab" - class="panel_group_roles_subtab" - width="310"> + class="panel_group_roles_subtab"> <!-- <button enabled="false" height="20" @@ -145,22 +145,23 @@ including the Everyone and Owner Roles. layout="topleft" top="5" left="5" - width="280" - height="20" + right="-5" + height="22" + search_button_visible="false" follows="left|top|right" - max_length="250" label="Filter Roles" name="filter_input" /> <scroll_list column_padding="0" draw_heading="true" draw_stripes="false" - follows="left|top" - heading_height="20" - height="170" + heading_height="23" + height="130" layout="topleft" search_column="1" left="0" + follows="left|top|right" + right="-1" name="role_list" top_pad="2" width="310"> @@ -178,28 +179,29 @@ including the Everyone and Owner Roles. relative_width="0.15" /> </scroll_list> <button - follows="bottom|left" - height="20" + follows="top|left" + height="23" label="New Role" layout="topleft" - left="5" + left="0" name="role_create" - width="100" /> + width="120" /> <button - height="20" + height="23" + follows="top|left" label="Delete Role" layout="topleft" - left_pad="5" - right="-5" + left_pad="10" name="role_delete" - width="100" /> + width="120" /> </panel> <panel border="false" - height="220" + height="303" label="ABILITIES" layout="topleft" left="0" + right="-1" help_topic="roles_actions_tab" name="actions_sub_tab" class="panel_group_actions_subtab" @@ -226,13 +228,12 @@ things in this group. There's a broad variety of Abilities. layout="topleft" top="5" left="5" - width="280" - height="20" + right="-5" + height="22" + search_button_visible="false" follows="left|top|right" - max_length="250" label="Filter Abilities" name="filter_input" /> - <scroll_list column_padding="0" draw_stripes="true" @@ -240,6 +241,7 @@ things in this group. There's a broad variety of Abilities. follows="left|top" layout="topleft" left="0" + right="-1" name="action_list" search_column="2" tool_tip="Select an Ability to view more details" @@ -261,35 +263,39 @@ things in this group. There's a broad variety of Abilities. </panel> </tab_container> <panel - height="252" + height="350" + background_visible="true" + bg_alpha_color="FloaterUnfocusBorderColor" layout="topleft" - follows="left|top" + follows="top|left|right" left="0" - mouse_opaque="false" + right="-1" + width="313" + mouse_opaque="false" name="members_footer" - top="300" - visible="false" - width="310"> + top="325" + visible="false"> <text type="string" - height="14" + height="16" layout="topleft" follows="left|top" - left="0" + left="5" + top="8" + text_color="EmphasisColor" name="static" - top_pad="5" width="300"> Assigned Roles </text> <scroll_list draw_stripes="true" - follows="left|top" - height="90" + follows="left|top|right" + height="150" layout="topleft" left="0" + right="-1" name="member_assigned_roles" - top_pad="0" - width="300"> + top_pad="0"> <scroll_list.columns label="" name="checkbox" @@ -299,27 +305,29 @@ things in this group. There's a broad variety of Abilities. name="role" width="270" /> </scroll_list> - <text + <text type="string" - height="14" + height="16" layout="topleft" follows="left|top" - left="0" - name="static2" + left="5" top_pad="5" + text_color="EmphasisColor" + name="static2" width="285"> Allowed Abilities </text> <scroll_list draw_stripes="true" - height="90" + follows="left|top|right" + height="150" layout="topleft" left="0" + right="-1" name="member_allowed_actions" search_column="2" tool_tip="For details of each allowed ability see the abilities tab" - top_pad="0" - width="300"> + top_pad="0"> <scroll_list.columns label="" name="action" @@ -327,30 +335,37 @@ things in this group. There's a broad variety of Abilities. </scroll_list> </panel> <panel - height="297" + height="550" + background_visible="true" + bg_alpha_color="FloaterUnfocusBorderColor" layout="topleft" + follows="top|left|right" left="0" + right="-1" + width="313" + mouse_opaque="false" name="roles_footer" top_delta="0" - top="220" - visible="false" - width="310"> + top="209" + visible="false"> <text type="string" - height="14" + height="16" layout="topleft" - left="0" + follows="left|top" + left="5" + top="5" name="static" - top="0" width="300"> Role Name </text> <line_editor type="string" - follows="left|top" height="20" layout="topleft" left="0" + follows="left|top|right" + right="-1" max_length="295" name="role_name" top_pad="0" @@ -358,8 +373,10 @@ things in this group. There's a broad variety of Abilities. </line_editor> <text type="string" - height="14" + height="16" layout="topleft" + follows="left|top" + left="5" name="static3" top_pad="5" width="300"> @@ -367,19 +384,22 @@ things in this group. There's a broad variety of Abilities. </text> <line_editor type="string" - follows="left|top" height="20" layout="topleft" + left="0" + follows="left|top|right" + right="-1" max_length="295" name="role_title" top_pad="0" width="300"> </line_editor> - <text + <text type="string" - height="14" + height="16" layout="topleft" - left="0" + follows="left|top" + left="5" name="static2" top_pad="5" width="200"> @@ -387,11 +407,12 @@ things in this group. There's a broad variety of Abilities. </text> <text_editor type="string" - halign="left" - height="35" layout="topleft" left="0" + follows="left|top|right" + right="-1" max_length="295" + height="35" name="role_description" top_pad="0" width="300" @@ -399,10 +420,11 @@ things in this group. There's a broad variety of Abilities. </text_editor> <text type="string" - height="14" + height="16" layout="topleft" follows="left|top" - left="0" + left="5" + text_color="EmphasisColor" name="static4" top_pad="5" width="300"> @@ -410,15 +432,18 @@ things in this group. There's a broad variety of Abilities. </text> <name_list draw_stripes="true" - height="60" + height="128" layout="topleft" left="0" + follows="left|top|right" + right="-1" name="role_assigned_members" top_pad="0" width="300" /> <check_box height="15" label="Reveal members" + left="5" layout="topleft" name="role_visible_in_list" tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group." @@ -426,29 +451,28 @@ things in this group. There's a broad variety of Abilities. width="300" /> <text type="string" - height="13" + height="16" layout="topleft" follows="left|top" - left="0" + left="5" + text_color="EmphasisColor" name="static5" - top_pad="5" + top_pad="2" width="300"> Allowed Abilities </text> <scroll_list draw_stripes="true" - height="60" + height="140" layout="topleft" left="0" + follows="left|top|right" + right="-1" name="role_allowed_actions" search_column="2" tool_tip="For details of each allowed ability see the abilities tab" top_pad="0" width="300"> - <scroll_list.columns - label="" - name="icon" - width="2" /> <scroll_list.columns label="" name="checkbox" @@ -460,14 +484,19 @@ things in this group. There's a broad variety of Abilities. </scroll_list> </panel> <panel - height="303" + height="424" + background_visible="true" + bg_alpha_color="FloaterUnfocusBorderColor" layout="topleft" + follows="top|left|right" left="0" + right="-1" + width="313" + mouse_opaque="false" name="actions_footer" top_delta="0" top="255" - visible="false" - width="310"> + visible="false"> <text_editor bg_readonly_color="Transparent" text_readonly_color="EmphasisColor" @@ -475,44 +504,54 @@ things in this group. There's a broad variety of Abilities. type="string" enabled="false" halign="left" - height="90" layout="topleft" + follows="left|top|right" + left="0" + right="-1" + height="90" max_length="512" name="action_description" - top_pad="0" - width="295" + top="0" word_wrap="true"> This Ability is 'Eject Members from this Group'. Only an Owner can eject another Owner. </text_editor> <text type="string" - height="14" + height="16" layout="topleft" + follows="left|top" left="5" name="static2" - top_pad="5" + top_pad="1" width="300"> Roles with this ability </text> <scroll_list - height="65" + height="172" layout="topleft" + follows="left|top|right" left="5" + right="-1" name="action_roles" top_pad="0" width="300" /> <text type="string" - height="14" + height="16" layout="topleft" + follows="left|top" + left="5" name="static3" top_pad="5" width="300"> Members with this ability </text> <name_list - height="100" + height="122" + follows="left|top|right" layout="topleft" + left="5" + right="-1" name="action_members" top_pad="0" width="300" /> diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml index 3f836a661dd..eb95de3a7ca 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml @@ -91,7 +91,7 @@ class="panel_group_info_sidetray" name="panel_group_info_sidetray" filename="panel_group_info_sidetray.xml" - label="Group Info" + label="Group Profile" font="SansSerifBold" /> <panel -- GitLab From 6ffc21e00d07a7c90d46009571556a9caec96e62 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Mon, 25 Jan 2010 12:07:23 +0200 Subject: [PATCH 062/521] fixed EXT-3395 "Docked IM/Chat windows shouldn't hide when voice control panel is opened", added transient controls group 'DOCKED' for temporary excluded docked floaters and dock widgets; --HG-- branch : product-engine --- indra/newview/lltransientdockablefloater.cpp | 24 +++++++++++++------- indra/newview/lltransientfloatermgr.cpp | 4 +++- indra/newview/lltransientfloatermgr.h | 2 +- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp index c9bfe178ce4..9d39aa51824 100644 --- a/indra/newview/lltransientdockablefloater.cpp +++ b/indra/newview/lltransientdockablefloater.cpp @@ -48,6 +48,14 @@ LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockContro LLTransientDockableFloater::~LLTransientDockableFloater() { LLTransientFloaterMgr::getInstance()->unregisterTransientFloater(this); + LLView* dock = getDockWidget(); + LLTransientFloaterMgr::getInstance()->removeControlView( + LLTransientFloaterMgr::DOCKED, this); + if (dock != NULL) + { + LLTransientFloaterMgr::getInstance()->removeControlView( + LLTransientFloaterMgr::DOCKED, dock); + } } void LLTransientDockableFloater::setVisible(BOOL visible) @@ -55,18 +63,18 @@ void LLTransientDockableFloater::setVisible(BOOL visible) LLView* dock = getDockWidget(); if(visible && isDocked()) { - LLTransientFloaterMgr::getInstance()->addControlView(this); + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this); if (dock != NULL) { - LLTransientFloaterMgr::getInstance()->addControlView(dock); + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock); } } else { - LLTransientFloaterMgr::getInstance()->removeControlView(this); + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this); if (dock != NULL) { - LLTransientFloaterMgr::getInstance()->removeControlView(dock); + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock); } } @@ -78,18 +86,18 @@ void LLTransientDockableFloater::setDocked(bool docked, bool pop_on_undock) LLView* dock = getDockWidget(); if(docked) { - LLTransientFloaterMgr::getInstance()->addControlView(this); + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this); if (dock != NULL) { - LLTransientFloaterMgr::getInstance()->addControlView(dock); + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock); } } else { - LLTransientFloaterMgr::getInstance()->removeControlView(this); + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this); if (dock != NULL) { - LLTransientFloaterMgr::getInstance()->removeControlView(dock); + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock); } } diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp index 8f1a738453f..d82403070be 100644 --- a/indra/newview/lltransientfloatermgr.cpp +++ b/indra/newview/lltransientfloatermgr.cpp @@ -46,6 +46,7 @@ LLTransientFloaterMgr::LLTransientFloaterMgr() &LLTransientFloaterMgr::leftMouseClickCallback, this, _1, _2, _3)); mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>())); + mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>())); mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>())); } @@ -132,7 +133,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y, return; } - bool hide = isControlClicked(mGroupControls.find(GLOBAL)->second, x, y); + bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y) + && isControlClicked(mGroupControls.find(GLOBAL)->second, x, y); if (hide) { hideTransientFloaters(x, y); diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index 1f99325a7fb..9c5ae295f28 100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h @@ -51,7 +51,7 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr> public: enum ETransientGroup { - GLOBAL, IM + GLOBAL, DOCKED, IM }; void registerTransientFloater(LLTransientFloater* floater); -- GitLab From 74b3c9e0e5cbcb2c34ae0f8dd2d0186826a227da Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Mon, 25 Jan 2010 12:53:02 +0200 Subject: [PATCH 063/521] Fixed normal bug EXT-3880 ( [BSI] functionality loss - online status in profile) -- removed logic implemented for EXT-2022 (show "Online" status or nothing) -- removed deprecated method LLPanelProfileView::togglePanel -- implemented required bihavior (for friends): --- Online when online and privacy settings allow to show --- Offline when offline and privacy settings allow to show --- Else: nothing -- also implemented bihavior for non-friends to use global Preference: "Only Friends & Groups can see when I am online" --- Online when online and was not set in Preferences/"Only Friends & Groups can see when I am online" --- Else: Offline --HG-- branch : product-engine --- indra/newview/llpanelprofileview.cpp | 54 ++++++++++++++-------------- indra/newview/llpanelprofileview.h | 20 ++++++++--- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp index 7832f63e6a6..044036ea50e 100644 --- a/indra/newview/llpanelprofileview.cpp +++ b/indra/newview/llpanelprofileview.cpp @@ -101,8 +101,6 @@ void LLPanelProfileView::onOpen(const LLSD& key) id = key["id"]; } - // subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself - mAvatarStatusObserver->subscribe(); if(id.notNull() && getAvatarId() != id) { setAvatarId(id); @@ -111,12 +109,9 @@ void LLPanelProfileView::onOpen(const LLSD& key) // Update the avatar name. gCacheName->get(getAvatarId(), FALSE, boost::bind(&LLPanelProfileView::onAvatarNameCached, this, _1, _2, _3, _4)); -/* -// disable this part of code according to EXT-2022. See processOnlineStatus - // status should only show if viewer has permission to view online/offline. EXT-453 - mStatusText->setVisible(isGrantedToSeeOnlineStatus()); + updateOnlineStatus(); -*/ + LLPanelProfile::onOpen(key); } @@ -164,27 +159,43 @@ bool LLPanelProfileView::isGrantedToSeeOnlineStatus() // *NOTE: GRANT_ONLINE_STATUS is always set to false while changing any other status. // When avatar disallow me to see her online status processOfflineNotification Message is received by the viewer // see comments for ChangeUserRights template message. EXT-453. -// return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS); - return true; + // If GRANT_ONLINE_STATUS flag is changed it will be applied when viewer restarts. EXT-3880 + return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS); } +// method was disabled according to EXT-2022. Re-enabled & improved according to EXT-3880 void LLPanelProfileView::updateOnlineStatus() { + // set text box visible to show online status for non-friends who has not set in Preferences + // "Only Friends & Groups can see when I am online" + mStatusText->setVisible(TRUE); + const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); if (NULL == relationship) - return; + { + // this is non-friend avatar. Status will be updated from LLAvatarPropertiesProcessor. + // in LLPanelProfileView::processOnlineStatus() - bool online = relationship->isOnline(); + // subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself. + // do not subscribe for friend avatar because online status can be wrong overridden + // via LLAvatarData::flags if Preferences: "Only Friends & Groups can see when I am online" is set. + mAvatarStatusObserver->subscribe(); + return; + } + // For friend let check if he allowed me to see his status - std::string status = getString(online ? "status_online" : "status_offline"); + // status should only show if viewer has permission to view online/offline. EXT-453, EXT-3880 + mStatusText->setVisible(isGrantedToSeeOnlineStatus()); - mStatusText->setValue(status); + bool online = relationship->isOnline(); + processOnlineStatus(online); } void LLPanelProfileView::processOnlineStatus(bool online) { - mAvatarIsOnline = online; - mStatusText->setVisible(online); + std::string status = getString(online ? "status_online" : "status_offline"); + + mStatusText->setValue(status); } void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group) @@ -193,17 +204,4 @@ void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& getChild<LLUICtrl>("user_name", FALSE)->setValue(first_name + " " + last_name); } -void LLPanelProfileView::togglePanel(LLPanel* panel, const LLSD& key) -{ - // *TODO: unused method? - - LLPanelProfile::togglePanel(panel); - if(FALSE == panel->getVisible()) - { - // LLPanelProfile::togglePanel shows/hides all children, - // we don't want to display online status for non friends, so re-hide it here - mStatusText->setVisible(mAvatarIsOnline); - } -} - // EOF diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h index 5dc617d4a04..9b87e146a86 100644 --- a/indra/newview/llpanelprofileview.h +++ b/indra/newview/llpanelprofileview.h @@ -64,8 +64,6 @@ class LLPanelProfileView : public LLPanelProfile /*virtual*/ BOOL postBuild(); - /*virtual*/ void togglePanel(LLPanel* panel, const LLSD& key = LLSD()); - BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, @@ -81,8 +79,21 @@ class LLPanelProfileView : public LLPanelProfile protected: void onBackBtnClick(); - bool isGrantedToSeeOnlineStatus(); // deprecated after EXT-2022 is implemented - void updateOnlineStatus(); // deprecated after EXT-2022 is implemented + bool isGrantedToSeeOnlineStatus(); + + /** + * Displays avatar's online status if possible. + * + * Requirements from EXT-3880: + * For friends: + * - Online when online and privacy settings allow to show + * - Offline when offline and privacy settings allow to show + * - Else: nothing + * For other avatars: + * - Online when online and was not set in Preferences/"Only Friends & Groups can see when I am online" + * - Else: Offline + */ + void updateOnlineStatus(); void processOnlineStatus(bool online); private: @@ -96,7 +107,6 @@ class LLPanelProfileView : public LLPanelProfile LLTextBox* mStatusText; AvatarStatusObserver* mAvatarStatusObserver; - bool mAvatarIsOnline; }; #endif //LL_LLPANELPROFILEVIEW_H -- GitLab From 2128a929c36dd51590349c9196e38dfc6006b24d Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Mon, 25 Jan 2010 20:53:43 +0200 Subject: [PATCH 064/521] Fixed reopened normal bug EXT-4450([BSI] call buttons enabled when voice is disabled). - Added check for call availability in miniinspector's context menu - Removed ability to call yourself in group chat context menu - Added check for call availability for context menu which appears on right mouse click on avatar in game area --HG-- branch : product-engine --- indra/newview/llinspectavatar.cpp | 1 + indra/newview/llparticipantlist.cpp | 4 +++- indra/newview/llviewermenu.cpp | 1 + indra/newview/skins/default/xui/en/menu_attachment_other.xml | 2 ++ indra/newview/skins/default/xui/en/menu_avatar_other.xml | 2 ++ .../newview/skins/default/xui/en/menu_inspect_avatar_gear.xml | 2 ++ 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 4b0539337ba..3a41aebf280 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -229,6 +229,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd) mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this)); + mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall)); mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this)); mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this)); diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index c0302eee9e0..f83f3eba968 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -628,7 +628,9 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& } else if (item == "can_call") { - return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking(); + bool not_agent = mUUIDs.front() != gAgentID; + bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); + return can_call; } return true; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5ff5b82a17e..54de693222a 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7959,6 +7959,7 @@ void initialize_menus() commit.add("Avatar.Eject", boost::bind(&handle_avatar_eject, LLSD())); view_listener_t::addMenu(new LLAvatarSendIM(), "Avatar.SendIM"); view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call"); + enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall)); view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse"); view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend"); diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index 5b94645b603..c5b31c7f631 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -30,6 +30,8 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> + <menu_item_call.on_enable + function="Avatar.EnableCall" /> </menu_item_call> <menu_item_call label="Invite to Group" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index 0ad41546d20..ac9101cfd90 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -30,6 +30,8 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> + <menu_item_call.on_enable + function="Avatar.EnableCall" /> </menu_item_call> <menu_item_call label="Invite to Group" diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index dde92f23b6b..85ec1748291 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -32,6 +32,8 @@ name="call"> <menu_item_call.on_click function="InspectAvatar.Call"/> + <menu_item_call.on_enable + function="InspectAvatar.Gear.EnableCall"/> </menu_item_call> <menu_item_call label="Teleport" -- GitLab From a908a528fea9e51ca8c8d9e6cc7a7401991f160a Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Mon, 25 Jan 2010 22:19:03 +0200 Subject: [PATCH 065/521] No ticket. Fixed a bit(added check for canCall()) isCalling() method from LLAvataActions, but it appears that it is not used anywhere. So i commented it out. Maybe it should be removed? --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 7 +++++-- indra/newview/llavataractions.h | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index bb14c41cec8..7eed2e7b9a2 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -250,17 +250,20 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids) make_ui_sound("UISndStartIM"); } +/* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? // static bool LLAvatarActions::isCalling(const LLUUID &id) { - if (id.isNull()) + if (id.isNull() || !canCall()) { return false; } LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, id); return (LLIMModel::getInstance()->findIMSession(session_id) != NULL); -} +}*/ //static bool LLAvatarActions::canCall() diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index ebfd40b796f..c751661acff 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -126,7 +126,10 @@ class LLAvatarActions /** * Return true if the avatar is in a P2P voice call with a given user */ - static bool isCalling(const LLUUID &id); + /* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? + static bool isCalling(const LLUUID &id);*/ /** * @return true if call to the resident can be made -- GitLab From 12961b57014f099ad35bd9c2e4dfae1bc4a549c3 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 26 Jan 2010 09:12:34 +0200 Subject: [PATCH 066/521] fix for normal EXT-4443 Copying text from notifications fails --HG-- branch : product-engine --- indra/llui/lltexteditor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index f2c3879a6c9..ae34b0a042d 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2040,6 +2040,19 @@ void LLTextEditor::showContextMenu(S32 x, S32 y) LLMenuHolderGL::child_registry_t::instance()); } + // Route menu to this class + // previously this was done in ::handleRightMoseDown: + //if(hasTabStop()) + // setFocus(TRUE) - why? weird... + // and then inside setFocus + // .... + // gEditMenuHandler = this; + // .... + // but this didn't work in all cases and just weird... + //why not hear? + + gEditMenuHandler = this; + S32 screen_x, screen_y; localPointToScreen(x, y, &screen_x, &screen_y); mContextMenu->show(screen_x, screen_y); -- GitLab From 865617da42d1ec723362f83d6ab2edbae5bb9a65 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 26 Jan 2010 10:16:19 +0200 Subject: [PATCH 067/521] sidefix for EXT-4484 [BSI] default find window size covers up lower tray --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_search.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index b0bb282abd4..775e7d66f79 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -2,9 +2,9 @@ <floater legacy_header_height="13" can_resize="true" - height="646" + height="546" layout="topleft" - min_height="646" + min_height="546" min_width="670" name="floater_search" help_topic="floater_search" @@ -21,7 +21,7 @@ Done </floater.string> <layout_stack - bottom="641" + bottom="541" follows="left|right|top|bottom" layout="topleft" left="10" @@ -42,7 +42,7 @@ left="0" name="browser" top="0" - height="600" + height="500" width="650" /> <text follows="bottom|left" -- GitLab From 6a3e89c34ab6db1120f2409a830ff561543a7fce Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Tue, 26 Jan 2010 10:40:30 +0200 Subject: [PATCH 068/521] Work on low bug EXT-4637 (Remove Warning flood from the VCP) -- refactoring: moved processing of participants which are not in current voice channel into separate method. --HG-- branch : product-engine --- indra/newview/llcallfloater.cpp | 52 ++++++++++++++++++--------------- indra/newview/llcallfloater.h | 4 +++ 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index d9df537e032..ba50d0454ea 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -568,34 +568,38 @@ void LLCallFloater::updateParticipantsVoiceState() if (!found) { - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a JOINED status this means that this person - // HAS LEFT the call. - if ((getState(participant_id) == STATE_JOINED)) - { - setState(item, STATE_LEFT); + updateNotInVoiceParticipantState(item); + } + } +} - LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(item->getAvatarId()); - if (speaker.isNull()) - { - continue; - } +void LLCallFloater::updateNotInVoiceParticipantState(LLAvatarListItem* item) +{ + LLUUID participant_id = item->getAvatarId(); + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has a JOINED status this means that this person + // HAS LEFT the call. + if ((getState(participant_id) == STATE_JOINED)) + { + setState(item, STATE_LEFT); - speaker->mHasLeftCurrentCall = TRUE; - } - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a LEFT status this means that this person - // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status - else if ((getState(participant_id) != STATE_LEFT)) - { - setState(item, STATE_INVITED); - } - else - { - llwarns << "Unsupported (" << getState(participant_id) << ") state: " << item->getAvatarName() << llendl; - } + LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id); + if (speaker.notNull()) + { + speaker->mHasLeftCurrentCall = TRUE; } } + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has a LEFT status this means that this person + // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status + else if ((getState(participant_id) != STATE_LEFT)) + { + setState(item, STATE_INVITED); + } + else + { + llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName() << llendl; + } } void LLCallFloater::setState(LLAvatarListItem* item, ESpeakerState state) diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index eded3a426b8..766191379ba 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -145,6 +145,10 @@ class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipan */ void updateParticipantsVoiceState(); + /** + * Updates voice state of participant not in current voice channel depend on its current state. + */ + void updateNotInVoiceParticipantState(LLAvatarListItem* item); void setState(LLAvatarListItem* item, ESpeakerState state); void setState(const LLUUID& speaker_id, ESpeakerState state) { -- GitLab From b15bebb34853cb839100c48f5b28d52e60660c13 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Tue, 26 Jan 2010 12:13:01 +0200 Subject: [PATCH 069/521] Fixed low bug EXT-4637 (Remove Warning flood from the VCP) -- refactoring: replaced "if-else" conditions with the "switch" statement. For now all existent for now states are processed. VCP functionality was not changed. --HG-- branch : product-engine --- indra/newview/llcallfloater.cpp | 41 ++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index ba50d0454ea..1e713dade8b 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -576,29 +576,38 @@ void LLCallFloater::updateParticipantsVoiceState() void LLCallFloater::updateNotInVoiceParticipantState(LLAvatarListItem* item) { LLUUID participant_id = item->getAvatarId(); - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a JOINED status this means that this person - // HAS LEFT the call. - if ((getState(participant_id) == STATE_JOINED)) + ESpeakerState current_state = getState(participant_id); + + switch (current_state) { + case STATE_JOINED: + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has a JOINED status this means that this person + // HAS LEFT the call. setState(item, STATE_LEFT); - LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id); - if (speaker.notNull()) { - speaker->mHasLeftCurrentCall = TRUE; + LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id); + if (speaker.notNull()) + { + speaker->mHasLeftCurrentCall = TRUE; + } } - } - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a LEFT status this means that this person - // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status - else if ((getState(participant_id) != STATE_LEFT)) - { + break; + case STATE_INVITED: + case STATE_LEFT: + // nothing to do. These states should not be changed. + break; + case STATE_UNKNOWN: + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has an UNKNOWN status this means that this person + // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status setState(item, STATE_INVITED); - } - else - { + break; + default: + // for possible new future states. llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName() << llendl; + break; } } -- GitLab From a402b2975fdb88781efa340d186c9ace449f9521 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 26 Jan 2010 12:25:11 +0200 Subject: [PATCH 070/521] fix for normal [BSI] About Land -> Script Information -> Divider between object owner and parcel location cannot be moved to resize fields --HG-- branch : product-engine --- indra/newview/llfloaterscriptlimits.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 0964ad7f917..8875e35821b 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -528,7 +528,16 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild() std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); childSetValue("loading_text", LLSD(msg_waiting)); - + + LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + + //set all columns to resizable mode even if some columns will be empty + for(S32 column = 0; column < list->getNumColumns(); column++) + { + LLScrollListColumn* columnp = list->getColumn(column); + columnp->mHeader->setHasResizableElement(TRUE); + } + return StartRequestChain(); } -- GitLab From cf7ff53d73a4f705e3caac7013ec40e9011f5963 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 26 Jan 2010 13:53:54 +0200 Subject: [PATCH 071/521] EXT-4432 [BSI] Script errors are shown in nearby chat floater, but not displayed as nearby chat toast when floater closed --HG-- branch : product-engine --- indra/newview/llnearbychathandler.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index c50e049d4c3..a1a9d84c14b 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -356,12 +356,17 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) initChannel(); } + /* + //comment all this due to EXT-4432 + ..may clean up after some time... + //only messages from AGENTS if(CHAT_SOURCE_OBJECT == chat_msg.mSourceType) { if(chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG) return;//ok for now we don't skip messeges from object, so skip only debug messages } + */ LLUUID id; id.generate(); -- GitLab From a1b81987228aca8ea533dcbf25aa8f05880abf84 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 26 Jan 2010 14:09:15 +0200 Subject: [PATCH 072/521] done (fixing patch) EXT-4499 Replace "*" glyph in password fields with a proper circle [PATCH INCLUDED] --HG-- branch : product-engine --- indra/llui/lllineeditor.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 73e4d126f32..cb5aea272df 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -70,6 +70,8 @@ const S32 SCROLL_INCREMENT_DEL = 4; // make space for baskspacing const F32 AUTO_SCROLL_TIME = 0.05f; const F32 TRIPLE_CLICK_INTERVAL = 0.3f; // delay between double and triple click. *TODO: make this equal to the double click interval? +const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE + static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor"); // Compiler optimization, generate extern template @@ -401,7 +403,7 @@ void LLLineEditor::setCursorAtLocalPos( S32 local_mouse_x ) { for (S32 i = 0; i < mText.length(); i++) { - asterix_text += '*'; + asterix_text += utf8str_to_wstring(PASSWORD_ASTERISK); } wtext = asterix_text.c_str(); } @@ -1599,7 +1601,7 @@ void LLLineEditor::draw() std::string text; for (S32 i = 0; i < mText.length(); i++) { - text += '*'; + text += PASSWORD_ASTERISK; } mText = text; } -- GitLab From fd33910c39ceb7f589c085a5cccda7c10784f0ac Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 26 Jan 2010 14:34:02 +0200 Subject: [PATCH 073/521] add comment for EXT-4443 about EXT-4443... --HG-- branch : product-engine --- indra/llui/lltexteditor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index ae34b0a042d..06ba0d80e9a 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2049,7 +2049,8 @@ void LLTextEditor::showContextMenu(S32 x, S32 y) // gEditMenuHandler = this; // .... // but this didn't work in all cases and just weird... - //why not hear? + //why not here? + // (all this was done for EXT-4443) gEditMenuHandler = this; -- GitLab From 1ac01f34b201154ec75d7e0143857b8229af776a Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Tue, 26 Jan 2010 15:21:41 +0200 Subject: [PATCH 074/521] fixed minor bug EXT-4186 List items are displayed as links in the FlatList if match URL regexp Solution: disabling html parsing in teleport history item. --HG-- branch : product-engine --- .../newview/skins/default/xui/en/panel_teleport_history_item.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 4f40e008156..c5f3fcc27df 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml @@ -41,6 +41,7 @@ height="20" layout="topleft" left_pad="5" + allow_html="false" use_ellipses="true" name="region" text_color="white" -- GitLab From 4fec1fb665e5a6c93b6131d9746e3890a075c105 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Tue, 26 Jan 2010 15:36:41 +0200 Subject: [PATCH 075/521] =?UTF-8?q?fixed=20EXT-3783=20=E2=80=9CSystem=20me?= =?UTF-8?q?ssages=20displayed=20in=20nearby=20chat=E2=80=9D,=20made=20voic?= =?UTF-8?q?e=20status=20messages=20displayed=20in=20pop-out=20window;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llimview.cpp | 53 ++++++++++++++++++++-------- indra/newview/llimview.h | 17 ++++++--- indra/newview/llviewerfloaterreg.cpp | 1 + indra/newview/llvoicechannel.cpp | 12 +++---- 4 files changed, 57 insertions(+), 26 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 32b0cbff389..1b1e6501c0a 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1577,7 +1577,7 @@ void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id) } } -bool LLOutgoingCallDialog::lifetimeHasExpired() +bool LLCallDialog::lifetimeHasExpired() { if (mLifetimeTimer.getStarted()) { @@ -1590,7 +1590,7 @@ bool LLOutgoingCallDialog::lifetimeHasExpired() return false; } -void LLOutgoingCallDialog::onLifetimeExpired() +void LLCallDialog::onLifetimeExpired() { mLifetimeTimer.stop(); closeFloater(); @@ -1744,19 +1744,6 @@ LLCallDialog(payload) { } -bool LLIncomingCallDialog::lifetimeHasExpired() -{ - if (mLifetimeTimer.getStarted()) - { - F32 elapsed_time = mLifetimeTimer.getElapsedTimeF32(); - if (elapsed_time > mLifetime) - { - return true; - } - } - return false; -} - void LLIncomingCallDialog::onLifetimeExpired() { // check whether a call is valid or not @@ -3218,6 +3205,42 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode } }; +LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload) +{ +} + +BOOL LLCallInfoDialog::postBuild() +{ + // init notification's lifetime + std::istringstream ss( getString("lifetime") ); + if (!(ss >> mLifetime)) + { + mLifetime = DEFAULT_LIFETIME; + } + return LLCallDialog::postBuild(); +} + +void LLCallInfoDialog::onOpen(const LLSD& key) +{ + if(key.has("msg")) + { + std::string msg = key["msg"]; + getChild<LLTextBox>("msg")->setValue(msg); + } + + mLifetimeTimer.start(); +} + +void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args) +{ + LLUIString message = LLTrans::getString(status_name); + message.setArgs(args); + + LLSD payload; + payload["msg"] = message; + LLFloaterReg::showInstance("call_info", payload); +} + LLHTTPRegistration<LLViewerChatterBoxSessionStartReply> gHTTPRegistrationMessageChatterboxsessionstartreply( "/message/ChatterBoxSessionStartReply"); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index a3b4f78af0c..0386ff234dd 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -512,8 +512,8 @@ class LLCallDialog : public LLDockableFloater // notification's lifetime in seconds S32 mLifetime; static const S32 DEFAULT_LIFETIME = 5; - virtual bool lifetimeHasExpired() {return false;}; - virtual void onLifetimeExpired() {}; + virtual bool lifetimeHasExpired(); + virtual void onLifetimeExpired(); virtual void getAllowedRect(LLRect& rect); @@ -543,7 +543,6 @@ class LLIncomingCallDialog : public LLCallDialog static void onStartIM(void* user_data); private: - /*virtual*/ bool lifetimeHasExpired(); /*virtual*/ void onLifetimeExpired(); void processCallResponse(S32 response); }; @@ -562,8 +561,16 @@ class LLOutgoingCallDialog : public LLCallDialog private: // hide all text boxes void hideAllText(); - /*virtual*/ bool lifetimeHasExpired(); - /*virtual*/ void onLifetimeExpired(); +}; + +class LLCallInfoDialog : public LLCallDialog +{ +public: + LLCallInfoDialog(const LLSD& payload); + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + + static void show(const std::string& status_name, const LLSD& args); }; // Globals diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 3a834e75322..e87d380e4df 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -204,6 +204,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>); LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>); + LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>); LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>); LLFloaterPayUtil::registerFloater(); diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 917d69fe16d..589999c0264 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -389,13 +389,13 @@ void LLVoiceChannel::setState(EState state) switch(state) { case STATE_RINGING: - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + LLCallInfoDialog::show("ringing", mNotifyArgs); break; case STATE_CONNECTED: - gIMMgr->addSystemMessage(mSessionID, "connected", mNotifyArgs); + LLCallInfoDialog::show("connected", mNotifyArgs); break; case STATE_HUNG_UP: - gIMMgr->addSystemMessage(mSessionID, "hang_up", mNotifyArgs); + LLCallInfoDialog::show("hang_up", mNotifyArgs); break; default: break; @@ -635,7 +635,7 @@ void LLVoiceChannelGroup::setState(EState state) case STATE_RINGING: if ( !mIsRetrying ) { - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + LLCallInfoDialog::show("ringing", mNotifyArgs); } doSetState(state); @@ -698,7 +698,7 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status) // do not notify user when leaving proximal channel return; case STATUS_VOICE_DISABLED: - gIMMgr->addSystemMessage(LLUUID::null, "unavailable", mNotifyArgs); + LLCallInfoDialog::show("unavailable", mNotifyArgs); return; default: break; @@ -897,7 +897,7 @@ void LLVoiceChannelP2P::setState(EState state) // so provide a special purpose message here if (mReceivedCall && state == STATE_RINGING) { - gIMMgr->addSystemMessage(mSessionID, "answering", mNotifyArgs); + LLCallInfoDialog::show("answering", mNotifyArgs); doSetState(state); return; } -- GitLab From 366baa7b652bee00bd6f4fa2651f4a43ba8aabe0 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Tue, 26 Jan 2010 15:35:41 +0200 Subject: [PATCH 076/521] Fixed (EXT-2249) Place profile data blinks several times while updating after teleport. - Added update timer to avoid data blinking. --HG-- branch : product-engine --- indra/newview/llpanelplaces.cpp | 16 ++++++++++++---- indra/newview/llpanelplaces.h | 6 ++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index a8a9717750b..7272a8a652c 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -34,7 +34,7 @@ #include "llpanelplaces.h" #include "llassettype.h" -#include "llwindow.h" +#include "lltimer.h" #include "llinventory.h" #include "lllandmark.h" @@ -49,6 +49,8 @@ #include "lltrans.h" #include "lluictrlfactory.h" +#include "llwindow.h" + #include "llagent.h" #include "llagentpicksinfo.h" #include "llavatarpropertiesprocessor.h" @@ -73,6 +75,7 @@ #include "llviewerwindow.h" static const S32 LANDMARK_FOLDERS_MENU_WIDTH = 250; +static const F32 PLACE_INFO_UPDATE_INTERVAL = 3.0; static const std::string AGENT_INFO_TYPE = "agent"; static const std::string CREATE_LANDMARK_INFO_TYPE = "create_landmark"; static const std::string LANDMARK_INFO_TYPE = "landmark"; @@ -830,6 +833,10 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) { mPlaceProfile->resetLocation(); + // Do not reset location info until mResetInfoTimer has expired + // to avoid text blinking. + mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL); + LLRect rect = getRect(); LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); mPlaceProfile->reshape(new_rect.getWidth(), new_rect.getHeight()); @@ -920,11 +927,12 @@ void LLPanelPlaces::changedParcelSelection() } } - // Reset location info only if global position is changed - // to reduce unnecessary text and icons updates. - if (prev_pos_global != mPosGlobal) + // Reset location info only if global position has changed + // and update timer has expired to reduce unnecessary text and icons updates. + if (prev_pos_global != mPosGlobal && mResetInfoTimer.hasExpired()) { mPlaceProfile->resetLocation(); + mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL); } mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel); diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 0eba7f3afc1..a0989746599 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -34,6 +34,8 @@ #include "llpanel.h" +class LLTimer; + class LLInventoryItem; class LLFilterEditor; class LLLandmark; @@ -132,6 +134,10 @@ class LLPanelPlaces : public LLPanel // be available (hence zero) LLVector3d mPosGlobal; + // Sets a period of time during which the requested place information + // is expected to be updated and doesn't need to be reset. + LLTimer mResetInfoTimer; + // Information type currently shown in Place Information panel std::string mPlaceInfoType; -- GitLab From a5bb9a722d18ceb0f569013f0c522429bd037030 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Mon, 25 Jan 2010 13:09:50 +0200 Subject: [PATCH 077/521] Fixed low bug EXT-4659 - Unnecessary scroll bar appears in location history list if 10 items are presented. --HG-- branch : product-engine --- indra/llui/llscrolllistctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 4e84013db0c..71bba575843 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -498,7 +498,7 @@ void LLScrollListCtrl::fitContents(S32 max_width, S32 max_height) { S32 height = llmin( getRequiredRect().getHeight(), max_height ); if(mPageLines) - height = llmin( mPageLines * mLineHeight + (mDisplayColumnHeaders ? mHeadingHeight : 0), height ); + height = llmin( mPageLines * mLineHeight + 2*mBorderThickness + (mDisplayColumnHeaders ? mHeadingHeight : 0), height ); S32 width = getRect().getWidth(); -- GitLab From 149c56ae429b0dc8ebf349027fe855066b3447f7 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Mon, 25 Jan 2010 13:11:19 +0200 Subject: [PATCH 078/521] Related to normal bug EXT-3880 ( [BSI] functionality loss - online status in profile) -- removed logic to process online status (LLPanelAvatarProfile::fillOnlineStatus) for non-existent view (name="online_status") on profile page --HG-- branch : product-engine --- indra/newview/llpanelavatar.cpp | 17 ----------------- indra/newview/llpanelavatar.h | 5 ----- indra/newview/llpanelme.cpp | 2 -- 3 files changed, 24 deletions(-) diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 564c80a492c..fe5b20813ac 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -584,8 +584,6 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d fillPartnerData(avatar_data); - fillOnlineStatus(avatar_data); - fillAccountStatus(avatar_data); } @@ -653,21 +651,6 @@ void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data) } } -void LLPanelAvatarProfile::fillOnlineStatus(const LLAvatarData* avatar_data) -{ - bool online = avatar_data->flags & AVATAR_ONLINE; - if(LLAvatarActions::isFriend(avatar_data->avatar_id)) - { - // Online status NO could be because they are hidden - // If they are a friend, we may know the truth! - online = LLAvatarTracker::instance().isBuddyOnline(avatar_data->avatar_id); - } - childSetValue("online_status", online ? - "Online" : "Offline"); - childSetColor("online_status", online ? - LLColor4::green : LLColor4::red); -} - void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data) { LLStringUtil::format_map_t args; diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 1174c72d60c..ce59f1e93d2 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -177,11 +177,6 @@ class LLPanelAvatarProfile */ virtual void fillPartnerData(const LLAvatarData* avatar_data); - /** - * Fills Avatar's online status. - */ - virtual void fillOnlineStatus(const LLAvatarData* avatar_data); - /** * Fills account status. */ diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index ece93125b32..0f0fb4b94ea 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -198,8 +198,6 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d { fillCommonData(avatar_data); - fillOnlineStatus(avatar_data); - fillPartnerData(avatar_data); fillAccountStatus(avatar_data); -- GitLab From 7fc90e2385c6376599818a3a7a3d815535671178 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Mon, 25 Jan 2010 13:31:16 +0200 Subject: [PATCH 079/521] fix for major EXT-4621 Clicking the Nearby Voice floater steals keyboard focus note - didn't do this in xml since chrome="true" in xml hides floater caption --HG-- branch : product-engine --- indra/newview/llcallfloater.cpp | 6 ++++++ indra/newview/llnearbychat.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index f346a4b8c2b..d9767bc5730 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -43,6 +43,7 @@ #include "llavatariconctrl.h" #include "llavatarlist.h" #include "llbottomtray.h" +#include "lldraghandle.h" #include "llimfloater.h" #include "llfloaterreg.h" #include "llparticipantlist.h" @@ -174,6 +175,11 @@ BOOL LLCallFloater::postBuild() connectToChannel(LLVoiceChannel::getCurrentVoiceChannel()); + setIsChrome(true); + //chrome="true" hides floater caption + if (mDragHandle) + mDragHandle->setTitleVisible(TRUE); + return TRUE; } diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index a7c1e73328e..0a8d020b4ff 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -101,6 +101,11 @@ BOOL LLNearbyChat::postBuild() getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1))); } + setIsChrome(true); + //chrome="true" hides floater caption + if (mDragHandle) + mDragHandle->setTitleVisible(TRUE); + return true; } -- GitLab From 410e105f5293813dc63542414382e67273ab1d52 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Mon, 25 Jan 2010 15:15:06 +0200 Subject: [PATCH 080/521] fixed bug EXT-4433 [BSI] friend privacy settings greyed out EXT-4353, EXT-4587, EXT-4442 have same cause. it should fix they. --HG-- branch : product-engine --- indra/llui/lltextbase.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 17aecaf32fd..47db990a372 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1009,6 +1009,16 @@ void LLTextBase::draw() void LLTextBase::setColor( const LLColor4& c ) { mFgColor = c; + //textsegments have own style property , + //so we have to update it also to apply changes, EXT-4433 + for(segment_set_t::iterator it = mSegments.begin(); it != mSegments.end(); it++) + { + LLTextSegment* segment = it->get(); + if(segment) + { + segment->setColor(mFgColor); + } + } } //virtual -- GitLab From f11f8b34478f0d408689fe7959f233567001374d Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 25 Jan 2010 13:42:22 +0000 Subject: [PATCH 081/521] EXT-4576: Changed the pre-login help behavior. The F1 help topic now means: if the user is not logged in yet, show the pre-login topic instead of the default fallback topic, otherwise show help for the focused item --- indra/newview/llviewerhelp.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 5af79b4fd32..7c491ad1541 100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp @@ -65,18 +65,16 @@ void LLViewerHelp::showTopic(const std::string &topic) help_topic = defaultTopic(); } - // f1 help topic means: if user not logged in yet, show the - // pre-login topic, otherwise show help for the focused item + // f1 help topic means: if the user is not logged in yet, show + // the pre-login topic instead of the default fallback topic, + // otherwise show help for the focused item if (help_topic == f1HelpTopic()) { - if (! LLLoginInstance::getInstance()->authSuccess()) + help_topic = getTopicFromFocus(); + if (help_topic == defaultTopic() && ! LLLoginInstance::getInstance()->authSuccess()) { help_topic = preLoginTopic(); } - else - { - help_topic = getTopicFromFocus(); - } } // work out the URL for this topic and display it -- GitLab From f9e12e9f6b614db645c79c13795c1a1d67bae7fd Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Mon, 25 Jan 2010 16:47:25 +0200 Subject: [PATCH 082/521] sidefix for EXT-4577 Group profile: useless tab controls appear inside Land/Assets accordion if you place UI elements __outside__ of panel rect - they will be visible but unclickable... so I revert UI changes since they are maybe looks better...but useless. --HG-- branch : product-engine --- .../default/xui/en/panel_group_land_money.xml | 90 ++++++++++--------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 2075d7e05b5..db156f7877c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -2,7 +2,7 @@ <panel border="false" follows="all" - height="380" + height="420" label="Land & L$" layout="topleft" left="0" @@ -237,7 +237,7 @@ </text> <tab_container follows="all" - height="173" + height="180" halign="center" layout="topleft" left="0" @@ -250,7 +250,7 @@ <panel border="false" follows="all" - height="173" + height="180" label="PLANNING" layout="topleft" left="0" @@ -275,7 +275,7 @@ <panel border="false" follows="all" - height="173" + height="180" label="DETAILS" layout="topleft" left="0" @@ -296,41 +296,44 @@ word_wrap="true"> Loading... </text_editor> + + <button + height="20" + image_overlay="Arrow_Left_Off" + layout="topleft" + left="5" + name="earlier_details_button" + tool_tip="Go back in time" + top_pad="10" + width="25" /> <button - follows="left|top" - height="18" - image_overlay="Arrow_Left_Off" - layout="topleft" - name="earlier_details_button" - tool_tip="Back" - right="-45" - bottom="0" - width="25" /> - <button - follows="left|top" - height="18" - image_overlay="Arrow_Right_Off" - layout="topleft" - left_pad="10" - name="later_details_button" - tool_tip="Next" - width="25" /> - </panel> + height="20" + image_overlay="Arrow_Right_Off" + layout="topleft" + left_pad="5" + name="later_details_button" + tool_tip="Go forward in time" + top_delta="0" + width="25" /> + + + </panel> <panel border="false" follows="all" - height="173" + height="180" label="SALES" layout="topleft" left_delta="0" help_topic="group_money_sales_tab" + mouse_opaque="false" name="group_money_sales_tab" top="0" width="300"> <text_editor type="string" follows="all" - height="140" + height="130" layout="topleft" left="0" max_length="4096" @@ -340,25 +343,24 @@ word_wrap="true"> Loading... </text_editor> - <button - bottom="0" - follows="left|top" - height="18" - image_overlay="Arrow_Left_Off" - layout="topleft" - name="earlier_sales_button" - tool_tip="Back" - right="-45" - width="25" /> - <button - follows="left|top" - height="18" - image_overlay="Arrow_Right_Off" - layout="topleft" - left_pad="10" - name="later_sales_button" - tool_tip="Next" - width="25" /> + <button + height="20" + image_overlay="Arrow_Left_Off" + layout="topleft" + left="5" + name="earlier_sales_button" + tool_tip="Go back in time" + top_pad="10" + width="25" /> + <button + height="20" + image_overlay="Arrow_Right_Off" + layout="topleft" + left_pad="5" + name="later_sales_button" + tool_tip="Go forward in time" + top_delta="0" + width="25" /> </panel> </tab_container> </panel> -- GitLab From 307d94a92aa2111b05b7ab327685d1b2d79b68f3 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 25 Jan 2010 17:20:09 +0200 Subject: [PATCH 083/521] implemented EXT-4131 [BSI] "Only friends and groups can call or IM me" NEEDS auto-response added a modal warning window "Non-friends won't know that you've choosen to ignore their calls and instant messages." --HG-- branch : product-engine --- indra/newview/llfloaterpreference.cpp | 9 +++++++++ indra/newview/llfloaterpreference.h | 3 +++ indra/newview/skins/default/xui/en/notifications.xml | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index fc036cb3548..27d0ccff4b0 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1435,6 +1435,7 @@ BOOL LLPanelPreference::postBuild() media_enabled_ctrl->set(enabled); media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled)); getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); + getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(showFriendsOnlyWarning); } apply(); @@ -1485,6 +1486,14 @@ void LLPanelPreference::saveSettings() } } +void LLPanelPreference::showFriendsOnlyWarning(LLUICtrl* checkbox, const LLSD& value) +{ + if (checkbox && checkbox->getValue()) + { + LLNotificationsUtil::add("FriendsAndGroupsOnly"); + } +} + void LLPanelPreference::cancel() { for (control_values_map_t::iterator iter = mSavedValues.begin(); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 6f382620ee0..8b02a4049d1 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -166,6 +166,9 @@ class LLPanelPreference : public LLPanel virtual void saveSettings(); private: + //for "Only friends and groups can call or IM me" + static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&); + typedef std::map<LLControlVariable*, LLSD> control_values_map_t; control_values_map_t mSavedValues; diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 960da7a2746..41f4621d665 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -242,6 +242,16 @@ Save all changes to clothing/body parts? yestext="Save All"/> </notification> + <notification + icon="alertmodal.tga" + name="FriendsAndGroupsOnly" + type="alertmodal"> + Non-friends won't know that you've choosen to ignore their calls and instant messages. + <usetemplate + name="okbutton" + yestext="Yes"/> + </notification> + <notification icon="alertmodal.tga" name="GrantModifyRights" -- GitLab From d3d7dd6a6215a7ae50979a5a303ef9c109937822 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Mon, 25 Jan 2010 17:28:39 +0200 Subject: [PATCH 084/521] (EXT-2249) Place profile data blinks several times while updating after teleport - Reduced place info unnecessary text and icons updates. --HG-- branch : product-engine --- indra/newview/llpanelplaces.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index a4f0e55a932..a8a9717750b 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -384,6 +384,10 @@ void LLPanelPlaces::onOpen(const LLSD& key) // Otherwise stop using land selection and deselect land. if (mPlaceInfoType == AGENT_INFO_TYPE) { + // We don't know if we are already added to LLViewerParcelMgr observers list + // so try to remove observer not to add an extra one. + parcel_mgr->removeObserver(mParcelObserver); + parcel_mgr->addObserver(mParcelObserver); parcel_mgr->selectParcelAt(gAgent.getPositionGlobal()); } @@ -898,6 +902,8 @@ void LLPanelPlaces::changedParcelSelection() if (!region || !parcel) return; + LLVector3d prev_pos_global = mPosGlobal; + // If agent is inside the selected parcel show agent's region<X, Y, Z>, // otherwise show region<X, Y, Z> of agent's selection point. bool is_current_parcel = is_agent_in_selected_parcel(parcel); @@ -914,7 +920,13 @@ void LLPanelPlaces::changedParcelSelection() } } - mPlaceProfile->resetLocation(); + // Reset location info only if global position is changed + // to reduce unnecessary text and icons updates. + if (prev_pos_global != mPosGlobal) + { + mPlaceProfile->resetLocation(); + } + mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel); updateVerbs(); -- GitLab From c4cb6628b995fb785848493e263e607263ae68fd Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 25 Jan 2010 17:50:19 +0200 Subject: [PATCH 085/521] fixed linux build --HG-- branch : product-engine --- indra/newview/llfloaterpreference.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 27d0ccff4b0..60c15c253d7 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1435,7 +1435,7 @@ BOOL LLPanelPreference::postBuild() media_enabled_ctrl->set(enabled); media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled)); getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); - getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(showFriendsOnlyWarning); + getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2)); } apply(); -- GitLab From 2ea3fd95635073e68aa7626ea24c540717190127 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Mon, 25 Jan 2010 17:06:35 +0200 Subject: [PATCH 086/521] Fixed normal bug EXT-4108 ([BSI] Voice volume sliders do not preserve settings per resident between voice sessions) - moved necessary functionality from LLMuteList to LLVoiceClient. It was used only in active speackers floater which is deprecated. - initialized saving/loading of voice level in voice client. - also saving voice levels between session is activated. --HG-- branch : product-engine --- indra/newview/llmutelist.cpp | 72 +------------------ indra/newview/llmutelist.h | 9 --- indra/newview/llspeakers.cpp | 2 - indra/newview/llvoiceclient.cpp | 122 +++++++++++++++++++++++++++++++- 4 files changed, 122 insertions(+), 83 deletions(-) diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 7ee4c64f8fb..8e9fa97faf8 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -52,12 +52,8 @@ #include <boost/tokenizer.hpp> -#include "llcrc.h" -#include "lldir.h" #include "lldispatcher.h" -#include "llsdserialize.h" #include "llxfermanager.h" -#include "message.h" #include "llagent.h" #include "llviewergenericmessage.h" // for gGenericDispatcher @@ -219,61 +215,17 @@ LLMuteList* LLMuteList::getInstance() // LLMuteList() //----------------------------------------------------------------------------- LLMuteList::LLMuteList() : - mIsLoaded(FALSE), - mUserVolumesLoaded(FALSE) + mIsLoaded(FALSE) { gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList); } -void LLMuteList::loadUserVolumes() -{ - // call once, after LLDir::setLindenUserDir() has been called - if (mUserVolumesLoaded) - return; - mUserVolumesLoaded = TRUE; - - // load per-resident voice volume information - // conceptually, this is part of the mute list information, although it is only stored locally - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); - - LLSD settings_llsd; - llifstream file; - file.open(filename); - if (file.is_open()) - { - LLSDSerialize::fromXML(settings_llsd, file); - } - - for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); - iter != settings_llsd.endMap(); ++iter) - { - mUserVolumeSettings.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal())); - } -} - //----------------------------------------------------------------------------- // ~LLMuteList() //----------------------------------------------------------------------------- LLMuteList::~LLMuteList() { - // If we quit from the login screen we will not have an SL account - // name. Don't try to save, otherwise we'll dump a file in - // C:\Program Files\SecondLife\ or similar. JC - std::string user_dir = gDirUtilp->getLindenUserDir(); - if (!user_dir.empty()) - { - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); - LLSD settings_llsd; - - for(user_volume_map_t::iterator iter = mUserVolumeSettings.begin(); iter != mUserVolumeSettings.end(); ++iter) - { - settings_llsd[iter->first.asString()] = iter->second; - } - llofstream file; - file.open(filename); - LLSDSerialize::toPrettyXML(settings_llsd, file); - } } BOOL LLMuteList::isLinden(const std::string& name) const @@ -715,8 +667,6 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c //----------------------------------------------------------------------------- void LLMuteList::requestFromServer(const LLUUID& agent_id) { - loadUserVolumes(); - std::string agent_id_string; std::string filename; agent_id.toString(agent_id_string); @@ -751,26 +701,6 @@ void LLMuteList::cache(const LLUUID& agent_id) } } -void LLMuteList::setSavedResidentVolume(const LLUUID& id, F32 volume) -{ - // store new value in volume settings file - mUserVolumeSettings[id] = volume; -} - -F32 LLMuteList::getSavedResidentVolume(const LLUUID& id) -{ - const F32 DEFAULT_VOLUME = 0.5f; - - user_volume_map_t::iterator found_it = mUserVolumeSettings.find(id); - if (found_it != mUserVolumeSettings.end()) - { - return found_it->second; - } - //FIXME: assumes default, should get this from somewhere - return DEFAULT_VOLUME; -} - - //----------------------------------------------------------------------------- // Static message handlers //----------------------------------------------------------------------------- diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index 409b637bf2d..e1e81a24b4c 100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -127,12 +127,7 @@ class LLMuteList : public LLSingleton<LLMuteList> // call this method on logout to save everything. void cache(const LLUUID& agent_id); - void setSavedResidentVolume(const LLUUID& id, F32 volume); - F32 getSavedResidentVolume(const LLUUID& id); - private: - void loadUserVolumes(); - BOOL loadFromFile(const std::string& filename); BOOL saveToFile(const std::string& filename); @@ -179,12 +174,8 @@ class LLMuteList : public LLSingleton<LLMuteList> observer_set_t mObservers; BOOL mIsLoaded; - BOOL mUserVolumesLoaded; friend class LLDispatchEmptyMuteList; - - typedef std::map<LLUUID, F32> user_volume_map_t; - user_volume_map_t mUserVolumeSettings; }; class LLMuteListObserver diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 9608cd12637..6f9a1ccdbe0 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -70,8 +70,6 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy { mDisplayName = name; } - - gVoiceClient->setUserVolume(id, LLMuteList::getInstance()->getSavedResidentVolume(id)); } diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index e52d6a089bd..68b271d6cbb 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -37,8 +37,10 @@ // library includes #include "llnotificationsutil.h" +#include "llsdserialize.h" #include "llsdutil.h" + // project includes #include "llvoavatar.h" #include "llbufferstream.h" @@ -1092,6 +1094,119 @@ static void killGateway() #endif +class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage> +{ + LOG_CLASS(LLSpeakerVolumeStorage); +public: + + /** + * Sets internal voluem level for specified user. + * + * @param[in] speaker_id - LLUUID of user to store volume level for + * @param[in] volume - internal volume level to be stored for user. + */ + void storeSpeakerVolume(const LLUUID& speaker_id, S32 volume); + + /** + * Gets stored internal volume level for specified speaker. + * + * If specified user is not found default level will be returned. It is equivalent of + * external level 0.5 from the 0.0..1.0 range. + * Default internal level is calculated as: internal = 400 * external^2 + * Maps 0.0 to 1.0 to internal values 0-400 with default 0.5 == 100 + * + * @param[in] speaker_id - LLUUID of user to get his volume level + */ + S32 getSpeakerVolume(const LLUUID& speaker_id); + +private: + friend class LLSingleton<LLSpeakerVolumeStorage>; + LLSpeakerVolumeStorage(); + ~LLSpeakerVolumeStorage(); + + const static std::string SETTINGS_FILE_NAME; + + void load(); + void save(); + + typedef std::map<LLUUID, S32> speaker_data_map_t; + speaker_data_map_t mSpeakersData; +}; + +const std::string LLSpeakerVolumeStorage::SETTINGS_FILE_NAME = "volume_settings.xml"; + +LLSpeakerVolumeStorage::LLSpeakerVolumeStorage() +{ + load(); +} + +LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage() +{ + save(); +} + +void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 volume) +{ + mSpeakersData[speaker_id] = volume; +} + +S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id) +{ + // default internal level of user voice. + static const S32 DEFAULT_INTERNAL_VOLUME_LEVEL = 100; + S32 ret_val = DEFAULT_INTERNAL_VOLUME_LEVEL; + speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id); + + if (it != mSpeakersData.end()) + { + ret_val = it->second; + } + return ret_val; +} + +void LLSpeakerVolumeStorage::load() +{ + // load per-resident voice volume information + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME); + + LLSD settings_llsd; + llifstream file; + file.open(filename); + if (file.is_open()) + { + LLSDSerialize::fromXML(settings_llsd, file); + } + + for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); + iter != settings_llsd.endMap(); ++iter) + { + mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); + } +} + +void LLSpeakerVolumeStorage::save() +{ + // If we quit from the login screen we will not have an SL account + // name. Don't try to save, otherwise we'll dump a file in + // C:\Program Files\SecondLife\ or similar. JC + std::string user_dir = gDirUtilp->getLindenUserDir(); + if (!user_dir.empty()) + { + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME); + LLSD settings_llsd; + + for(speaker_data_map_t::const_iterator iter = mSpeakersData.begin(); iter != mSpeakersData.end(); ++iter) + { + settings_llsd[iter->first.asString()] = iter->second; + } + + llofstream file; + file.open(filename); + LLSDSerialize::toPrettyXML(settings_llsd, file); + } +} + + /////////////////////////////////////////////////////////////////////////////////////////////// LLVoiceClient::LLVoiceClient() : @@ -4914,7 +5029,9 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con } mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result)); - + + result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID); + LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL; } @@ -6163,6 +6280,9 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume) participant->mUserVolume = llclamp(ivol, 0, 400); participant->mVolumeDirty = TRUE; mAudioSession->mVolumeDirty = TRUE; + + // store this volume setting for future sessions + LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, participant->mUserVolume); } } } -- GitLab From 6e932911d5b0a02b44caf3bf81a9c00fd0e1dc89 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Mon, 25 Jan 2010 17:29:57 +0200 Subject: [PATCH 087/521] Related to normal bug EXT-4108 ([BSI] Voice volume sliders do not preserve settings per resident between voice sessions) - moved default internal voice level value into application settings - cleanned up include list in llmutelist.cpp --HG-- branch : product-engine --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llmutelist.cpp | 4 ---- indra/newview/llvoiceclient.cpp | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c29a3a0035a..72d2e1aba08 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10314,6 +10314,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>VoiceDefaultInternalLevel</key> + <map> + <key>Comment</key> + <string>Internal level of voice set by default. Is equivalent to 0.5 (from 0.0-1.0 range) external voice level (internal = 400 * external^2).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>100</integer> + </map> <key>VoiceEarLocation</key> <map> <key>Comment</key> diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 8e9fa97faf8..c1666f56667 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -57,14 +57,10 @@ #include "llagent.h" #include "llviewergenericmessage.h" // for gGenericDispatcher -#include "llviewerwindow.h" #include "llworld.h" //for particle system banning -#include "llchat.h" #include "llimpanel.h" #include "llimview.h" #include "llnotifications.h" -#include "lluistring.h" -#include "llviewerobject.h" #include "llviewerobjectlist.h" #include "lltrans.h" diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 68b271d6cbb..8ca0fd6ef6c 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -1153,7 +1153,7 @@ void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 vo S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id) { // default internal level of user voice. - static const S32 DEFAULT_INTERNAL_VOLUME_LEVEL = 100; + const static LLUICachedControl<S32> DEFAULT_INTERNAL_VOLUME_LEVEL("VoiceDefaultInternalLevel", 100); S32 ret_val = DEFAULT_INTERNAL_VOLUME_LEVEL; speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id); -- GitLab From 172208d648c32b4d501fb6d37b59a697ae777e7d Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 25 Jan 2010 10:57:20 -0500 Subject: [PATCH 088/521] Enabled the Mono checkbox in the script editor and cleaned up the layout. http://jira.secondlife.com/browse/EXT-4442 --- .../default/xui/en/floater_live_lsleditor.xml | 45 ++++--- .../skins/default/xui/en/panel_script_ed.xml | 120 ++++++++---------- 2 files changed, 78 insertions(+), 87 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml index e94717fe324..990be558478 100644 --- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -5,7 +5,7 @@ border_style="line" can_resize="true" follows="left|top" - height="570" + height="580" layout="topleft" min_height="271" min_width="290" @@ -13,7 +13,7 @@ help_topic="script_ed_float" save_rect="true" title="SCRIPT: NEW SCRIPT" - width="500"> + width="508"> <floater.string name="not_allowed"> You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. @@ -24,19 +24,31 @@ </floater.string> <floater.string name="Title"> - Script: [NAME] + SCRIPT: [NAME] </floater.string> + <panel + bevel_style="none" + + border_style="line" + follows="left|top|right|bottom" + height="522" + layout="topleft" + left="10" + name="script ed panel" + top="20" + width="497" /> <button - follows="right|bottom" - height="20" + follows="left|bottom" + height="23" label="Reset" label_selected="Reset" layout="topleft" - left="358" name="Reset" - top="545" - width="128" /> + left="10" + width="61" /> <check_box + left_delta="71" + top_delta="3" enabled="false" follows="left|bottom" font="SansSerif" @@ -44,30 +56,17 @@ initial_value="true" label="Running" layout="topleft" - left_delta="-350" name="running" - top_delta="2" width="100" /> <check_box - enabled="false" + left_delta="75" + enabled="true" follows="left|bottom" font="SansSerif" height="18" initial_value="true" label="Mono" layout="topleft" - left_delta="70" name="mono" - top_delta="0" width="100" /> - <panel - bevel_style="none" - border_style="line" - follows="left|top|right|bottom" - height="506" - layout="topleft" - left="1" - name="script ed panel" - top="18" - width="497" /> </floater> diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml index 765e2ae6231..d14355b9f42 100644 --- a/indra/newview/skins/default/xui/en/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml @@ -2,13 +2,12 @@ <panel bevel_style="none" border_style="line" - bottom="550" follows="left|top|right|bottom" - height="508" + height="522" layout="topleft" left="0" name="script panel" - width="500"> + width="497"> <panel.string name="loading"> Loading... @@ -29,71 +28,17 @@ name="Title"> Script: [NAME] </panel.string> - <text_editor - type="string" - length="1" - bottom="393" - follows="left|top|right|bottom" - font="Monospace" - height="376" - ignore_tab="false" - layout="topleft" - left="4" - max_length="65536" - name="Script Editor" - width="492" - show_line_numbers="true" - handle_edit_keys_directly="true" - word_wrap="true"> - Loading... - </text_editor> - <button - bottom="499" - follows="right|bottom" - height="20" - label="Save" - label_selected="Save" - layout="topleft" - left="360" - name="Save_btn" - width="128" /> - <scroll_list - bottom="457" - follows="left|right|bottom" - height="60" - layout="topleft" - left="4" - name="lsl errors" - width="492" /> - <combo_box - bottom="499" - follows="left|bottom" - height="20" - label="Insert..." - layout="topleft" - left="12" - name="Insert..." - width="128" /> - <text - bottom="473" - follows="left|bottom" - height="12" - layout="topleft" - left="12" - name="line_col" - width="128" /> <menu_bar bg_visible="false" - bottom="18" - follows="left|top|right" + follows="left|top" height="18" layout="topleft" - left="8" + left="0" mouse_opaque="false" name="script_menu" width="476"> <menu - bottom="18" + top="0" height="62" label="File" layout="topleft" @@ -113,11 +58,10 @@ name="Revert All Changes" /> </menu> <menu - bottom="-647" + top="0" height="198" label="Edit" layout="topleft" - left="222" mouse_opaque="false" name="Edit" width="139"> @@ -169,11 +113,10 @@ name="Search / Replace..." /> </menu> <menu - bottom="18" + top="0" height="34" label="Help" layout="topleft" - left="0" mouse_opaque="false" name="Help" width="112"> @@ -187,4 +130,53 @@ name="Keyword Help..." /> </menu> </menu_bar> + <text_editor + left="0" + type="string" + length="1" + follows="left|top|right|bottom" + font="Monospace" + height="376" + ignore_tab="false" + layout="topleft" + max_length="65536" + name="Script Editor" + width="487" + show_line_numbers="true" + handle_edit_keys_directly="true" + word_wrap="true"> + Loading... + </text_editor> + <scroll_list + top_pad="10" + left="0" + follows="left|right|bottom" + height="60" + layout="topleft" + name="lsl errors" + width="487" /> + <text + follows="left|bottom" + height="12" + layout="topleft" + left="0" + name="line_col" + width="128" /> + <combo_box + follows="left|bottom" + height="23" + label="Insert..." + layout="topleft" + name="Insert..." + width="128" /> + <button + follows="right|bottom" + height="23" + label="Save" + label_selected="Save" + layout="topleft" + top_pad="-35" + right="487" + name="Save_btn" + width="61" /> </panel> -- GitLab From e3e4a301ab00d62d7ecf5d5ce2f4d217bc6c79e0 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 25 Jan 2010 18:06:01 +0200 Subject: [PATCH 089/521] implemented EXT-4567 [BSI] private voice floaters do not contain standard X buttons --HG-- branch : product-engine --- indra/newview/llimview.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index c2a7969c0d0..32b0cbff389 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1680,6 +1680,7 @@ void LLOutgoingCallDialog::show(const LLSD& key) case LLVoiceChannel::STATE_ERROR : getChild<LLTextBox>("noanswer")->setVisible(true); getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); break; case LLVoiceChannel::STATE_HUNG_UP : @@ -1692,6 +1693,7 @@ void LLOutgoingCallDialog::show(const LLSD& key) getChild<LLTextBox>("nearby")->setVisible(true); } getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); } -- GitLab From 254b7d72d17c279aa906ee235f08ff1fa9e2b9cf Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 25 Jan 2010 18:43:31 +0200 Subject: [PATCH 090/521] fixed EXT-4601 [BSI] New IM sessions use obsolete timestamps for first message --HG-- branch : product-engine --- indra/newview/llchathistory.cpp | 5 +++-- indra/newview/llchathistory.h | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index a46cd84b608..d6a7edee5b4 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -550,8 +550,8 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ if (mLastFromName == chat.mFromName && mLastFromID == chat.mFromID && mLastMessageTime.notNull() - && (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 - ) + && (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 + && mLastMessageTimeStr.size() == chat.mTimeStr.size()) //*HACK to distinguish between current and previous chat session's histories { view = getSeparator(); p.top_pad = mTopSeparatorPad; @@ -585,6 +585,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ mLastFromName = chat.mFromName; mLastFromID = chat.mFromID; mLastMessageTime = new_message_time; + mLastMessageTimeStr = chat.mTimeStr; } std::string message = irc_me ? chat.mText.substr(3) : chat.mText; diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index f2d403f6393..c2c60e60cf9 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -125,6 +125,8 @@ class LLChatHistory : public LLUICtrl std::string mLastFromName; LLUUID mLastFromID; LLDate mLastMessageTime; + std::string mLastMessageTimeStr; + std::string mMessageHeaderFilename; std::string mMessageSeparatorFilename; -- GitLab From af83fe79d8d074d3056e6dff86dcf14d8e71c885 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 25 Jan 2010 10:04:56 -0800 Subject: [PATCH 091/521] "Fix" confusion over media settings Review #89 This implements the changes Sam wanted in order to reduce the confusion over media enabled-ness, in particular: - "Media Enabled" pref now only controls "AudioStreamingMedia" - No more "tentative" state - New "Music Enabled" pref - First run dialog controls Media and Music (Sam, this is a change from your request...I think it works better) - Put a reflection of the "Media Enabled" checkbox in the Nearby Media Floater - Get rid of the "AudioStreamingVideo" setting altogether (whatever used it, it should now obey "AudioStreamingMedia"). --- indra/newview/app_settings/settings.xml | 11 ------- indra/newview/llfloaterpreference.cpp | 29 ++++++++++--------- indra/newview/llfloaterpreference.h | 1 + indra/newview/llviewermedia.cpp | 2 -- indra/newview/llviewerparcelmedia.cpp | 2 +- indra/newview/llviewertexture.cpp | 1 - .../xui/en/panel_preferences_privacy.xml | 20 ++++++++++--- .../xui/en/panel_preferences_setup.xml | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c29a3a0035a..e607c3ad15c 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -298,17 +298,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>AudioStreamingVideo</key> - <map> - <key>Comment</key> - <string>Enable streaming video</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>AuditTexture</key> <map> <key>Comment</key> diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index fc036cb3548..eeda3f133cd 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -327,6 +327,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this)); mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this)); mCommitCallbackRegistrar.add("Pref.MediaEnabled", boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this)); + mCommitCallbackRegistrar.add("Pref.MusicEnabled", boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this)); mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this)); mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2)); mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2)); @@ -1001,12 +1002,14 @@ void LLFloaterPreference::onCommitMediaEnabled() { LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled"); bool enabled = media_enabled_ctrl->get(); - gSavedSettings.setBOOL("AudioStreamingVideo", enabled); - gSavedSettings.setBOOL("AudioStreamingMusic", enabled); gSavedSettings.setBOOL("AudioStreamingMedia", enabled); - media_enabled_ctrl->setTentative(false); - // Update enabled state of the "autoplay" checkbox - getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); +} + +void LLFloaterPreference::onCommitMusicEnabled() +{ + LLCheckBoxCtrl *music_enabled_ctrl = getChild<LLCheckBoxCtrl>("music_enabled"); + bool enabled = music_enabled_ctrl->get(); + gSavedSettings.setBOOL("AudioStreamingMusic", enabled); } void LLFloaterPreference::refresh() @@ -1424,17 +1427,15 @@ BOOL LLPanelPreference::postBuild() } //////////////////////PanelPrivacy /////////////////// - if(hasChild("media_enabled")) + if (hasChild("media_enabled")) { - bool video_enabled = gSavedSettings.getBOOL("AudioStreamingVideo"); - bool music_enabled = gSavedSettings.getBOOL("AudioStreamingMusic"); bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); - bool enabled = video_enabled || music_enabled || media_enabled; - - LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled"); - media_enabled_ctrl->set(enabled); - media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled)); - getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); + getChild<LLCheckBoxCtrl>("media_enabled")->set(media_enabled); + getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(media_enabled); + } + if (hasChild("music_enabled")) + { + getChild<LLCheckBoxCtrl>("music_enabled")->set(gSavedSettings.getBOOL("AudioStreamingMusic")); } apply(); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 6f382620ee0..4ec2d277a8b 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -134,6 +134,7 @@ class LLFloaterPreference : public LLFloater void onCommitAutoDetectAspect(); void onCommitParcelMediaAutoPlayEnable(); void onCommitMediaEnabled(); + void onCommitMusicEnabled(); void applyResolution(); void applyUIColor(LLUICtrl* ctrl, const LLSD& param); void getUIColor(LLUICtrl* ctrl, const LLSD& param); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d712446d836..98d8780b343 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -940,7 +940,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo { // user has elected to automatically play media. gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE); - gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); gSavedSettings.setBOOL("AudioStreamingMusic", TRUE); gSavedSettings.setBOOL("AudioStreamingMedia", TRUE); @@ -961,7 +960,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo { gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE); gSavedSettings.setBOOL("AudioStreamingMedia", FALSE); - gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); gSavedSettings.setBOOL("AudioStreamingMusic", FALSE); } return false; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index e87dbe5c07f..c4fc2e5cabf 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -179,7 +179,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel) if (!parcel) return; - if (!gSavedSettings.getBOOL("AudioStreamingMedia") || !gSavedSettings.getBOOL("AudioStreamingVideo")) + if (!gSavedSettings.getBOOL("AudioStreamingMedia")) return; std::string media_url = parcel->getMediaURL(); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 3f42cba5614..b80dc7d9025 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -2777,7 +2777,6 @@ void LLViewerMediaTexture::updateClass() #if 0 //force to play media. gSavedSettings.setBOOL("AudioStreamingMedia", true) ; - gSavedSettings.setBOOL("AudioStreamingVideo", true) ; #endif for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index a8e24366f27..0aaeb6114ee 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -78,19 +78,19 @@ top_pad="10" width="350" /> <check_box - control_name="MediaEnabled" + name="media_enabled" + control_name="AudioStreamingMedia" height="16" label="Media Enabled" layout="topleft" left="30" - name="media_enabled" top_pad="10" width="350"> <check_box.commit_callback function="Pref.MediaEnabled" /> </check_box> <check_box - enabled_control="MediaEnabled" + enabled_control="AudioStreamingMedia" control_name="ParcelMediaAutoPlayEnable" height="16" label="Allow Media to auto-play" @@ -102,7 +102,19 @@ <check_box.commit_callback function="Pref.ParcelMediaAutoPlayEnable" /> </check_box> - <text + <check_box + control_name="AudioStreamingMusic" + height="16" + label="Music Enabled" + layout="topleft" + left="30" + name="music_enabled" + top_pad="10" + width="350"> + <check_box.commit_callback + function="Pref.MusicEnabled" /> + </check_box> + <text type="string" length="1" follows="left|top" 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 17ababe8548..8723e0a8327 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -279,7 +279,7 @@ width="480" /> <radio_item height="20" - label="Use my browser (IE, Firefox)" + label="Use my browser (IE, Firefox, Safari)" layout="topleft" left_delta="0" name="external" -- GitLab From 55628798e14bdb25bc3eedcd18632ae5aebfaf68 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 25 Jan 2010 13:27:03 -0500 Subject: [PATCH 092/521] Standardized use of "My..." in side-panel widget labels. http://jira.secondlife.com/browse/EXT-4055 --- indra/newview/skins/default/xui/en/panel_landmarks.xml | 2 +- indra/newview/skins/default/xui/en/panel_me.xml | 4 ++-- indra/newview/skins/default/xui/en/panel_people.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 039e1ae0864..91d4cd6e833 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -38,7 +38,7 @@ <accordion_tab layout="topleft" name="tab_landmarks" - title="Landmarks"> + title="My Landmarks"> <places_inventory_panel allow_multi_select="true" border="false" diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml index e779e374192..2814fb071b5 100644 --- a/indra/newview/skins/default/xui/en/panel_me.xml +++ b/indra/newview/skins/default/xui/en/panel_me.xml @@ -39,13 +39,13 @@ <panel class="panel_my_profile" filename="panel_my_profile.xml" - label="PROFILE" + label="MY PROFILE" help_topic="panel_my_profile_tab" name="panel_profile" /> <panel class="panel_picks" filename="panel_picks.xml" - label="PICKS" + label="MY PICKS" help_topic="panel_my_picks_tab" name="panel_picks" /> </tab_container> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index da3a2274c95..69643c243be 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -116,7 +116,7 @@ background_visible="true" <panel follows="all" height="500" - label="FRIENDS" + label="MY FRIENDS" layout="topleft" left="0" help_topic="people_friends_tab" @@ -213,7 +213,7 @@ background_visible="true" <panel follows="all" height="500" - label="GROUPS" + label="MY GROUPS" layout="topleft" left="0" help_topic="people_groups_tab" -- GitLab From 9f44c4df7963b4ae06f4dd86a2078ebe704201f1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 10:30:57 -0800 Subject: [PATCH 093/521] Fix some Linux build breakage - can't treat the return of a constructor call as a ref with gcc, have to use intermediate variable. --- indra/llui/lltextbase.cpp | 15 ++++++++++----- indra/llui/lltexteditor.cpp | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 885a830c9fc..a6e410d3e16 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -623,7 +623,8 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s else { // create default editable segment to hold new text - default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), pos, pos + insert_len, *this); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + default_segment = new LLNormalTextSegment( sp, pos, pos + insert_len, *this); } // shift remaining segments to right @@ -747,7 +748,8 @@ void LLTextBase::createDefaultSegment() // ensures that there is always at least one segment if (mSegments.empty()) { - LLTextSegmentPtr default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + LLTextSegmentPtr default_segment = new LLNormalTextSegment( sp, 0, getLength() + 1, *this); mSegments.insert(default_segment); default_segment->linkToDocument(this); } @@ -777,7 +779,8 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert) cur_segmentp->setEnd(segment_to_insert->getStart()); // advance to next segment // insert remainder of old segment - LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( cur_segmentp->getStyle(), segment_to_insert->getStart(), old_segment_end, *this); + LLStyleConstSP sp = cur_segmentp->getStyle(); + LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( sp, segment_to_insert->getStart(), old_segment_end, *this); mSegments.insert(cur_seg_iter, remainder_segment); remainder_segment->linkToDocument(this); // insert new segment before remainder of old segment @@ -1640,7 +1643,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen wide_text = utf8str_to_wstring(pieces[i]["text"].asString()); } S32 cur_length = getLength(); - LLTextSegmentPtr segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(highlight_params)), cur_length, cur_length + wide_text.size(), *this); + LLStyleConstSP sp(new LLStyle(highlight_params)); + LLTextSegmentPtr segmentp = new LLNormalTextSegment(sp, cur_length, cur_length + wide_text.size(), *this); segment_vec_t segments; segments.push_back(segmentp); insertStringNoUndo(cur_length, wide_text, &segments); @@ -1664,7 +1668,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen segment_vec_t segments; S32 segment_start = old_length; S32 segment_end = old_length + wide_text.size(); - segments.push_back(new LLNormalTextSegment(LLStyleConstSP(new LLStyle(style_params)), segment_start, segment_end, *this )); + LLStyleConstSP sp(new LLStyle(style_params)); + segments.push_back(new LLNormalTextSegment(sp, segment_start, segment_end, *this )); insertStringNoUndo(getLength(), wide_text, &segments); } diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 93ce7a4bea5..3ea33d5f6a1 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2567,7 +2567,8 @@ void LLTextEditor::updateLinkSegments() std::string new_url = wstring_to_utf8str(url_label); LLStringUtil::trim(new_url); new_style->setLinkHREF(new_url); - segment->setStyle(LLStyleConstSP(new_style)); + LLStyleConstSP sp(new_style); + segment->setStyle(sp); } } } -- GitLab From e4dc4b9a72637cf536545cfa44f3384e55c4f460 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 11:13:44 -0800 Subject: [PATCH 094/521] gcc fix - more of the same. --- indra/newview/llexpandabletextbox.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 77b3a48cefe..e0a9e080fa0 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -185,7 +185,8 @@ void LLExpandableTextBox::LLTextBoxEx::hideExpandText() if (mExpanderVisible) { // this will overwrite the expander segment and all text styling with a single style - LLNormalTextSegment* segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + LLNormalTextSegment* segmentp = new LLNormalTextSegment(sp, 0, getLength() + 1, *this); insertSegment(segmentp); mExpanderVisible = false; -- GitLab From a406c7755edbe7c077e463e86b5ebdd405064a3e Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Mon, 25 Jan 2010 11:56:26 -0800 Subject: [PATCH 095/521] test commit --- indra/newview/skins/default/xui/en/floater_aaa.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index 0b48ba9321a..cb9f9439494 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -19,6 +19,7 @@ width="320"> <string name="nudge_parabuild">Nudge 1</string> <string name="test_the_vlt">This string CHANGE is extracted.</string> + <string name="testing_eli">Just a test.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" -- GitLab From 563daa96a873ef627ca42d24e0f6de6bb359326d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 12:07:25 -0800 Subject: [PATCH 096/521] pull in the linux+solaris fast-timers impl from snowglobe, fit it into viewer2, start moving headers around. --- doc/contributions.txt | 1 + .../{llfasttimer.h => llfasttimer_class.h} | 103 +----------------- 2 files changed, 6 insertions(+), 98 deletions(-) rename indra/llcommon/{llfasttimer.h => llfasttimer_class.h} (77%) diff --git a/doc/contributions.txt b/doc/contributions.txt index cf10ecccfbb..2e4d8032525 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -500,6 +500,7 @@ Ringo Tuxing CT-231 CT-321 Robin Cornelius + SNOW-108 SNOW-204 VWR-2488 VWR-9557 diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer_class.h similarity index 77% rename from indra/llcommon/llfasttimer.h rename to indra/llcommon/llfasttimer_class.h index 8af79c90fd6..93d2d0494d4 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer_class.h @@ -1,5 +1,5 @@ /** - * @file llfasttimer.h + * @file llfasttimer_class.h * @brief Declaration of a fast timer. * * $LicenseInfo:firstyear=2004&license=viewergpl$ @@ -30,108 +30,14 @@ * $/LicenseInfo$ */ -#ifndef LL_FASTTIMER_H -#define LL_FASTTIMER_H +#ifndef LL_FASTTIMER_CLASS_H +#define LL_FASTTIMER_CLASS_H #include "llinstancetracker.h" #define FAST_TIMER_ON 1 #define TIME_FAST_TIMERS 0 -#if LL_WINDOWS -#define LL_INLINE __forceinline - -// -// NOTE: put back in when we aren't using platform sdk anymore -// -// because MS has different signatures for these functions in winnt.h -// need to rename them to avoid conflicts -//#define _interlockedbittestandset _renamed_interlockedbittestandset -//#define _interlockedbittestandreset _renamed_interlockedbittestandreset -//#include <intrin.h> -//#undef _interlockedbittestandset -//#undef _interlockedbittestandreset - -//inline U32 get_cpu_clock_count_32() -//{ -// U64 time_stamp = __rdtsc(); -// return (U32)(time_stamp >> 8); -//} -// -//// return full timer value, *not* shifted by 8 bits -//inline U64 get_cpu_clock_count_64() -//{ -// return __rdtsc(); -//} - -// shift off lower 8 bits for lower resolution but longer term timing -// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing -inline U32 get_cpu_clock_count_32() -{ - U32 ret_val; - __asm - { - _emit 0x0f - _emit 0x31 - shr eax,8 - shl edx,24 - or eax, edx - mov dword ptr [ret_val], eax - } - return ret_val; -} - -// return full timer value, *not* shifted by 8 bits -inline U64 get_cpu_clock_count_64() -{ - U64 ret_val; - __asm - { - _emit 0x0f - _emit 0x31 - mov eax,eax - mov edx,edx - mov dword ptr [ret_val+4], edx - mov dword ptr [ret_val], eax - } - return ret_val; -} -#else -#define LL_INLINE -#endif - -#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) -inline U32 get_cpu_clock_count_32() -{ - U64 x; - __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return (U32)x >> 8; -} - -inline U32 get_cpu_clock_count_64() -{ - U64 x; - __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return x >> 8; -} -#endif - -#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) -// -// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock -// -// Just use gettimeofday implementation for now - -inline U32 get_cpu_clock_count_32() -{ - return (U32)get_clock_count(); -} - -inline U32 get_cpu_clock_count_64() -{ - return get_clock_count(); -} -#endif class LLMutex; @@ -352,6 +258,7 @@ class LL_COMMON_API LLFastTimer static S32 sLastFrameIndex; static U64 sLastFrameTime; static info_list_t* sTimerInfos; + static U64 sClockResolution; U32 mStartTime; LLFastTimer::FrameState* mFrameState; @@ -361,4 +268,4 @@ class LL_COMMON_API LLFastTimer typedef class LLFastTimer LLFastTimer; -#endif // LL_LLFASTTIMER_H +#endif // LL_LLFASTTIMER_CLASS_H -- GitLab From ec7b204ed657f7c1becac3b410ae0bc94c03aa75 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 12:31:50 -0800 Subject: [PATCH 097/521] shuffle shuffle of timer code. cleanup. --- indra/llcommon/CMakeLists.txt | 2 +- indra/llcommon/llfasttimer.h | 169 ++++++ indra/llcommon/llfasttimer_class.cpp | 751 +++++++++++++++++++++++++++ indra/llcommon/llfasttimer_class.h | 24 +- 4 files changed, 937 insertions(+), 9 deletions(-) create mode 100644 indra/llcommon/llfasttimer.h create mode 100644 indra/llcommon/llfasttimer_class.cpp diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ac7cc2cdac7..05e45d6d8ac 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -50,7 +50,7 @@ set(llcommon_SOURCE_FILES lleventdispatcher.cpp lleventfilter.cpp llevents.cpp - llfasttimer.cpp + llfasttimer_class.cpp llfile.cpp llfindlocale.cpp llfixedbuffer.cpp diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h new file mode 100644 index 00000000000..0f3280023ca --- /dev/null +++ b/indra/llcommon/llfasttimer.h @@ -0,0 +1,169 @@ +/** + * @file llfasttimer.h + * @brief Inline implementations of fast timers. + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_FASTTIMER_H +#define LL_FASTTIMER_H + +// pull in the actual class definition +#include "llfasttimer_class.h" + +#if LL_WINDOWS +#define LL_INLINE __forceinline +// +// Windows implementation of CPU clock +// + +// +// NOTE: put back in when we aren't using platform sdk anymore +// +// because MS has different signatures for these functions in winnt.h +// need to rename them to avoid conflicts +//#define _interlockedbittestandset _renamed_interlockedbittestandset +//#define _interlockedbittestandreset _renamed_interlockedbittestandreset +//#include <intrin.h> +//#undef _interlockedbittestandset +//#undef _interlockedbittestandreset + +//inline U32 get_cpu_clock_count_32() +//{ +// U64 time_stamp = __rdtsc(); +// return (U32)(time_stamp >> 8); +//} +// +//// return full timer value, *not* shifted by 8 bits +//inline U64 get_cpu_clock_count_64() +//{ +// return __rdtsc(); +//} + +// shift off lower 8 bits for lower resolution but longer term timing +// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing +inline U32 get_cpu_clock_count_32() +{ + U32 ret_val; + __asm + { + _emit 0x0f + _emit 0x31 + shr eax,8 + shl edx,24 + or eax, edx + mov dword ptr [ret_val], eax + } + return ret_val; +} + +// return full timer value, *not* shifted by 8 bits +inline U64 get_cpu_clock_count_64() +{ + U64 ret_val; + __asm + { + _emit 0x0f + _emit 0x31 + mov eax,eax + mov edx,edx + mov dword ptr [ret_val+4], edx + mov dword ptr [ret_val], eax + } + return ret_val; +} +#else +#define LL_INLINE +#endif + + +#if LL_LINUX || LL_SOLARIS +// +// Linux and Solaris implementation of CPU clock - all architectures. +// +// Try to use the MONOTONIC clock if available, this is a constant time counter +// with nanosecond resolution (but not necessarily accuracy) and attempts are made +// to synchronize this value between cores at kernel start. It should not be affected +// by CPU frequency. If not available use the REALTIME clock, but this may be affected by +// NTP adjustments or other user activity affecting the system time. +inline U64 get_cpu_clock_count_64() +{ + struct timespec tp; + +#ifdef CLOCK_MONOTONIC // MONOTONIC supported at build-time? + if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime, try REALTIME +#endif + clock_gettime(CLOCK_REALTIME,&tp); + + return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec; +} + +inline U32 get_cpu_clock_count_32() +{ + return (U32)get_cpu_clock_count_64(); +} +#endif // (LL_LINUX || LL_SOLARIS)) + + +#if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) +// +// Mac x86 implementation of CPU clock +inline U32 get_cpu_clock_count_32() +{ + U64 x; + __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); + return (U32)x >> 8; +} + +inline U32 get_cpu_clock_count_64() +{ + U64 x; + __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); + return x >> 8; +} +#endif + + +#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) +// +// Mac PPC (deprecated) implementation of CPU clock +// +// Just use gettimeofday implementation for now + +inline U32 get_cpu_clock_count_32() +{ + return (U32)get_clock_count(); +} + +inline U32 get_cpu_clock_count_64() +{ + return get_clock_count(); +} +#endif + +#endif // LL_LLFASTTIMER_H diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp new file mode 100644 index 00000000000..6dbd90f9fac --- /dev/null +++ b/indra/llcommon/llfasttimer_class.cpp @@ -0,0 +1,751 @@ +/** + * @file llfasttimer_class.cpp + * @brief Implementation of the fast timer. + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS."LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "linden_common.h" + +#include "llfasttimer.h" + +#include "llmemory.h" +#include "llprocessor.h" +#include "llsingleton.h" +#include "lltreeiterators.h" +#include "llsdserialize.h" + +#include <boost/bind.hpp> + +#if LL_WINDOWS +#elif LL_LINUX || LL_SOLARIS +#include <sys/time.h> +#include <sched.h> +#elif LL_DARWIN +#include <sys/time.h> +#include "lltimer.h" // get_clock_count() +#else +#error "architecture not supported" +#endif + +////////////////////////////////////////////////////////////////////////////// +// statics + +S32 LLFastTimer::sCurFrameIndex = -1; +S32 LLFastTimer::sLastFrameIndex = -1; +U64 LLFastTimer::sLastFrameTime = get_cpu_clock_count_64(); +bool LLFastTimer::sPauseHistory = 0; +bool LLFastTimer::sResetHistory = 0; +LLFastTimer::CurTimerData LLFastTimer::sCurTimerData; +BOOL LLFastTimer::sLog = FALSE; +BOOL LLFastTimer::sMetricLog = FALSE; +LLMutex* LLFastTimer::sLogLock = NULL; +std::queue<LLSD> LLFastTimer::sLogQueue; + +#if LL_LINUX || LL_SOLARIS +U64 LLFastTimer::sClockResolution = 1000000000; // Nanosecond resolution +#else +U64 LLFastTimer::sClockResolution = 1000000; // Microsecond resolution +#endif + +std::vector<LLFastTimer::FrameState>* LLFastTimer::sTimerInfos = NULL; +U64 LLFastTimer::sTimerCycles = 0; +U32 LLFastTimer::sTimerCalls = 0; + + +// FIXME: move these declarations to the relevant modules + +// helper functions +typedef LLTreeDFSPostIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_bottom_up_iterator_t; + +static timer_tree_bottom_up_iterator_t begin_timer_tree_bottom_up(LLFastTimer::NamedTimer& id) +{ + return timer_tree_bottom_up_iterator_t(&id, + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1)); +} + +static timer_tree_bottom_up_iterator_t end_timer_tree_bottom_up() +{ + return timer_tree_bottom_up_iterator_t(); +} + +typedef LLTreeDFSIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_dfs_iterator_t; + + +static timer_tree_dfs_iterator_t begin_timer_tree(LLFastTimer::NamedTimer& id) +{ + return timer_tree_dfs_iterator_t(&id, + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1)); +} + +static timer_tree_dfs_iterator_t end_timer_tree() +{ + return timer_tree_dfs_iterator_t(); +} + + + +// factory class that creates NamedTimers via static DeclareTimer objects +class NamedTimerFactory : public LLSingleton<NamedTimerFactory> +{ +public: + NamedTimerFactory() + {} + + /*virtual */ void initSingleton() + { + mTimerRoot = new LLFastTimer::NamedTimer("root"); + + mActiveTimerRoot = new LLFastTimer::NamedTimer("Frame"); + mActiveTimerRoot->setCollapsed(false); + + mRootFrameState = new LLFastTimer::FrameState(mActiveTimerRoot); + mRootFrameState->mParent = &mTimerRoot->getFrameState(); + mActiveTimerRoot->setParent(mTimerRoot); + + mAppTimer = new LLFastTimer(mRootFrameState); + } + + ~NamedTimerFactory() + { + std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer()); + + delete mAppTimer; + delete mActiveTimerRoot; + delete mTimerRoot; + delete mRootFrameState; + } + + LLFastTimer::NamedTimer& createNamedTimer(const std::string& name) + { + timer_map_t::iterator found_it = mTimers.find(name); + if (found_it != mTimers.end()) + { + return *found_it->second; + } + + LLFastTimer::NamedTimer* timer = new LLFastTimer::NamedTimer(name); + timer->setParent(mTimerRoot); + mTimers.insert(std::make_pair(name, timer)); + + return *timer; + } + + LLFastTimer::NamedTimer* getTimerByName(const std::string& name) + { + timer_map_t::iterator found_it = mTimers.find(name); + if (found_it != mTimers.end()) + { + return found_it->second; + } + return NULL; + } + + LLFastTimer::NamedTimer* getActiveRootTimer() { return mActiveTimerRoot; } + LLFastTimer::NamedTimer* getRootTimer() { return mTimerRoot; } + const LLFastTimer* getAppTimer() { return mAppTimer; } + LLFastTimer::FrameState& getRootFrameState() { return *mRootFrameState; } + + typedef std::map<std::string, LLFastTimer::NamedTimer*> timer_map_t; + timer_map_t::iterator beginTimers() { return mTimers.begin(); } + timer_map_t::iterator endTimers() { return mTimers.end(); } + S32 timerCount() { return mTimers.size(); } + +private: + timer_map_t mTimers; + + LLFastTimer::NamedTimer* mActiveTimerRoot; + LLFastTimer::NamedTimer* mTimerRoot; + LLFastTimer* mAppTimer; + LLFastTimer::FrameState* mRootFrameState; +}; + +void update_cached_pointers_if_changed() +{ + // detect when elements have moved and update cached pointers + static LLFastTimer::FrameState* sFirstTimerAddress = NULL; + if (&*(LLFastTimer::getFrameStateList().begin()) != sFirstTimerAddress) + { + LLFastTimer::DeclareTimer::updateCachedPointers(); + } + sFirstTimerAddress = &*(LLFastTimer::getFrameStateList().begin()); +} + +LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name, bool open ) +: mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +{ + mTimer.setCollapsed(!open); + mFrameState = &mTimer.getFrameState(); + update_cached_pointers_if_changed(); +} + +LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name) +: mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +{ + mFrameState = &mTimer.getFrameState(); + update_cached_pointers_if_changed(); +} + +// static +void LLFastTimer::DeclareTimer::updateCachedPointers() +{ + // propagate frame state pointers to timer declarations + for (DeclareTimer::instance_iter it = DeclareTimer::beginInstances(); + it != DeclareTimer::endInstances(); + ++it) + { + // update cached pointer + it->mFrameState = &it->mTimer.getFrameState(); + } +} + +//static +#if LL_LINUX || LL_SOLARIS || ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)) ) +U64 LLFastTimer::countsPerSecond() +{ + return sClockResolution; +} +#else // windows or x86-mac +U64 LLFastTimer::countsPerSecond() +{ + static U64 sCPUClockFrequency = U64(CProcessor().GetCPUFrequency(50)); + + // we drop the low-order byte in out timers, so report a lower frequency + return sCPUClockFrequency >> 8; +} +#endif + +LLFastTimer::FrameState::FrameState(LLFastTimer::NamedTimer* timerp) +: mActiveCount(0), + mCalls(0), + mSelfTimeCounter(0), + mParent(NULL), + mLastCaller(NULL), + mMoveUpTree(false), + mTimer(timerp) +{} + + +LLFastTimer::NamedTimer::NamedTimer(const std::string& name) +: mName(name), + mCollapsed(true), + mParent(NULL), + mTotalTimeCounter(0), + mCountAverage(0), + mCallAverage(0), + mNeedsSorting(false) +{ + info_list_t& frame_state_list = getFrameStateList(); + mFrameStateIndex = frame_state_list.size(); + getFrameStateList().push_back(FrameState(this)); + + mCountHistory = new U32[HISTORY_NUM]; + memset(mCountHistory, 0, sizeof(U32) * HISTORY_NUM); + mCallHistory = new U32[HISTORY_NUM]; + memset(mCallHistory, 0, sizeof(U32) * HISTORY_NUM); +} + +LLFastTimer::NamedTimer::~NamedTimer() +{ + delete[] mCountHistory; + delete[] mCallHistory; +} + +std::string LLFastTimer::NamedTimer::getToolTip(S32 history_idx) +{ + if (history_idx < 0) + { + // by default, show average number of calls + return llformat("%s (%d calls)", getName().c_str(), (S32)getCallAverage()); + } + else + { + return llformat("%s (%d calls)", getName().c_str(), (S32)getHistoricalCalls(history_idx)); + } +} + +void LLFastTimer::NamedTimer::setParent(NamedTimer* parent) +{ + llassert_always(parent != this); + llassert_always(parent != NULL); + + if (mParent) + { + // subtract our accumulated from previous parent + for (S32 i = 0; i < HISTORY_NUM; i++) + { + mParent->mCountHistory[i] -= mCountHistory[i]; + } + + // subtract average timing from previous parent + mParent->mCountAverage -= mCountAverage; + + std::vector<NamedTimer*>& children = mParent->getChildren(); + std::vector<NamedTimer*>::iterator found_it = std::find(children.begin(), children.end(), this); + if (found_it != children.end()) + { + children.erase(found_it); + } + } + + mParent = parent; + if (parent) + { + getFrameState().mParent = &parent->getFrameState(); + parent->getChildren().push_back(this); + parent->mNeedsSorting = true; + } +} + +S32 LLFastTimer::NamedTimer::getDepth() +{ + S32 depth = 0; + NamedTimer* timerp = mParent; + while(timerp) + { + depth++; + timerp = timerp->mParent; + } + return depth; +} + +// static +void LLFastTimer::NamedTimer::processTimes() +{ + if (sCurFrameIndex < 0) return; + + buildHierarchy(); + accumulateTimings(); +} + +// sort timer info structs by depth first traversal order +struct SortTimersDFS +{ + bool operator()(const LLFastTimer::FrameState& i1, const LLFastTimer::FrameState& i2) + { + return i1.mTimer->getFrameStateIndex() < i2.mTimer->getFrameStateIndex(); + } +}; + +// sort child timers by name +struct SortTimerByName +{ + bool operator()(const LLFastTimer::NamedTimer* i1, const LLFastTimer::NamedTimer* i2) + { + return i1->getName() < i2->getName(); + } +}; + +//static +void LLFastTimer::NamedTimer::buildHierarchy() +{ + if (sCurFrameIndex < 0 ) return; + + // set up initial tree + for (instance_iter it = NamedTimer::beginInstances(); + it != endInstances(); + ++it) + { + NamedTimer& timer = *it; + if (&timer == NamedTimerFactory::instance().getRootTimer()) continue; + + // bootstrap tree construction by attaching to last timer to be on stack + // when this timer was called + if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer()) + { + timer.setParent(timer.getFrameState().mLastCaller->mTimer); + // no need to push up tree on first use, flag can be set spuriously + timer.getFrameState().mMoveUpTree = false; + } + } + + // bump timers up tree if they've been flagged as being in the wrong place + // do this in a bottom up order to promote descendants first before promoting ancestors + // this preserves partial order derived from current frame's observations + for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree_bottom_up(); + ++it) + { + NamedTimer* timerp = *it; + // skip root timer + if (timerp == NamedTimerFactory::instance().getRootTimer()) continue; + + if (timerp->getFrameState().mMoveUpTree) + { + // since ancestors have already been visited, reparenting won't affect tree traversal + //step up tree, bringing our descendants with us + //llinfos << "Moving " << timerp->getName() << " from child of " << timerp->getParent()->getName() << + // " to child of " << timerp->getParent()->getParent()->getName() << llendl; + timerp->setParent(timerp->getParent()->getParent()); + timerp->getFrameState().mMoveUpTree = false; + + // don't bubble up any ancestors until descendants are done bubbling up + it.skipAncestors(); + } + } + + // sort timers by time last called, so call graph makes sense + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + if (timerp->mNeedsSorting) + { + std::sort(timerp->getChildren().begin(), timerp->getChildren().end(), SortTimerByName()); + } + timerp->mNeedsSorting = false; + } +} + +//static +void LLFastTimer::NamedTimer::accumulateTimings() +{ + U32 cur_time = get_cpu_clock_count_32(); + + // walk up stack of active timers and accumulate current time while leaving timing structures active + LLFastTimer* cur_timer = sCurTimerData.mCurTimer; + // root defined by parent pointing to self + CurTimerData* cur_data = &sCurTimerData; + while(cur_timer->mLastTimerData.mCurTimer != cur_timer) + { + U32 cumulative_time_delta = cur_time - cur_timer->mStartTime; + U32 self_time_delta = cumulative_time_delta - cur_data->mChildTime; + cur_data->mChildTime = 0; + cur_timer->mFrameState->mSelfTimeCounter += self_time_delta; + cur_timer->mStartTime = cur_time; + + cur_data = &cur_timer->mLastTimerData; + cur_data->mChildTime += cumulative_time_delta; + + cur_timer = cur_timer->mLastTimerData.mCurTimer; + } + + // traverse tree in DFS post order, or bottom up + for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getActiveRootTimer()); + it != end_timer_tree_bottom_up(); + ++it) + { + NamedTimer* timerp = (*it); + timerp->mTotalTimeCounter = timerp->getFrameState().mSelfTimeCounter; + for (child_const_iter child_it = timerp->beginChildren(); child_it != timerp->endChildren(); ++child_it) + { + timerp->mTotalTimeCounter += (*child_it)->mTotalTimeCounter; + } + + S32 cur_frame = sCurFrameIndex; + if (cur_frame >= 0) + { + // update timer history + int hidx = cur_frame % HISTORY_NUM; + + timerp->mCountHistory[hidx] = timerp->mTotalTimeCounter; + timerp->mCountAverage = (timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1); + timerp->mCallHistory[hidx] = timerp->getFrameState().mCalls; + timerp->mCallAverage = (timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1); + } + } +} + +// static +void LLFastTimer::NamedTimer::resetFrame() +{ + if (sLog) + { //output current frame counts to performance log + F64 iclock_freq = 1000.0 / countsPerSecond(); // good place to calculate clock frequency + + F64 total_time = 0; + LLSD sd; + + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + FrameState& info = timer.getFrameState(); + sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq); + sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls; + + // computing total time here because getting the root timer's getCountHistory + // doesn't work correctly on the first frame + total_time = total_time + info.mSelfTimeCounter * iclock_freq; + } + + sd["Total"]["Time"] = (LLSD::Real) total_time; + sd["Total"]["Calls"] = (LLSD::Integer) 1; + + { + LLMutexLock lock(sLogLock); + sLogQueue.push(sd); + } + } + + + // tag timers by position in depth first traversal of tree + S32 index = 0; + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + + timerp->mFrameStateIndex = index; + index++; + + llassert_always(timerp->mFrameStateIndex < (S32)getFrameStateList().size()); + } + + // sort timers by dfs traversal order to improve cache coherency + std::sort(getFrameStateList().begin(), getFrameStateList().end(), SortTimersDFS()); + + // update pointers into framestatelist now that we've sorted it + DeclareTimer::updateCachedPointers(); + + // reset for next frame + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + + FrameState& info = timer.getFrameState(); + info.mSelfTimeCounter = 0; + info.mCalls = 0; + info.mLastCaller = NULL; + info.mMoveUpTree = false; + // update parent pointer in timer state struct + if (timer.mParent) + { + info.mParent = &timer.mParent->getFrameState(); + } + } + + //sTimerCycles = 0; + //sTimerCalls = 0; +} + +//static +void LLFastTimer::NamedTimer::reset() +{ + resetFrame(); // reset frame data + + // walk up stack of active timers and reset start times to current time + // effectively zeroing out any accumulated time + U32 cur_time = get_cpu_clock_count_32(); + + // root defined by parent pointing to self + CurTimerData* cur_data = &sCurTimerData; + LLFastTimer* cur_timer = cur_data->mCurTimer; + while(cur_timer->mLastTimerData.mCurTimer != cur_timer) + { + cur_timer->mStartTime = cur_time; + cur_data->mChildTime = 0; + + cur_data = &cur_timer->mLastTimerData; + cur_timer = cur_data->mCurTimer; + } + + // reset all history + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + if (&timer != NamedTimerFactory::instance().getRootTimer()) + { + timer.setParent(NamedTimerFactory::instance().getRootTimer()); + } + + timer.mCountAverage = 0; + timer.mCallAverage = 0; + memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM); + memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM); + } + + sLastFrameIndex = 0; + sCurFrameIndex = 0; +} + +//static +LLFastTimer::info_list_t& LLFastTimer::getFrameStateList() +{ + if (!sTimerInfos) + { + sTimerInfos = new info_list_t(); + } + return *sTimerInfos; +} + + +U32 LLFastTimer::NamedTimer::getHistoricalCount(S32 history_index) const +{ + S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM; + return mCountHistory[history_idx]; +} + +U32 LLFastTimer::NamedTimer::getHistoricalCalls(S32 history_index ) const +{ + S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM; + return mCallHistory[history_idx]; +} + +LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() const +{ + llassert_always(mFrameStateIndex >= 0); + if (this == NamedTimerFactory::instance().getActiveRootTimer()) + { + return NamedTimerFactory::instance().getRootFrameState(); + } + return getFrameStateList()[mFrameStateIndex]; +} + +// static +LLFastTimer::NamedTimer& LLFastTimer::NamedTimer::getRootNamedTimer() +{ + return *NamedTimerFactory::instance().getActiveRootTimer(); +} + +std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::beginChildren() +{ + return mChildren.begin(); +} + +std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::endChildren() +{ + return mChildren.end(); +} + +std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren() +{ + return mChildren; +} + +//static +void LLFastTimer::nextFrame() +{ + countsPerSecond(); // good place to calculate clock frequency + U64 frame_time = get_cpu_clock_count_64(); + if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff) + { + llinfos << "Slow frame, fast timers inaccurate" << llendl; + } + + if (sPauseHistory) + { + sResetHistory = true; + } + else if (sResetHistory) + { + sLastFrameIndex = 0; + sCurFrameIndex = 0; + sResetHistory = false; + } + else // not paused + { + NamedTimer::processTimes(); + sLastFrameIndex = sCurFrameIndex++; + } + + // get ready for next frame + NamedTimer::resetFrame(); + sLastFrameTime = frame_time; +} + +//static +void LLFastTimer::dumpCurTimes() +{ + // accumulate timings, etc. + NamedTimer::processTimes(); + + F64 clock_freq = (F64)countsPerSecond(); + F64 iclock_freq = 1000.0 / clock_freq; // clock_ticks -> milliseconds + + // walk over timers in depth order and output timings + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + F64 total_time_ms = ((F64)timerp->getHistoricalCount(0) * iclock_freq); + // Don't bother with really brief times, keep output concise + if (total_time_ms < 0.1) continue; + + std::ostringstream out_str; + for (S32 i = 0; i < timerp->getDepth(); i++) + { + out_str << "\t"; + } + + + out_str << timerp->getName() << " " + << std::setprecision(3) << total_time_ms << " ms, " + << timerp->getHistoricalCalls(0) << " calls"; + + llinfos << out_str.str() << llendl; + } +} + +//static +void LLFastTimer::reset() +{ + NamedTimer::reset(); +} + + +//static +void LLFastTimer::writeLog(std::ostream& os) +{ + while (!sLogQueue.empty()) + { + LLSD& sd = sLogQueue.front(); + LLSDSerialize::toXML(sd, os); + LLMutexLock lock(sLogLock); + sLogQueue.pop(); + } +} + +//static +const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& name) +{ + return NamedTimerFactory::instance().getTimerByName(name); +} + +LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state) +: mFrameState(state) +{ + U32 start_time = get_cpu_clock_count_32(); + mStartTime = start_time; + mFrameState->mActiveCount++; + LLFastTimer::sCurTimerData.mCurTimer = this; + LLFastTimer::sCurTimerData.mFrameState = mFrameState; + LLFastTimer::sCurTimerData.mChildTime = 0; + mLastTimerData = LLFastTimer::sCurTimerData; +} + + +////////////////////////////////////////////////////////////////////////////// diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h index 93d2d0494d4..4cb0c2d04e9 100644 --- a/indra/llcommon/llfasttimer_class.h +++ b/indra/llcommon/llfasttimer_class.h @@ -39,6 +39,12 @@ #define TIME_FAST_TIMERS 0 +#if LL_WINDOWS +#define LL_INLINE __forceinline +#else +#define LL_INLINE +#endif // LL_WINDOWS + class LLMutex; #include <queue> @@ -47,7 +53,6 @@ class LLMutex; class LL_COMMON_API LLFastTimer { public: - class NamedTimer; struct LL_COMMON_API FrameState @@ -163,11 +168,11 @@ class LL_COMMON_API LLFastTimer : mFrameState(timer.mFrameState) { #if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); + U64 timer_start = getCPUClockCount64(); #endif #if FAST_TIMER_ON LLFastTimer::FrameState* frame_state = mFrameState; - mStartTime = get_cpu_clock_count_32(); + mStartTime = getCPUClockCount32(); frame_state->mActiveCount++; frame_state->mCalls++; @@ -181,7 +186,7 @@ class LL_COMMON_API LLFastTimer cur_timer_data->mChildTime = 0; #endif #if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); + U64 timer_end = getCPUClockCount64(); sTimerCycles += timer_end - timer_start; #endif } @@ -189,11 +194,11 @@ class LL_COMMON_API LLFastTimer LL_INLINE ~LLFastTimer() { #if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); + U64 timer_start = getCPUClockCount64(); #endif #if FAST_TIMER_ON LLFastTimer::FrameState* frame_state = mFrameState; - U32 total_time = get_cpu_clock_count_32() - mStartTime; + U32 total_time = getCPUClockCount32() - mStartTime; frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime; frame_state->mActiveCount--; @@ -208,7 +213,7 @@ class LL_COMMON_API LLFastTimer LLFastTimer::sCurTimerData = mLastTimerData; #endif #if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); + U64 timer_end = getCPUClockCount64(); sTimerCycles += timer_end - timer_start; sTimerCalls++; #endif @@ -254,11 +259,14 @@ class LL_COMMON_API LLFastTimer static CurTimerData sCurTimerData; private: + static U32 getCPUClockCount32(); + static U64 getCPUClockCount64(); + static U64 sClockResolution; + static S32 sCurFrameIndex; static S32 sLastFrameIndex; static U64 sLastFrameTime; static info_list_t* sTimerInfos; - static U64 sClockResolution; U32 mStartTime; LLFastTimer::FrameState* mFrameState; -- GitLab From 3d0ff2585eb32c67d503452ce9f8d2198be823c8 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 13:24:45 -0800 Subject: [PATCH 098/521] Final fix for fast timer reshuffle. --- indra/llcommon/llfasttimer.h | 25 +++++++++++-------------- indra/llcommon/llfasttimer_class.cpp | 10 +++++----- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 0f3280023ca..9f9e2ea9452 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -37,7 +37,6 @@ #include "llfasttimer_class.h" #if LL_WINDOWS -#define LL_INLINE __forceinline // // Windows implementation of CPU clock // @@ -53,21 +52,21 @@ //#undef _interlockedbittestandset //#undef _interlockedbittestandreset -//inline U32 get_cpu_clock_count_32() +//inline U32 LLFastTimer::getCPUClockCount32() //{ // U64 time_stamp = __rdtsc(); // return (U32)(time_stamp >> 8); //} // //// return full timer value, *not* shifted by 8 bits -//inline U64 get_cpu_clock_count_64() +//inline U64 LLFastTimer::getCPUClockCount64() //{ // return __rdtsc(); //} // shift off lower 8 bits for lower resolution but longer term timing // on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { U32 ret_val; __asm @@ -83,7 +82,7 @@ inline U32 get_cpu_clock_count_32() } // return full timer value, *not* shifted by 8 bits -inline U64 get_cpu_clock_count_64() +inline U64 LLFastTimer::getCPUClockCount64() { U64 ret_val; __asm @@ -97,8 +96,6 @@ inline U64 get_cpu_clock_count_64() } return ret_val; } -#else -#define LL_INLINE #endif @@ -111,7 +108,7 @@ inline U64 get_cpu_clock_count_64() // to synchronize this value between cores at kernel start. It should not be affected // by CPU frequency. If not available use the REALTIME clock, but this may be affected by // NTP adjustments or other user activity affecting the system time. -inline U64 get_cpu_clock_count_64() +inline U64 LLFastTimer::getCPUClockCount64() { struct timespec tp; @@ -123,9 +120,9 @@ inline U64 get_cpu_clock_count_64() return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec; } -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { - return (U32)get_cpu_clock_count_64(); + return (U32)LLFastTimer::getCPUClockCount64(); } #endif // (LL_LINUX || LL_SOLARIS)) @@ -133,14 +130,14 @@ inline U32 get_cpu_clock_count_32() #if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) // // Mac x86 implementation of CPU clock -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); return (U32)x >> 8; } -inline U32 get_cpu_clock_count_64() +inline U32 LLFastTimer::getCPUClockCount64() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); @@ -155,12 +152,12 @@ inline U32 get_cpu_clock_count_64() // // Just use gettimeofday implementation for now -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { return (U32)get_clock_count(); } -inline U32 get_cpu_clock_count_64() +inline U32 LLFastTimer::getCPUClockCount64() { return get_clock_count(); } diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index 6dbd90f9fac..abcaee673eb 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -56,7 +56,7 @@ S32 LLFastTimer::sCurFrameIndex = -1; S32 LLFastTimer::sLastFrameIndex = -1; -U64 LLFastTimer::sLastFrameTime = get_cpu_clock_count_64(); +U64 LLFastTimer::sLastFrameTime = LLFastTimer::getCPUClockCount64(); bool LLFastTimer::sPauseHistory = 0; bool LLFastTimer::sResetHistory = 0; LLFastTimer::CurTimerData LLFastTimer::sCurTimerData; @@ -426,7 +426,7 @@ void LLFastTimer::NamedTimer::buildHierarchy() //static void LLFastTimer::NamedTimer::accumulateTimings() { - U32 cur_time = get_cpu_clock_count_32(); + U32 cur_time = getCPUClockCount32(); // walk up stack of active timers and accumulate current time while leaving timing structures active LLFastTimer* cur_timer = sCurTimerData.mCurTimer; @@ -556,7 +556,7 @@ void LLFastTimer::NamedTimer::reset() // walk up stack of active timers and reset start times to current time // effectively zeroing out any accumulated time - U32 cur_time = get_cpu_clock_count_32(); + U32 cur_time = getCPUClockCount32(); // root defined by parent pointing to self CurTimerData* cur_data = &sCurTimerData; @@ -649,7 +649,7 @@ std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren() void LLFastTimer::nextFrame() { countsPerSecond(); // good place to calculate clock frequency - U64 frame_time = get_cpu_clock_count_64(); + U64 frame_time = getCPUClockCount64(); if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff) { llinfos << "Slow frame, fast timers inaccurate" << llendl; @@ -738,7 +738,7 @@ const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& na LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state) : mFrameState(state) { - U32 start_time = get_cpu_clock_count_32(); + U32 start_time = getCPUClockCount32(); mStartTime = start_time; mFrameState->mActiveCount++; LLFastTimer::sCurTimerData.mCurTimer = this; -- GitLab From 18bdeb3d0e5ef4e5b014b41a8003569061e00910 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 13:32:49 -0800 Subject: [PATCH 099/521] DEV-45468 'SNOW-108: Fast timers are broken / badly-scaled on linux' ready to merge. legacy coding policy fix-up. --- indra/llcommon/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 05e45d6d8ac..9ead183a9e0 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -250,7 +250,7 @@ list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES}) if(LLCOMMON_LINK_SHARED) add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) - ll_stage_sharedlib(llcommon) + ll_stage_sharedlib(llcommon) else(LLCOMMON_LINK_SHARED) add_library (llcommon ${llcommon_SOURCE_FILES}) endif(LLCOMMON_LINK_SHARED) -- GitLab From 2375afc4283e47a50516c1e003a6f699b0a2cfe1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 13:49:13 -0800 Subject: [PATCH 100/521] Gosh, the mac prototypes for get_cpu_clock_count_64 have always been wrong, but the compiler didn't start caring until I made these proper member functions. fixed. --- indra/llcommon/llfasttimer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 9f9e2ea9452..32f3561616c 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -137,7 +137,7 @@ inline U32 LLFastTimer::getCPUClockCount32() return (U32)x >> 8; } -inline U32 LLFastTimer::getCPUClockCount64() +inline U64 LLFastTimer::getCPUClockCount64() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); @@ -157,7 +157,7 @@ inline U32 LLFastTimer::getCPUClockCount32() return (U32)get_clock_count(); } -inline U32 LLFastTimer::getCPUClockCount64() +inline U64 LLFastTimer::getCPUClockCount64() { return get_clock_count(); } -- GitLab From 88108c0ae85c541be08a6b9313a2606c5bfd2d92 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Mon, 25 Jan 2010 14:23:47 -0800 Subject: [PATCH 101/521] test change. --- indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index cb9f9439494..443be58c97b 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -19,7 +19,7 @@ width="320"> <string name="nudge_parabuild">Nudge 1</string> <string name="test_the_vlt">This string CHANGE is extracted.</string> - <string name="testing_eli">Just a test.</string> + <string name="testing_eli">Just a test. change here.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" -- GitLab From cbe647786f8631d32fc5f9226853950359207699 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 14:25:58 -0800 Subject: [PATCH 102/521] We already have a LL_FORCE_INLINE in llpreprocessor.h, don't re-invent it for llfasttimers.h. Also define LL_LIKELY/LL_UNLIKELY with a warning about its micro-optimizey nature, and use it to annotate llasserts (i.e. make llassert() lower-overhead and thus more attractive, even in inner-ish loops.) --- indra/llcommon/llerrorlegacy.h | 4 ++-- indra/llcommon/llfasttimer_class.h | 11 ++--------- indra/llcommon/llpreprocessor.h | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h index 9920921a58d..476d75380f3 100644 --- a/indra/llcommon/llerrorlegacy.h +++ b/indra/llcommon/llerrorlegacy.h @@ -34,7 +34,7 @@ #ifndef LL_LLERRORLEGACY_H #define LL_LLERRORLEGACY_H - +#include "llpreprocessor.h" /* LEGACY -- DO NOT USE THIS STUFF ANYMORE @@ -107,7 +107,7 @@ const int LL_ERR_PRICE_MISMATCH = -23018; #define llwarning(msg, num) llwarns << "Warning # " << num << ": " << msg << llendl; -#define llassert_always(func) if (!(func)) llerrs << "ASSERT (" << #func << ")" << llendl; +#define llassert_always(func) if (LL_UNLIKELY(!(func))) llerrs << "ASSERT (" << #func << ")" << llendl; #ifdef SHOW_ASSERT #define llassert(func) llassert_always(func) diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h index 4cb0c2d04e9..ddb1a747935 100644 --- a/indra/llcommon/llfasttimer_class.h +++ b/indra/llcommon/llfasttimer_class.h @@ -38,13 +38,6 @@ #define FAST_TIMER_ON 1 #define TIME_FAST_TIMERS 0 - -#if LL_WINDOWS -#define LL_INLINE __forceinline -#else -#define LL_INLINE -#endif // LL_WINDOWS - class LLMutex; #include <queue> @@ -164,7 +157,7 @@ class LL_COMMON_API LLFastTimer public: LLFastTimer(LLFastTimer::FrameState* state); - LL_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) + LL_FORCE_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) : mFrameState(timer.mFrameState) { #if TIME_FAST_TIMERS @@ -191,7 +184,7 @@ class LL_COMMON_API LLFastTimer #endif } - LL_INLINE ~LLFastTimer() + LL_FORCE_INLINE ~LLFastTimer() { #if TIME_FAST_TIMERS U64 timer_start = getCPUClockCount64(); diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 5eefa6a16b2..1c1503ca7b6 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -55,13 +55,28 @@ #define LL_BIG_ENDIAN 1 #endif + // Per-compiler switches + #ifdef __GNUC__ #define LL_FORCE_INLINE inline __attribute__((always_inline)) #else #define LL_FORCE_INLINE __forceinline #endif +// Mark-up expressions with branch prediction hints. Do NOT use +// this with reckless abandon - it's an obfuscating micro-optimization +// outside of inner loops or other places where you are OVERWHELMINGLY +// sure which way an expression almost-always evaluates. +#if __GNUC__ >= 3 +# define LL_LIKELY(EXPR) __builtin_expect (!!(EXPR), true) +# define LL_UNLIKELY(EXPR) __builtin_expect (!!(EXPR), false) +#else +# define LL_LIKELY(EXPR) (EXPR) +# define LL_UNLIKELY(EXPR) (EXPR) +#endif + + // Figure out differences between compilers #if defined(__GNUC__) #define GCC_VERSION (__GNUC__ * 10000 \ -- GitLab From b897406e0591b82c685a76ac03bfe219e91ea96a Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Mon, 25 Jan 2010 14:45:59 -0800 Subject: [PATCH 103/521] harmless test commit to work with eli. --- indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index cb9f9439494..b072b57ce7b 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -18,7 +18,7 @@ single_instance="true" width="320"> <string name="nudge_parabuild">Nudge 1</string> - <string name="test_the_vlt">This string CHANGE is extracted.</string> + <string name="test_the_vlt">This string CHANGE2 is extracted.</string> <string name="testing_eli">Just a test.</string> <chat_history allow_html="true" -- GitLab From 66e7c2ce7715873bc29437878c5bce1ca0bee27b Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Tue, 26 Jan 2010 06:48:42 +0800 Subject: [PATCH 104/521] fix mac build failure -- richard --- indra/llui/lltextbase.cpp | 4 ++-- indra/llui/lltextbase.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 885a830c9fc..ddbe81a6d44 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2203,7 +2203,7 @@ void LLTextSegment::linkToDocument(LLTextBase*) {} const LLColor4& LLTextSegment::getColor() const { return LLColor4::white; } //void LLTextSegment::setColor(const LLColor4 &color) {} LLStyleConstSP LLTextSegment::getStyle() const {static LLStyleConstSP sp(new LLStyle()); return sp; } -void LLTextSegment::setStyle(LLStyleConstSP &style) {} +void LLTextSegment::setStyle(LLStyleConstSP style) {} void LLTextSegment::setToken( LLKeywordToken* token ) {} LLKeywordToken* LLTextSegment::getToken() const { return NULL; } void LLTextSegment::setToolTip( const std::string &msg ) {} @@ -2228,7 +2228,7 @@ BOOL LLTextSegment::hasMouseCapture() { return FALSE; } // LLNormalTextSegment // -LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ) +LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor ) : LLTextSegment(start, end), mStyle( style ), mToken(NULL), diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 5526667166f..9fff9101732 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -390,7 +390,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler virtual const LLColor4& getColor() const; //virtual void setColor(const LLColor4 &color); virtual LLStyleConstSP getStyle() const; - virtual void setStyle(LLStyleConstSP &style); + virtual void setStyle(LLStyleConstSP style); virtual void setToken( LLKeywordToken* token ); virtual LLKeywordToken* getToken() const; virtual void setToolTip(const std::string& tooltip); @@ -426,7 +426,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler class LLNormalTextSegment : public LLTextSegment { public: - LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ); + LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor ); LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE); ~LLNormalTextSegment(); @@ -437,7 +437,7 @@ class LLNormalTextSegment : public LLTextSegment /*virtual*/ bool canEdit() const { return true; } /*virtual*/ const LLColor4& getColor() const { return mStyle->getColor(); } /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; } - /*virtual*/ void setStyle(LLStyleConstSP &style) { mStyle = style; } + /*virtual*/ void setStyle(LLStyleConstSP style) { mStyle = style; } /*virtual*/ void setToken( LLKeywordToken* token ) { mToken = token; } /*virtual*/ LLKeywordToken* getToken() const { return mToken; } /*virtual*/ BOOL getToolTip( std::string& msg ) const; -- GitLab From 9e83fb1f418f17fb92638d2ff75f71e96b5670bd Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 25 Jan 2010 18:07:34 -0500 Subject: [PATCH 105/521] Changed menu font to SansSerifSmall and cleaned up layout. http://jira.secondlife.com/browse/EXT-4175 --- .../skins/default/xui/en/panel_status_bar.xml | 17 +++++++++-------- .../skins/default/xui/en/widgets/menu_item.xml | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 7a6089c74e0..5754f67045f 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -49,7 +49,7 @@ image_unselected="spacer35.tga" image_pressed="spacer35.tga" height="16" - right="-228" + right="-204" label_shadow="false" name="buycurrency" tool_tip="My Balance" @@ -69,15 +69,16 @@ left_pad="0" label_shadow="false" name="buyL" - pad_right="20px" + pad_right="20" + pad_bottom="2" tool_tip="Click to buy more L$" top="2" - width="100" /> + width="71" /> <text type="string" font="SansSerifSmall" text_readonly_color="TimeTextColor" - follows="right|bottom" + follows="right|top" halign="right" height="16" top="5" @@ -85,11 +86,11 @@ left_pad="0" name="TimeText" tool_tip="Current time (Pacific)" - width="85"> - 12:00 AM + width="89"> + 24:00 AM PST </text> <button - follows="right|bottom" + follows="right|top" height="15" image_selected="AudioMute_Off" image_pressed="Audio_Press" @@ -101,7 +102,7 @@ tool_tip="Global Volume Control" width="16" /> <text - follows="right|bottom" + follows="right|top" halign="center" height="12" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml index c65244ae224..563f3dc5c2b 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!-- Use this for the top-level menu styling --> -<menu_item font="SansSerif" /> +<menu_item font="SansSerifSmall" /> -- GitLab From 4a0f58bbc6fa169acbfdbca344666d4385290e26 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Mon, 25 Jan 2010 15:43:25 -0800 Subject: [PATCH 106/521] EXT-1399 - Turn off wind when not flying reviewed by Angela --- indra/newview/llvieweraudio.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 38103f9e41c..934981b0ad8 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -242,10 +242,29 @@ void audio_update_wind(bool force_update) // outside the fade-in. F32 master_volume = gSavedSettings.getBOOL("MuteAudio") ? 0.f : gSavedSettings.getF32("AudioLevelMaster"); F32 ambient_volume = gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient"); + F32 max_wind_volume = master_volume * ambient_volume; - F32 wind_volume = master_volume * ambient_volume; - gAudiop->mMaxWindGain = wind_volume; - + const F32 WIND_SOUND_TRANSITION_TIME = 2.f; + // amount to change volume this frame + F32 volume_delta = (LLFrameTimer::getFrameDeltaTimeF32() / WIND_SOUND_TRANSITION_TIME) * max_wind_volume; + if (force_update) + { + // initialize wind volume (force_update) by using large volume_delta + // which is sufficient to completely turn off or turn on wind noise + volume_delta = max_wind_volume; + } + + // mute wind when not flying + if (gAgent.getFlying()) + { + // volume increases by volume_delta, up to no more than max_wind_volume + gAudiop->mMaxWindGain = llmin(gAudiop->mMaxWindGain + volume_delta, max_wind_volume); + } + else + { + // volume decreases by volume_delta, down to no less than 0 + gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f); + } last_camera_water_height = camera_water_height; gAudiop->updateWind(gRelativeWindVec, camera_water_height); -- GitLab From c555e837b19fd876bf155d131c30942d27fc8364 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Mon, 25 Jan 2010 15:55:12 -0800 Subject: [PATCH 107/521] EXT-4348 - List of names before "have said something new" wraps poorly accepted patch from Josh --- indra/newview/llchathistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index a46cd84b608..8074213b04d 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -470,7 +470,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ chatters += *it; if (++it != mUnreadChatSources.end()) { - chatters += ","; + chatters += ", "; } } LLStringUtil::format_map_t args; -- GitLab From 226f64ea796745c8d95142cfffe75cc5a6d04e26 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Mon, 25 Jan 2010 16:14:55 -0800 Subject: [PATCH 108/521] test change. --- indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index 55196d5b659..b4d2dabc5c8 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -19,7 +19,7 @@ width="320"> <string name="nudge_parabuild">Nudge 1</string> <string name="test_the_vlt">This string CHANGE2 is extracted.</string> - <string name="testing_eli">Just a test. change here.</string> + <string name="testing_eli">Just a test. change here. more change.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" -- GitLab From b00813ae3ca14a7531d93d35d795ce7c23119886 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 25 Jan 2010 16:35:50 -0800 Subject: [PATCH 109/521] EXT-4388 Crash in octree line segment intersection code a more complete fix and some sanity to prevent recurrance of a similar problem. reviewed by bao! --- indra/llrender/llimagegl.cpp | 43 +++++++++++++++++++++--------------- indra/llrender/llimagegl.h | 2 ++ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index cd493481d5b..46478ba3c95 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -436,6 +436,8 @@ void LLImageGL::init(BOOL usemipmaps) mLastBindTime = 0.f; mPickMask = NULL; + mPickMaskWidth = 0; + mPickMaskHeight = 0; mUseMipMaps = usemipmaps; mHasExplicitFormat = FALSE; mAutoGenMips = FALSE; @@ -527,7 +529,12 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents) // llwarns << "Setting Size of LLImageGL with existing mTexName = " << mTexName << llendl; destroyGLTexture(); } - + + // pickmask validity depends on old image size, delete it + delete [] mPickMask; + mPickMask = NULL; + mPickMaskWidth = mPickMaskHeight = 0; + mWidth = width; mHeight = height; mComponents = ncomponents; @@ -1675,12 +1682,14 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) return ; } + delete [] mPickMask; + mPickMask = NULL; + mPickMaskWidth = mPickMaskHeight = 0; + if (mFormatType != GL_UNSIGNED_BYTE || mFormatPrimary != GL_RGBA) { //cannot generate a pick mask for this texture - delete [] mPickMask; - mPickMask = NULL; return; } @@ -1688,11 +1697,10 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) U32 pick_height = height/2; U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1); - size = size/8 + 1; - - delete[] mPickMask; mPickMask = new U8[size]; + mPickMaskWidth = pick_width; + mPickMaskHeight = pick_height; memset(mPickMask, 0, sizeof(U8) * size); @@ -1727,35 +1735,34 @@ BOOL LLImageGL::getMask(const LLVector2 &tc) if (mPickMask) { - S32 width = getWidth()/2; - S32 height = getHeight()/2; - F32 u = tc.mV[0] - floorf(tc.mV[0]); F32 v = tc.mV[1] - floorf(tc.mV[1]); - if (u < 0.f || u > 1.f || - v < 0.f || v > 1.f) + if (LL_UNLIKELY(u < 0.f || u > 1.f || + v < 0.f || v > 1.f)) { LL_WARNS_ONCE("render") << "Ugh, u/v out of range in image mask pick" << LL_ENDL; u = v = 0.f; llassert(false); } + + llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0); - S32 x = (S32)(u * width); - S32 y = (S32)(v * height); + S32 x = (S32)(u * mPickMaskWidth); + S32 y = (S32)(v * mPickMaskHeight); - if (x >= width) + if (LL_UNLIKELY(x >= mPickMaskWidth)) { LL_WARNS_ONCE("render") << "Ooh, width overrun on pick mask read, that coulda been bad." << LL_ENDL; - x = llmax(0, width-1); + x = llmax(0, mPickMaskWidth-1); } - if (y >= height) + if (LL_UNLIKELY(y >= mPickMaskHeight)) { LL_WARNS_ONCE("render") << "Ooh, height overrun on pick mask read, that woulda been bad." << LL_ENDL; - y = llmax(0, height-1); + y = llmax(0, mPickMaskHeight-1); } - S32 idx = y*width+x; + S32 idx = y*mPickMaskWidth+x; S32 offset = idx%8; res = mPickMask[idx/8] & (1 << offset) ? TRUE : FALSE; diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index facfb7bd62d..f0870c3fc45 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -193,6 +193,8 @@ class LLImageGL : public LLRefCount private: LLPointer<LLImageRaw> mSaveData; // used for destroyGL/restoreGL U8* mPickMask; //downsampled bitmap approximation of alpha channel. NULL if no alpha channel + U16 mPickMaskWidth; + U16 mPickMaskHeight; S8 mUseMipMaps; S8 mHasExplicitFormat; // If false (default), GL format is f(mComponents) S8 mAutoGenMips; -- GitLab From fbf605ea321ee29afad63a4afe47f65584d67eea Mon Sep 17 00:00:00 2001 From: Palmer <palmer@lindenlab.com> Date: Mon, 25 Jan 2010 17:13:35 -0800 Subject: [PATCH 110/521] EXT-4712 - Upgraded some 7000 series cards and 9000 series cards from class 2 to 3 for more lights. No code changed. --- indra/newview/gpu_table.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index cc8f6780e3c..887dab66d18 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -192,9 +192,9 @@ NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1 NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 -NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1 -NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 2 1 -NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 2 1 +NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 3 1 +NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 3 1 +NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 3 1 NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 @@ -207,8 +207,8 @@ NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 -NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 2 1 -NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 +NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 3 1 +NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 3 1 NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 NVIDIA GeForce 9400 .*GeForce 94.* 1 1 NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 -- GitLab From cd790bfd54733fe2d14dc501d99b826d968e1252 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Tue, 26 Jan 2010 10:45:53 +0200 Subject: [PATCH 111/521] Update for low bug EXT-4306 - Landmark name is shown with prefix in the group notice attachment. --HG-- branch : product-engine --- indra/newview/llviewerinventory.h | 2 +- indra/newview/llviewermessage.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 917b8747eaa..7f3f019b070 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -58,7 +58,6 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr protected: ~LLViewerInventoryItem( void ); // ref counted BOOL extractSortFieldAndDisplayName(S32* sortField, std::string* displayName) const { return extractSortFieldAndDisplayName(mName, sortField, displayName); } - static char getSeparator() { return '@'; } mutable std::string mDisplayName; public: @@ -67,6 +66,7 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr virtual const std::string& getName() const; virtual const std::string& getDisplayName() const; static std::string getDisplayName(const std::string& name); + static char getSeparator() { return '@'; } virtual S32 getSortField() const; virtual void setSortField(S32 sortField); virtual void rename(const std::string& new_name); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 0358efc0afd..1d3ac3fb0fb 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1436,6 +1436,31 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const return false; } +std::string get_display_name(const std::string& name) +{ + // We receive landmark name as \'<n>@name\' where <n> is a number + // LLViewerInventoryItem::getDisplayName will remove \'<n>@ though we need the \' + // Lets save all chars preceding @ and insert them back after <n>@ was removed + + std::string saved; + + if(std::string::npos != name.find(LLViewerInventoryItem::getSeparator())) + { + int n = 0; + while(!isdigit(name[n]) && LLViewerInventoryItem::getSeparator() != name[n]) + { + ++n; + } + saved = name.substr(0, n); + } + + std::string d_name = LLViewerInventoryItem::getDisplayName(name); + d_name.insert(0, saved); + LLStringUtil::trim(d_name); + + return d_name; +} + void inventory_offer_handler(LLOfferInfo* info) { //Until throttling is implmented, busy mode should reject inventory instead of silently @@ -1475,7 +1500,7 @@ void inventory_offer_handler(LLOfferInfo* info) if(LLAssetType::AT_LANDMARK == info->mType) { - msg = LLViewerInventoryItem::getDisplayName(msg); + msg = get_display_name(msg); } LLSD args; -- GitLab From 2bb3a24ca115832bdbfc5030f4ab553cab1e2ef8 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Tue, 26 Jan 2010 10:40:17 +0000 Subject: [PATCH 112/521] EXT-4716: Added new SLapps for Home web content. secondlife:///app/appearance - to open the My Appearance sidetray secondlife:///app/help/{TOPIC} - to display help for a given topic I've updated https://wiki.lindenlab.com/wiki/Viewer_2.0_SLapps --- indra/newview/llappearancemgr.cpp | 18 ++++++++++++++++++ indra/newview/llviewerhelp.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 03180b6a9d5..66e9b377d94 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -35,6 +35,7 @@ #include "llagent.h" #include "llagentwearables.h" #include "llappearancemgr.h" +#include "llcommandhandler.h" #include "llfloatercustomize.h" #include "llgesturemgr.h" #include "llinventorybridge.h" @@ -47,6 +48,23 @@ #include "llviewerregion.h" #include "llwearablelist.h" +// support for secondlife:///app/appearance SLapps +class LLAppearanceHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + // we currently don't support any commands after the "appearance" + // part of the SLapp - we just show the appearance side panel + LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD()); + return true; + } +}; +LLAppearanceHandler gAppearanceHandler; + class LLWearInventoryCategoryCallback : public LLInventoryCallback { public: diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 7c491ad1541..b82538dacba 100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp @@ -33,6 +33,7 @@ #include "llviewerprecompiledheaders.h" +#include "llcommandhandler.h" #include "llfloaterhelpbrowser.h" #include "llfloaterreg.h" #include "llfocusmgr.h" @@ -43,6 +44,33 @@ #include "llviewerhelputil.h" #include "llviewerhelp.h" +// support for secondlife:///app/help/{TOPIC} SLapps +class LLHelpHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLHelpHandler() : LLCommandHandler("help", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + LLViewerHelp* vhelp = LLViewerHelp::getInstance(); + if (! vhelp) + { + return false; + } + + // get the requested help topic name, or use the fallback if none + std::string help_topic = vhelp->defaultTopic(); + if (params.size() >= 1) + { + help_topic = params[0].asString(); + } + + vhelp->showTopic(help_topic); + return true; + } +}; +LLHelpHandler gHelpHandler; ////////////////////////////// // implement LLHelp interface -- GitLab From aad8a1bd00ff12afdfdb7f508bc57a8ea1347b3b Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Tue, 26 Jan 2010 10:42:54 +0000 Subject: [PATCH 113/521] EXT-4716: Updated a comment. To say that we must explicitly support secondlife:///app/appearance/show --- indra/newview/llappearancemgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 66e9b377d94..1dec8c7bd85 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -57,8 +57,8 @@ class LLAppearanceHandler : public LLCommandHandler bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) { - // we currently don't support any commands after the "appearance" - // part of the SLapp - we just show the appearance side panel + // support secondlife:///app/appearance/show, but for now we just + // make all secondlife:///app/appearance SLapps behave this way LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD()); return true; } -- GitLab From 0a38adfd8af7d95627cd43e44901b9ae4e4e2d29 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Tue, 26 Jan 2010 13:09:26 +0000 Subject: [PATCH 114/521] EXT-4678: Don't hyperlink sim URLs in About window. Added support for specifying a black list of URLs on a per-widget basis. URLs on this black list will not be hyperlinked in the text widget. The About dialog adds the sim hostname to this black list. --- indra/llui/lltextbase.cpp | 46 +++++++++++++++++++++++++------- indra/llui/lltextbase.h | 8 ++++++ indra/newview/llfloaterabout.cpp | 6 +++++ 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 47db990a372..ab0d9b2221b 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1511,6 +1511,25 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params& onValueChange(0, getLength()); } +void LLTextBase::addBlackListUrl(const std::string &url) +{ + mBlackListUrls.push_back(url); +} + +bool LLTextBase::isBlackListUrl(const std::string &url) const +{ + std::vector<std::string>::const_iterator it; + for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it) + { + const std::string &blacklist_url = *it; + if (url.find(blacklist_url) != std::string::npos) + { + return true; + } + } + return false; +} + //virtual std::string LLTextBase::getText() const { @@ -1585,20 +1604,29 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c prepend_newline = false; } } - // output the styled Url - appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params); - prepend_newline = false; - // set the tooltip for the Url label - if (! match.getTooltip().empty()) + // output the styled Url (unless we've been asked to suppress it) + if (isBlackListUrl(match.getUrl())) + { + std::string orig_url = text.substr(start, end-start); + appendAndHighlightText(orig_url, prepend_newline, part, style_params); + } + else { - segment_set_t::iterator it = getSegIterContaining(getLength()-1); - if (it != mSegments.end()) + appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params); + + // set the tooltip for the Url label + if (! match.getTooltip().empty()) { - LLTextSegmentPtr segment = *it; - segment->setToolTip(match.getTooltip()); + segment_set_t::iterator it = getSegIterContaining(getLength()-1); + if (it != mSegments.end()) + { + LLTextSegmentPtr segment = *it; + segment->setToolTip(match.getTooltip()); + } } } + prepend_newline = false; // move on to the rest of the text after the Url if (end < (S32)text.length()) diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 038b9eaa62b..e1c6cc36ab6 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -41,6 +41,7 @@ #include "llpanel.h" #include <string> +#include <vector> #include <set> #include <boost/signals2.hpp> @@ -186,6 +187,9 @@ class LLTextBase const LLFontGL* getDefaultFont() const { return mDefaultFont; } LLStyle::Params getDefaultStyle(); + // tell the text object to suppress auto highlighting of a specific URL + void addBlackListUrl(const std::string &url); + public: // Fired when a URL link is clicked commit_signal_t mURLClickSignal; @@ -308,6 +312,7 @@ class LLTextBase void updateRects(); void needsScroll() { mScrollNeeded = TRUE; } void replaceUrlLabel(const std::string &url, const std::string &label); + bool isBlackListUrl(const std::string &url) const; protected: // text segmentation and flow @@ -359,6 +364,9 @@ class LLTextBase LLView* mDocumentView; class LLScrollContainer* mScroller; + // list of URLs to suppress from automatic hyperlinking + std::vector<std::string> mBlackListUrls; + // transient state bool mReflowNeeded; // need to reflow text because of change to text contents or display region bool mScrollNeeded; // need to change scroll region because of change to cursor position diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index ef69f39ad2d..04f4ddf9960 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -187,6 +187,12 @@ BOOL LLFloaterAbout::postBuild() support << '\n' << getString("AboutTraffic", args); } + // don't make the sim hostname be a hyperlink + if (info.has("HOSTNAME")) + { + support_widget->addBlackListUrl(info["HOSTNAME"].asString()); + } + support_widget->appendText(support.str(), FALSE, LLStyle::Params() -- GitLab From 71d47402514b26ea9adf768582ad7d8cfe1a1c74 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Tue, 26 Jan 2010 16:15:26 +0200 Subject: [PATCH 115/521] Fixed EXT-4646 ([BSI] Movement controls close after hitting stand) - reason: fix for bug EXT-2504 (black bars present at top and bottom when in mouselook) (changing parent visibility of panel with "Stand/Stop flying" buttons) - fix: updated condition to process visibility of the parent of the panel with "Stand/Stop flying" buttons: only if panel is not attached to Move Floater NOTE: The same problem was for EXT-3632 (Move floater closes after user click on Stop Flying btn) Reverted that fix for Stop flying button to be consistent with "Stand". --HG-- branch : product-engine --- indra/newview/llmoveview.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 0ab3b07aea5..de8ea98e057 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -589,8 +589,12 @@ void LLPanelStandStopFlying::setVisible(BOOL visible) updatePosition(); } - //change visibility of parent layout_panel to animate in/out - if (getParent()) getParent()->setVisible(visible); + // do not change parent visibility in case panel is attached into Move Floater: EXT-3632, EXT-4646 + if (!mAttached) + { + //change visibility of parent layout_panel to animate in/out. EXT-2504 + if (getParent()) getParent()->setVisible(visible); + } } BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask) @@ -614,7 +618,7 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) LLPanel* parent = dynamic_cast<LLPanel*>(getParent()); if (!parent) { - llwarns << "Stand/stop flying panel parent is unset" << llendl; + llwarns << "Stand/stop flying panel parent is unset, already attached?: " << mAttached << ", new parent: " << (move_view == NULL ? "NULL" : "Move Floater") << llendl; return; } @@ -684,6 +688,7 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick() gAgent.setFlying(FALSE); setFocus(FALSE); // EXT-482 + setVisible(FALSE); } /** -- GitLab From 020f855f643a198737e7bd4066bdc1757d864a54 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Tue, 26 Jan 2010 14:23:28 +0000 Subject: [PATCH 116/521] EXT-4063: Enable tear-offs for pre-login menus. --- indra/newview/skins/default/xui/en/menu_login.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index a0dec346a4f..5f385227581 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -10,6 +10,7 @@ <menu create_jump_keys="true" label="Me" + tear_off="true" name="File"> <menu_item_call label="Preferences" @@ -39,6 +40,7 @@ <menu create_jump_keys="true" label="Help" + tear_off="true" name="Help"> <menu_item_call label="[SECOND_LIFE] Help" -- GitLab From 05b91f636bee32f6343765dfbae96b103e14f5a2 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Tue, 26 Jan 2010 16:30:51 +0200 Subject: [PATCH 117/521] Fixed low bug EXT-4354(Dragging landmarks into landmark folders doesn't scroll window) --HG-- branch : product-engine --- indra/llui/llaccordionctrl.cpp | 75 +++++++++++++++++++++++++++++++ indra/llui/llaccordionctrl.h | 9 ++++ indra/llui/llaccordionctrltab.cpp | 34 ++++++++++++++ indra/llui/llaccordionctrltab.h | 1 + 4 files changed, 119 insertions(+) diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index b5e870228ad..d0c73fbfbce 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -63,6 +63,8 @@ static LLDefaultChildRegistry::Register<LLAccordionCtrl> t2("accordion"); LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) , mFitParent(params.fit_parent) + , mAutoScrolling( false ) + , mAutoScrollRate( 0.f ) { mSingleExpansion = params.single_expansion; if(mFitParent && !mSingleExpansion) @@ -72,6 +74,8 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) } LLAccordionCtrl::LLAccordionCtrl() : LLPanel() + , mAutoScrolling( false ) + , mAutoScrollRate( 0.f ) { mSingleExpansion = false; mFitParent = false; @@ -81,6 +85,19 @@ LLAccordionCtrl::LLAccordionCtrl() : LLPanel() //--------------------------------------------------------------------------------- void LLAccordionCtrl::draw() { + if (mAutoScrolling) + { + // add acceleration to autoscroll + mAutoScrollRate = llmin(mAutoScrollRate + (LLFrameTimer::getFrameDeltaTimeF32() * AUTO_SCROLL_RATE_ACCEL), MAX_AUTO_SCROLL_RATE); + } + else + { + // reset to minimum for next time + mAutoScrollRate = MIN_AUTO_SCROLL_RATE; + } + // clear this flag to be set on next call to autoScroll + mAutoScrolling = false; + LLRect local_rect(0, getRect().getHeight(), getRect().getWidth(), 0); LLLocalClipRect clip(local_rect); @@ -420,6 +437,64 @@ BOOL LLAccordionCtrl::handleKeyHere (KEY key, MASK mask) return LLPanel::handleKeyHere(key,mask); } +BOOL LLAccordionCtrl::handleDragAndDrop (S32 x, S32 y, MASK mask, + BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + // Scroll folder view if needed. Never accepts a drag or drop. + *accept = ACCEPT_NO; + BOOL handled = autoScroll(x, y); + + if( !handled ) + { + handled = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, + cargo_data, accept, tooltip_msg) != NULL; + } + return TRUE; +} + +BOOL LLAccordionCtrl::autoScroll (S32 x, S32 y) +{ + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + bool scrolling = false; + if( mScrollbar->getVisible() ) + { + LLRect rect_local( 0, getRect().getHeight(), getRect().getWidth() - scrollbar_size, 0 ); + LLRect screen_local_extents; + + // clip rect against root view + screenRectToLocal(getRootView()->getLocalRect(), &screen_local_extents); + rect_local.intersectWith(screen_local_extents); + + // autoscroll region should take up no more than one third of visible scroller area + S32 auto_scroll_region_height = llmin(rect_local.getHeight() / 3, 10); + S32 auto_scroll_speed = llround(mAutoScrollRate * LLFrameTimer::getFrameDeltaTimeF32()); + + LLRect bottom_scroll_rect = screen_local_extents; + bottom_scroll_rect.mTop = rect_local.mBottom + auto_scroll_region_height; + if( bottom_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() < mScrollbar->getDocPosMax()) ) + { + mScrollbar->setDocPos( mScrollbar->getDocPos() + auto_scroll_speed ); + mAutoScrolling = true; + scrolling = true; + } + + LLRect top_scroll_rect = screen_local_extents; + top_scroll_rect.mBottom = rect_local.mTop - auto_scroll_region_height; + if( top_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() > 0) ) + { + mScrollbar->setDocPos( mScrollbar->getDocPos() - auto_scroll_speed ); + mAutoScrolling = true; + scrolling = true; + } + } + return scrolling; +} + void LLAccordionCtrl::updateLayout (S32 width, S32 height) { S32 panel_top = height - BORDER_MARGIN ; diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h index 4cb0f382813..d57a42df324 100644 --- a/indra/llui/llaccordionctrl.h +++ b/indra/llui/llaccordionctrl.h @@ -81,6 +81,11 @@ class LLAccordionCtrl: public LLPanel virtual BOOL handleRightMouseDown ( S32 x, S32 y, MASK mask); virtual BOOL handleScrollWheel ( S32 x, S32 y, S32 clicks ); virtual BOOL handleKeyHere (KEY key, MASK mask); + virtual BOOL handleDragAndDrop (S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); // // Call reshape after changing splitter's size @@ -112,11 +117,15 @@ class LLAccordionCtrl: public LLPanel void showScrollbar (S32 width, S32 height); void hideScrollbar (S32 width, S32 height); + BOOL autoScroll (S32 x, S32 y); + private: LLRect mInnerRect; LLScrollbar* mScrollbar; bool mSingleExpansion; bool mFitParent; + bool mAutoScrolling; + F32 mAutoScrollRate; }; diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 4bfe44135aa..daa9e08f140 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -45,6 +45,7 @@ static const std::string DD_HEADER_NAME = "dd_header"; static const S32 HEADER_HEIGHT = 20; static const S32 HEADER_IMAGE_LEFT_OFFSET = 5; static const S32 HEADER_TEXT_LEFT_OFFSET = 30; +static const F32 AUTO_OPEN_TIME = 1.f; static LLDefaultChildRegistry::Register<LLAccordionCtrlTab> t1("accordion_tab"); @@ -73,6 +74,11 @@ class LLAccordionCtrlTab::LLAccordionCtrlTabHeader : public LLUICtrl virtual void onMouseEnter(S32 x, S32 y, MASK mask); virtual void onMouseLeave(S32 x, S32 y, MASK mask); virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); private: LLTextBox* mHeaderTextbox; @@ -92,6 +98,8 @@ class LLAccordionCtrlTab::LLAccordionCtrlTabHeader : public LLUICtrl LLUIColor mHeaderBGColor; bool mNeedsHighlight; + + LLFrameTimer mAutoOpenTimer; }; LLAccordionCtrlTab::LLAccordionCtrlTabHeader::Params::Params() @@ -209,6 +217,7 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::onMouseLeave(S32 x, S32 y, MA { LLUICtrl::onMouseLeave(x, y, mask); mNeedsHighlight = false; + mAutoOpenTimer.stop(); } BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, BOOL called_from_parent) { @@ -218,8 +227,33 @@ BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, } return LLUICtrl::handleKey(key, mask, called_from_parent); } +BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + LLAccordionCtrlTab* parent = dynamic_cast<LLAccordionCtrlTab*>(getParent()); + if ( parent && !parent->getDisplayChildren() && parent->getCollapsible() && parent->canOpenClose() ) + { + if (mAutoOpenTimer.getStarted()) + { + if (mAutoOpenTimer.getElapsedTimeF32() > AUTO_OPEN_TIME) + { + parent->changeOpenClose(false); + mAutoOpenTimer.stop(); + return TRUE; + } + } + else + mAutoOpenTimer.start(); + } + return LLUICtrl::handleDragAndDrop(x, y, mask, drop, cargo_type, + cargo_data, accept, tooltip_msg); +} LLAccordionCtrlTab::Params::Params() : title("title") ,display_children("expanded", true) diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index b200d43438b..2e0260ab16d 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -115,6 +115,7 @@ class LLAccordionCtrlTab : public LLUICtrl void changeOpenClose(bool is_open); void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;}; + bool canOpenClose() const { return mCanOpenClose; }; virtual BOOL postBuild(); -- GitLab From 3a0226824b7d03f7ad745af995066cfa99833cbc Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Tue, 26 Jan 2010 17:04:13 +0200 Subject: [PATCH 118/521] Fixed normal bug EXT-4718 ( Stop Flying button is displayed in the mouse look mode) - restore base processing of visibility of Panel with "stand/stop flying" buttons broken in EXT-2504 --HG-- branch : product-engine --- indra/newview/llmoveview.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index de8ea98e057..5981baab60e 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -595,6 +595,10 @@ void LLPanelStandStopFlying::setVisible(BOOL visible) //change visibility of parent layout_panel to animate in/out. EXT-2504 if (getParent()) getParent()->setVisible(visible); } + + // also change own visibility to avoid displaying the panel in mouselook (broken when EXT-2504 was implemented). + // See EXT-4718. + LLPanel::setVisible(visible); } BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask) -- GitLab From e8b4a14b1ddf8225909a577a1060c9fbd9456dbe Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Tue, 26 Jan 2010 17:07:12 +0200 Subject: [PATCH 119/521] Fixed major bug EXT-4719 - Crash in LLTextBase after showing popup menu for link. --HG-- branch : product-engine --- indra/llui/lltextbase.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 47db990a372..f7da9f089a5 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -244,7 +244,8 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p) LLTextBase::~LLTextBase() { - delete mPopupMenu; + // Menu, like any other LLUICtrl, is deleted by its parent - gMenuHolder + clearSegments(); } -- GitLab From 4c82ec8088ec5972fdfdbcef8b6e985156d71de3 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Tue, 26 Jan 2010 17:22:18 +0200 Subject: [PATCH 120/521] =?UTF-8?q?implemented=20EXT-4588=20=E2=80=9CRedir?= =?UTF-8?q?ect=20messages=20that=20went=20to=20the=20Communicate=20floater?= =?UTF-8?q?=E2=80=9D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llcompilequeue.cpp | 14 ++++++-------- indra/newview/llviewermenu.cpp | 14 ++++++-------- indra/newview/llviewermessage.cpp | 31 +++++++++++++------------------ 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 47f1b7c9f54..5c05a541204 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -446,19 +446,17 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) { - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound"); + LLNotificationsUtil::add("SystemMessage", args); buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload"); + LLNotificationsUtil::add("SystemMessage", args); buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 54de693222a..96251f75714 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6389,10 +6389,9 @@ void handle_selected_texture_info(void*) msg.assign("Texture info for: "); msg.append(node->mName); - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = msg; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); U8 te_count = node->getObject()->getNumTEs(); // map from texture ID to list of faces using it @@ -6425,10 +6424,9 @@ void handle_selected_texture_info(void*) msg.append( llformat("%d ", (S32)(it->second[i]))); } - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = msg; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); } } } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 1d3ac3fb0fb..d6ce356c4b0 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1365,10 +1365,9 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const if (check_offer_throttle(mFromName, true)) { log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = log_message; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); } // we will want to open this item when it comes back. @@ -1410,11 +1409,10 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const // send the message msg->sendReliable(mHost); - //TODO* CHAT: how to show this? - //log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; - //LLSD args; - //args["MESSAGE"] = log_message; - //LLNotificationsUtil::add("SystemMessage", args); + log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); if (busy && (!mFromGroup && !mFromObject)) { @@ -1868,11 +1866,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // history. Pretend the chat is from a local agent, // so it will go into the history but not be shown on screen. - //TODO* CHAT: how to show this? - //and this is not system message... - //LLSD args; - //args["MESSAGE"] = buffer; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = buffer; + LLNotificationsUtil::add("SystemMessageTip", args); } } break; @@ -3103,10 +3099,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { // Chat the "back" SLURL. (DEV-4907) - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = message; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = "Teleport completed from " + gAgent.getTeleportSourceSLURL(); + LLNotificationsUtil::add("SystemMessageTip", args); // Set the new position avatarp->setPositionAgent(agent_pos); -- GitLab From 43bb3d00ecba66fe3dd9fa5a2d487ffc5633ed5e Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Tue, 26 Jan 2010 18:25:42 +0200 Subject: [PATCH 121/521] =?UTF-8?q?fixed=20EXT-4643=20=E2=80=9CIM=20toasts?= =?UTF-8?q?=20don't=20appear=20after=20few=20teleport=20offers=20were=20se?= =?UTF-8?q?nt=20to=20that=20avatar=E2=80=9D=20corrected=20checking=20opene?= =?UTF-8?q?d=20active=20IM=20session;=20corrected=20restoring=20active=20I?= =?UTF-8?q?M=20session=20after=20logging=20IM=20notification;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llimview.cpp | 3 ++- indra/newview/llnotificationhandlerutil.cpp | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 1b1e6501c0a..f90a51c3f37 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -95,7 +95,8 @@ void toast_callback(const LLSD& msg){ } // check whether incoming IM belongs to an active session or not - if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"]) + if (LLIMModel::getInstance()->getActiveSessionID().notNull() + && LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"]) { return; } diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index fba57736020..02f948eca9d 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -123,7 +123,14 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type, message); // restore active session id - LLIMModel::instance().setActiveSessionID(active_session_id); + if (active_session_id.isNull()) + { + LLIMModel::instance().resetActiveSessionID(); + } + else + { + LLIMModel::instance().setActiveSessionID(active_session_id); + } } } -- GitLab From 5344f82e282ed4ce1c016c1e164f674f64bb78be Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Tue, 26 Jan 2010 20:17:44 +0200 Subject: [PATCH 122/521] Fixed normal bug (EXT-4720) N/A is displayed in the Create Landmark panel while data is retrieved. --HG-- branch : product-engine --- indra/newview/llpanellandmarkinfo.cpp | 8 +-- indra/newview/llpanelplaceinfo.cpp | 18 ++++-- indra/newview/llpanelplaceprofile.cpp | 80 ++++++++++++++------------- 3 files changed, 57 insertions(+), 49 deletions(-) diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 9654e176598..c792fd4fe3a 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -98,10 +98,10 @@ void LLPanelLandmarkInfo::resetLocation() { LLPanelPlaceInfo::resetLocation(); - std::string not_available = getString("not_available"); - mCreator->setText(not_available); - mOwner->setText(not_available); - mCreated->setText(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mCreator->setText(loading); + mOwner->setText(loading); + mCreated->setText(loading); mLandmarkTitle->setText(LLStringUtil::null); mLandmarkTitleEditor->setText(LLStringUtil::null); mNotesEditor->setText(LLStringUtil::null); diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 0c10f11bfcb..5f75668722e 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -43,6 +43,8 @@ #include "lliconctrl.h" #include "lltextbox.h" +#include "lltrans.h" + #include "llagent.h" #include "llexpandabletextbox.h" #include "llpanelpick.h" @@ -99,12 +101,12 @@ void LLPanelPlaceInfo::resetLocation() mRequestedID.setNull(); mPosRegion.clearVec(); - std::string not_available = getString("not_available"); - mMaturityRatingIcon->setValue(not_available); - mMaturityRatingText->setValue(not_available); - mRegionName->setText(not_available); - mParcelName->setText(not_available); - mDescEditor->setText(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mMaturityRatingIcon->setValue(loading); + mMaturityRatingText->setValue(loading); + mRegionName->setText(loading); + mParcelName->setText(loading); + mDescEditor->setText(loading); mSnapshotCtrl->setImageAssetID(LLUUID::null); mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); @@ -206,6 +208,10 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data) { mDescEditor->setText(parcel_data.desc); } + else + { + mDescEditor->setText(getString("not_available")); + } S32 region_x; S32 region_y; diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index d892e2885b4..3c798639d4e 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -42,6 +42,8 @@ #include "lltextbox.h" #include "lltexteditor.h" +#include "lltrans.h" + #include "llaccordionctrl.h" #include "llaccordionctrltab.h" #include "llagent.h" @@ -163,45 +165,45 @@ void LLPanelPlaceProfile::resetLocation() mForSalePanel->setVisible(FALSE); mYouAreHerePanel->setVisible(FALSE); - std::string not_available = getString("not_available"); - mParcelOwner->setValue(not_available); - - mParcelRatingIcon->setValue(not_available); - mParcelRatingText->setText(not_available); - mVoiceIcon->setValue(not_available); - mVoiceText->setText(not_available); - mFlyIcon->setValue(not_available); - mFlyText->setText(not_available); - mPushIcon->setValue(not_available); - mPushText->setText(not_available); - mBuildIcon->setValue(not_available); - mBuildText->setText(not_available); - mScriptsIcon->setValue(not_available); - mScriptsText->setText(not_available); - mDamageIcon->setValue(not_available); - mDamageText->setText(not_available); - - mRegionNameText->setValue(not_available); - mRegionTypeText->setValue(not_available); - mRegionRatingIcon->setValue(not_available); - mRegionRatingText->setValue(not_available); - mRegionOwnerText->setValue(not_available); - mRegionGroupText->setValue(not_available); - - mEstateNameText->setValue(not_available); - mEstateRatingText->setValue(not_available); - mEstateOwnerText->setValue(not_available); - mCovenantText->setValue(not_available); - - mSalesPriceText->setValue(not_available); - mAreaText->setValue(not_available); - mTrafficText->setValue(not_available); - mPrimitivesText->setValue(not_available); - mParcelScriptsText->setValue(not_available); - mTerraformLimitsText->setValue(not_available); - mSubdivideText->setValue(not_available); - mResaleText->setValue(not_available); - mSaleToText->setValue(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mParcelOwner->setValue(loading); + + mParcelRatingIcon->setValue(loading); + mParcelRatingText->setText(loading); + mVoiceIcon->setValue(loading); + mVoiceText->setText(loading); + mFlyIcon->setValue(loading); + mFlyText->setText(loading); + mPushIcon->setValue(loading); + mPushText->setText(loading); + mBuildIcon->setValue(loading); + mBuildText->setText(loading); + mScriptsIcon->setValue(loading); + mScriptsText->setText(loading); + mDamageIcon->setValue(loading); + mDamageText->setText(loading); + + mRegionNameText->setValue(loading); + mRegionTypeText->setValue(loading); + mRegionRatingIcon->setValue(loading); + mRegionRatingText->setValue(loading); + mRegionOwnerText->setValue(loading); + mRegionGroupText->setValue(loading); + + mEstateNameText->setValue(loading); + mEstateRatingText->setValue(loading); + mEstateOwnerText->setValue(loading); + mCovenantText->setValue(loading); + + mSalesPriceText->setValue(loading); + mAreaText->setValue(loading); + mTrafficText->setValue(loading); + mPrimitivesText->setValue(loading); + mParcelScriptsText->setValue(loading); + mTerraformLimitsText->setValue(loading); + mSubdivideText->setValue(loading); + mResaleText->setValue(loading); + mSaleToText->setValue(loading); } // virtual -- GitLab From dfad0f4e67821670cfc806dd2f8fcdf9a0d96530 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Tue, 26 Jan 2010 20:17:45 +0200 Subject: [PATCH 123/521] Fixed critical bug EXT-4663 ([BSI] Inviting Residents to groups produces error 100% of time). Overriden LLScrollListItem::getUUID() in LLNameListCtrl so that you can get correct ID of a name list item. --HG-- branch : product-engine --- indra/llui/llscrolllistctrl.cpp | 8 ++++++-- indra/llui/llscrolllistctrl.h | 1 + indra/llui/llscrolllistitem.h | 2 +- indra/newview/llnamelistctrl.cpp | 21 ++++++++------------- indra/newview/llnamelistctrl.h | 21 ++++++++++++++++++++- indra/newview/llpanelgrouproles.cpp | 10 +++++----- 6 files changed, 41 insertions(+), 22 deletions(-) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 71bba575843..78386220d93 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -2760,9 +2760,13 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& element, EAddPosition LLScrollListItem* LLScrollListCtrl::addRow(const LLScrollListItem::Params& item_p, EAddPosition pos) { - if (!item_p.validateBlock()) return NULL; - LLScrollListItem *new_item = new LLScrollListItem(item_p); + return addRow(new_item, item_p, pos); +} + +LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& item_p, EAddPosition pos) +{ + if (!item_p.validateBlock() || !new_item) return NULL; new_item->setNumColumns(mColumns.size()); // Add any columns we don't already have diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 907dc90bead..d2d23793281 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -148,6 +148,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler, // "columns" => [ "column" => column name, "value" => value, "type" => type, "font" => font, "font-style" => style ], "id" => uuid // Creates missing columns automatically. virtual LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); + virtual LLScrollListItem* addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM); virtual LLScrollListItem* addRow(const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM); // Simple add element. Takes a single array of: // [ "value" => value, "font" => font, "font-style" => style ] diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index 15b86cc945d..25ce846d90f 100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h @@ -95,7 +95,7 @@ class LLScrollListItem void setUserdata( void* userdata ) { mUserdata = userdata; } void* getUserdata() const { return mUserdata; } - LLUUID getUUID() const { return mItemValue.asUUID(); } + virtual LLUUID getUUID() const { return mItemValue.asUUID(); } LLSD getValue() const { return mItemValue; } void setRect(LLRect rect) { mRectangle = rect; } diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 6375362ae28..9f04558d508 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -148,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask) && column_index == mNameColumnIndex) { // ...this is the column with the avatar name - LLUUID avatar_id = getItemId(hit_item); + LLUUID avatar_id = hit_item->getUUID(); if (avatar_id.notNull()) { // ...valid avatar id @@ -230,14 +230,15 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow( std::string& suffix) { LLUUID id = name_item.value().asUUID(); - LLScrollListItem* item = NULL; + LLNameListItem* item = NULL; // Store item type so that we can invoke the proper inspector. // *TODO Vadim: Is there a more proper way of storing additional item data? { - LLNameListCtrl::NameItem name_item_(name_item); - name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); - item = LLScrollListCtrl::addRow(name_item_, pos); + LLNameListCtrl::NameItem item_p(name_item); + item_p.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); + item = new LLNameListItem(item_p); + LLScrollListCtrl::addRow(item, item_p, pos); } if (!item) return NULL; @@ -298,7 +299,7 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id) for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++) { LLScrollListItem* item = *it; - if (getItemId(item) == agent_id) + if (item->getUUID() == agent_id) { idx = getItemIndex(item); break; @@ -335,7 +336,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first, for (iter = getItemList().begin(); iter != getItemList().end(); iter++) { LLScrollListItem* item = *iter; - if (getItemId(item) == id) + if (item->getUUID() == id) { LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0); cell = item->getColumn(mNameColumnIndex); @@ -375,9 +376,3 @@ void LLNameListCtrl::updateColumns() } } } - -// static -LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item) -{ - return item->getValue()["uuid"].asUUID(); -} diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 192a3a5afae..23b1cb68975 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -122,7 +122,6 @@ class LLNameListCtrl /*virtual*/ void updateColumns(); private: void showInspector(const LLUUID& avatar_id, bool is_group); - static LLUUID getItemId(LLScrollListItem* item); private: S32 mNameColumnIndex; @@ -130,4 +129,24 @@ class LLNameListCtrl BOOL mAllowCallingCardDrop; }; +/** + * LLNameListCtrl item + * + * We don't use LLScrollListItem to be able to override getUUID(), which is needed + * because the name list item value is not simply an UUID but a map (uuid, is_group). + */ +class LLNameListItem : public LLScrollListItem +{ +public: + LLUUID getUUID() const { return getValue()["uuid"].asUUID(); } + +protected: + friend class LLNameListCtrl; + + LLNameListItem( const LLScrollListItem::Params& p ) + : LLScrollListItem(p) + { + } +}; + #endif diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 45f0381d6fd..c6287472fed 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -867,7 +867,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect() for (itor = selection.begin(); itor != selection.end(); ++itor) { - LLUUID member_id = (*itor)->getValue()["uuid"]; + LLUUID member_id = (*itor)->getUUID(); selected_members.push_back( member_id ); // Get this member's power mask including any unsaved changes @@ -1093,7 +1093,7 @@ void LLPanelGroupMembersSubTab::handleEjectMembers() for (itor = selection.begin() ; itor != selection.end(); ++itor) { - LLUUID member_id = (*itor)->getValue()["uuid"]; + LLUUID member_id = (*itor)->getUUID(); selected_members.push_back( member_id ); } @@ -1151,7 +1151,7 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id, itor != selection.end(); ++itor) { - member_id = (*itor)->getValue()["uuid"]; + member_id = (*itor)->getUUID(); //see if we requested a change for this member before if ( mMemberRoleChangeData.find(member_id) == mMemberRoleChangeData.end() ) @@ -1242,7 +1242,7 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick() LLScrollListItem* selected = mMembersList->getFirstSelected(); if (selected) { - LLUUID member_id = selected->getValue()["uuid"]; + LLUUID member_id = selected->getUUID(); LLAvatarActions::showProfile( member_id ); } } @@ -1632,7 +1632,7 @@ void LLPanelGroupMembersSubTab::updateMembers() LLScrollListItem* member = mMembersList->addElement(row);//, ADD_SORTED); - LLUUID id = member->getValue()["uuid"]; + LLUUID id = member->getUUID(); mHasMatch = TRUE; } } -- GitLab From d72748a0af3e77de9a5dfedd2b8c9d87bfe7da24 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Tue, 26 Jan 2010 20:19:39 +0200 Subject: [PATCH 124/521] Removed an unused class. --HG-- branch : product-engine --- indra/newview/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5373556c20f..492e3b1c7f0 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -343,7 +343,6 @@ set(viewer_SOURCE_FILES llpanelprimmediacontrols.cpp llpanelprofile.cpp llpanelprofileview.cpp - llpanelshower.cpp llpanelteleporthistory.cpp llpanelvolume.cpp llpanelvolumepulldown.cpp @@ -846,7 +845,6 @@ set(viewer_HEADER_FILES llpanelprimmediacontrols.h llpanelprofile.h llpanelprofileview.h - llpanelshower.h llpanelteleporthistory.h llpanelvolume.h llpanelvolumepulldown.h -- GitLab From e33483a7eee40615677b9abf1691c44dd80a961e Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Tue, 26 Jan 2010 21:38:29 +0200 Subject: [PATCH 125/521] Fixed normal bug EXT-4672 (Relog displays Voice Controls floater with Leave Call button) --HG-- branch : product-engine --- indra/newview/llcallfloater.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index 1e713dade8b..f62fd44bc06 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -163,6 +163,8 @@ BOOL LLCallFloater::postBuild() //chrome="true" hides floater caption if (mDragHandle) mDragHandle->setTitleVisible(TRUE); + + updateSession(); return TRUE; } @@ -246,7 +248,7 @@ void LLCallFloater::updateSession() } } - const LLUUID& session_id = voice_channel->getSessionID(); + const LLUUID& session_id = voice_channel ? voice_channel->getSessionID() : LLUUID::null; lldebugs << "Set speaker manager for session: " << session_id << llendl; LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(session_id); -- GitLab From 88a6cbdaecc06c0ff174d29ca9ff600775edff49 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Tue, 26 Jan 2010 22:29:17 +0200 Subject: [PATCH 126/521] Workaround for EXT-4725(Viewer crashes if try to call from 'Nearby voice' floater). - Enabling/disabling 'Call'menu item is moved to createMenu(). Some way to properly enable/disable it in enableContextMenuItem() should be found. --HG-- branch : product-engine --- indra/newview/llparticipantlist.cpp | 6 ++++++ .../newview/skins/default/xui/en/menu_participant_list.xml | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index f83f3eba968..d54cbfe2031 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -433,6 +433,12 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu() LLContextMenu* main_menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>( "menu_participant_list.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance()); + // AD *TODO: This is workaround for EXT-4725- way to properly enable/disable "Call" menu item in + // enableContextMenuItem() should be found. + bool not_agent = mUUIDs.front() != gAgentID; + bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); + main_menu->setItemEnabled("Call", can_call); + // Don't show sort options for P2P chat bool is_sort_visible = (mParent.mAvatarList && mParent.mAvatarList->size() > 1); main_menu->setItemVisible("SortByName", is_sort_visible); diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 805ffbae668..04e02d0f6cc 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -57,9 +57,6 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> - <menu_item_call.on_enable - function="ParticipantList.EnableItem" - parameter="can_call" /> </menu_item_call> <menu_item_call enabled="true" -- GitLab From b77fe6dc724c162b3de194d1b3f362ac4c7f5021 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 12:35:22 -0800 Subject: [PATCH 127/521] DEV-45468 SNOW-108: Fast timers are broken / badly-scaled on linux more reliable fix based on feedback from Richard. dicked with the Darwin results too since those seemed wrong based on the same feedback (also covered in test plan). --- indra/llcommon/llfasttimer.h | 10 +++++----- indra/llcommon/llfasttimer_class.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 32f3561616c..48461df6ae3 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -113,7 +113,7 @@ inline U64 LLFastTimer::getCPUClockCount64() struct timespec tp; #ifdef CLOCK_MONOTONIC // MONOTONIC supported at build-time? - if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime, try REALTIME + if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime then ouch, try REALTIME #endif clock_gettime(CLOCK_REALTIME,&tp); @@ -122,7 +122,7 @@ inline U64 LLFastTimer::getCPUClockCount64() inline U32 LLFastTimer::getCPUClockCount32() { - return (U32)LLFastTimer::getCPUClockCount64(); + return (U32)(LLFastTimer::getCPUClockCount64() >> 8); } #endif // (LL_LINUX || LL_SOLARIS)) @@ -134,14 +134,14 @@ inline U32 LLFastTimer::getCPUClockCount32() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return (U32)x >> 8; + return (U32)(x >> 8); } inline U64 LLFastTimer::getCPUClockCount64() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return x >> 8; + return x; } #endif @@ -154,7 +154,7 @@ inline U64 LLFastTimer::getCPUClockCount64() inline U32 LLFastTimer::getCPUClockCount32() { - return (U32)get_clock_count(); + return (U32)(get_clock_count()>>8); } inline U64 LLFastTimer::getCPUClockCount64() diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index abcaee673eb..fae0a668732 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -226,12 +226,12 @@ void LLFastTimer::DeclareTimer::updateCachedPointers() //static #if LL_LINUX || LL_SOLARIS || ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)) ) -U64 LLFastTimer::countsPerSecond() +U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer { - return sClockResolution; + return sClockResolution >> 8; } #else // windows or x86-mac -U64 LLFastTimer::countsPerSecond() +U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer { static U64 sCPUClockFrequency = U64(CProcessor().GetCPUFrequency(50)); -- GitLab From 38f4c6981fc49a8c2b0c290a8baed9f317440069 Mon Sep 17 00:00:00 2001 From: "Mark Palange (Mani)" <palange@lindenlab.com> Date: Tue, 26 Jan 2010 13:13:38 -0800 Subject: [PATCH 128/521] Configured build for the windows lightweight(stub) installer. Added a dependency on the package target to get parabuild to build the indra/win_setup project. Reviewed by Palmer --- indra/newview/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5373556c20f..ecea72fa0de 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1580,7 +1580,10 @@ if (WINDOWS) DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) - add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) + add_custom_target(package ALL DEPENDS + ${CMAKE_CFG_INTDIR}/touched.bat + windows-setup-build-all + ) # temporarily disable packaging of event_host until hg subrepos get # sorted out on the parabuild cluster... #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2) -- GitLab From fee564c26e1018787cf70b95fc677c1da447118c Mon Sep 17 00:00:00 2001 From: "Mark Palange (Mani)" <palange@lindenlab.com> Date: Tue, 26 Jan 2010 13:15:52 -0800 Subject: [PATCH 129/521] Removed tabs. --- indra/newview/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 8f333e9fd87..7ddeb90d295 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1579,9 +1579,9 @@ if (WINDOWS) ) add_custom_target(package ALL DEPENDS - ${CMAKE_CFG_INTDIR}/touched.bat - windows-setup-build-all - ) + ${CMAKE_CFG_INTDIR}/touched.bat + windows-setup-build-all + ) # temporarily disable packaging of event_host until hg subrepos get # sorted out on the parabuild cluster... #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2) -- GitLab From 3f7ed7ef1de1012e3bea719e8042a256deb10ac3 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Tue, 26 Jan 2010 14:28:07 -0800 Subject: [PATCH 130/521] DEV-43688 cycle3 for DE --- .../default/xui/de/floater_about_land.xml | 144 ++++----- .../xui/de/floater_animation_preview.xml | 5 +- .../xui/de/floater_avatar_textures.xml | 62 ++-- .../default/xui/de/floater_buy_currency.xml | 2 +- .../default/xui/de/floater_customize.xml | 71 ++--- .../default/xui/de/floater_god_tools.xml | 9 +- .../default/xui/de/floater_im_container.xml | 2 +- .../default/xui/de/floater_incoming_call.xml | 6 + .../default/xui/de/floater_lsl_guide.xml | 2 +- .../default/xui/de/floater_media_browser.xml | 2 +- .../default/xui/de/floater_outfit_save_as.xml | 11 + .../default/xui/de/floater_outgoing_call.xml | 9 + .../xui/de/floater_preview_gesture.xml | 3 + .../xui/de/floater_preview_notecard.xml | 4 +- .../xui/de/floater_preview_texture.xml | 5 +- .../default/xui/de/floater_report_abuse.xml | 4 +- .../default/xui/de/floater_script_limits.xml | 2 + .../skins/default/xui/de/floater_search.xml | 7 + .../default/xui/de/floater_select_key.xml | 7 +- .../default/xui/de/floater_sell_land.xml | 2 +- .../skins/default/xui/de/floater_snapshot.xml | 18 +- .../skins/default/xui/de/floater_sys_well.xml | 9 +- .../skins/default/xui/de/floater_telehub.xml | 11 +- .../skins/default/xui/de/floater_tools.xml | 13 +- .../default/xui/de/floater_top_objects.xml | 67 ++-- .../default/xui/de/floater_voice_controls.xml | 30 +- .../xui/de/floater_whitelist_entry.xml | 2 +- .../default/xui/de/floater_window_size.xml | 17 ++ .../default/xui/de/floater_world_map.xml | 128 +++++--- .../skins/default/xui/de/inspect_avatar.xml | 10 +- .../skins/default/xui/de/inspect_group.xml | 1 + .../default/xui/de/menu_attachment_other.xml | 17 ++ .../default/xui/de/menu_attachment_self.xml | 12 + .../skins/default/xui/de/menu_avatar_icon.xml | 2 +- .../default/xui/de/menu_avatar_other.xml | 16 + .../skins/default/xui/de/menu_avatar_self.xml | 27 ++ .../skins/default/xui/de/menu_bottomtray.xml | 5 + .../default/xui/de/menu_im_well_button.xml | 4 + .../default/xui/de/menu_imchiclet_adhoc.xml | 4 + .../xui/de/menu_inspect_avatar_gear.xml | 1 + .../skins/default/xui/de/menu_inventory.xml | 10 +- .../default/xui/de/menu_inventory_add.xml | 2 +- .../xui/de/menu_inventory_gear_default.xml | 2 + .../skins/default/xui/de/menu_land.xml | 9 + .../skins/default/xui/de/menu_login.xml | 6 +- .../xui/de/menu_notification_well_button.xml | 4 + .../skins/default/xui/de/menu_object.xml | 25 ++ .../default/xui/de/menu_participant_list.xml | 19 +- .../default/xui/de/menu_people_groups.xml | 8 + .../default/xui/de/menu_people_nearby.xml | 1 + .../default/xui/de/menu_profile_overflow.xml | 4 + .../skins/default/xui/de/menu_viewer.xml | 46 ++- .../skins/default/xui/de/mime_types_linux.xml | 217 +++++++++++++ .../skins/default/xui/de/mime_types_mac.xml | 217 +++++++++++++ .../skins/default/xui/de/notifications.xml | 159 ++++------ .../xui/de/panel_active_object_row.xml | 9 + .../xui/de/panel_adhoc_control_panel.xml | 16 +- .../default/xui/de/panel_avatar_list_item.xml | 1 + .../xui/de/panel_block_list_sidetray.xml | 4 +- .../skins/default/xui/de/panel_bottomtray.xml | 12 +- .../default/xui/de/panel_edit_classified.xml | 4 +- .../default/xui/de/panel_edit_profile.xml | 5 +- .../skins/default/xui/de/panel_friends.xml | 46 ++- .../xui/de/panel_group_control_panel.xml | 20 +- .../default/xui/de/panel_group_general.xml | 8 +- .../xui/de/panel_group_info_sidetray.xml | 2 + .../default/xui/de/panel_group_invite.xml | 8 +- .../default/xui/de/panel_group_list_item.xml | 1 + .../default/xui/de/panel_group_notices.xml | 14 +- .../default/xui/de/panel_im_control_panel.xml | 32 +- .../default/xui/de/panel_landmark_info.xml | 1 + .../skins/default/xui/de/panel_login.xml | 68 +++-- .../default/xui/de/panel_main_inventory.xml | 8 +- .../xui/de/panel_media_settings_general.xml | 10 +- .../de/panel_media_settings_permissions.xml | 25 +- .../xui/de/panel_media_settings_security.xml | 6 +- .../skins/default/xui/de/panel_my_profile.xml | 80 +++-- .../default/xui/de/panel_navigation_bar.xml | 2 +- .../skins/default/xui/de/panel_notes.xml | 18 +- .../xui/de/panel_outfits_inventory.xml | 15 +- .../panel_outfits_inventory_gear_default.xml | 6 +- .../skins/default/xui/de/panel_people.xml | 1 + .../skins/default/xui/de/panel_picks.xml | 12 +- .../default/xui/de/panel_place_profile.xml | 1 + .../skins/default/xui/de/panel_places.xml | 7 +- .../xui/de/panel_preferences_alerts.xml | 2 +- .../default/xui/de/panel_preferences_chat.xml | 10 +- .../xui/de/panel_preferences_general.xml | 24 +- .../xui/de/panel_preferences_privacy.xml | 6 +- .../xui/de/panel_preferences_setup.xml | 8 +- .../xui/de/panel_preferences_sound.xml | 2 +- .../xui/de/panel_prim_media_controls.xml | 52 +++- .../skins/default/xui/de/panel_profile.xml | 77 +++-- .../default/xui/de/panel_region_estate.xml | 9 +- .../default/xui/de/panel_region_general.xml | 6 +- .../xui/de/panel_region_general_layout.xml | 43 +++ .../default/xui/de/panel_region_texture.xml | 3 +- .../xui/de/panel_script_limits_my_avatar.xml | 13 + .../de/panel_script_limits_region_memory.xml | 24 ++ .../skins/default/xui/de/panel_side_tray.xml | 11 +- .../skins/default/xui/de/panel_status_bar.xml | 3 +- .../default/xui/de/panel_teleport_history.xml | 4 +- .../xui/de/panel_teleport_history_item.xml | 1 + .../skins/default/xui/de/role_actions.xml | 244 ++++----------- .../default/xui/de/sidepanel_appearance.xml | 8 +- .../default/xui/de/sidepanel_inventory.xml | 2 +- .../default/xui/de/sidepanel_item_info.xml | 57 ++-- .../default/xui/de/sidepanel_task_info.xml | 76 ++--- .../newview/skins/default/xui/de/strings.xml | 286 ++++++++++++++++-- 109 files changed, 1904 insertions(+), 991 deletions(-) create mode 100644 indra/newview/skins/default/xui/de/floater_outfit_save_as.xml create mode 100644 indra/newview/skins/default/xui/de/floater_script_limits.xml create mode 100644 indra/newview/skins/default/xui/de/floater_window_size.xml create mode 100644 indra/newview/skins/default/xui/de/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/de/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/de/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/de/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/de/menu_im_well_button.xml create mode 100644 indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/de/menu_land.xml create mode 100644 indra/newview/skins/default/xui/de/menu_notification_well_button.xml create mode 100644 indra/newview/skins/default/xui/de/menu_object.xml create mode 100644 indra/newview/skins/default/xui/de/menu_people_groups.xml create mode 100644 indra/newview/skins/default/xui/de/mime_types_linux.xml create mode 100644 indra/newview/skins/default/xui/de/mime_types_mac.xml create mode 100644 indra/newview/skins/default/xui/de/panel_active_object_row.xml create mode 100644 indra/newview/skins/default/xui/de/panel_region_general_layout.xml create mode 100644 indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml create mode 100644 indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index af489d39d24..cd5abf86e05 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -13,7 +13,7 @@ Restzeit </floater.string> <tab_container name="landtab"> - <panel label="Allgemein" name="land_general_panel"> + <panel label="ALLGEMEIN" name="land_general_panel"> <panel.string name="new users only"> Nur neue Benutzer </panel.string> @@ -36,10 +36,10 @@ (In Gruppenbesitz) </panel.string> <panel.string name="profile_text"> - Profil... + Profil </panel.string> <panel.string name="info_text"> - Info... + Info </panel.string> <panel.string name="public_text"> (öffentlich) @@ -52,7 +52,6 @@ </panel.string> <panel.string name="no_selection_text"> Keine Parzelle ausgewählt. -Öffnen Sie „Welt“ > „Land-Info“ oder wählen Sie eine andere Parzelle aus, um Informationen darüber anzuzeigen. </panel.string> <text name="Name:"> Name: @@ -78,33 +77,35 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="Profil..." label_selected="Profil..." name="Profile..."/> <text name="Group:"> Gruppe: </text> - <button label="Einstellen..." label_selected="Einstellen..." name="Set..."/> + <text name="GroupText"> + Leyla Linden + </text> + <button label="Festlegen" label_selected="Einstellen..." name="Set..."/> <check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/> - <button label="Übertragen..." label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/> + <button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/> <check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/> <text name="For Sale:"> Zum Verkauf: </text> <text name="Not for sale."> - Nicht zu verkaufen. + Nicht zu verkaufen </text> <text name="For Sale: Price L$[PRICE]."> - Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²). + Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²) </text> <text name="SalePending"/> - <button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/> + <button bottom="-222" label="Land verkaufen" label_selected="Land verkaufen..." name="Sell Land..."/> <text name="For sale to"> Zum Verkauf an: [BUYER] </text> <text name="Sell with landowners objects in parcel." width="210"> - Objekte sind im Verkauf eingeschlossen. + Objekte sind im Verkauf eingeschlossen </text> <text name="Selling with no objects in parcel." width="237"> - Objekte sind im Verkauf nicht eingeschlossen. + Objekte sind im Verkauf nicht eingeschlossen </text> <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> <text name="Claimed:"> @@ -125,14 +126,15 @@ <text name="DwellText"> 0 </text> - <button label="Land kaufen..." label_selected="Land kaufen..." name="Buy Land..."/> - <button label="Für Gruppe kaufen..." label_selected="Für Gruppe kaufen..." name="Buy For Group..."/> - <button label="Pass kaufen..." label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/> - <button label="Land aufgeben..." label_selected="Land aufgeben..." name="Abandon Land..."/> - <button label="Land in Besitz nehmen..." label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/> - <button label="Linden-Verkauf..." label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> + <button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/> + <button label="Skriptinfo" name="Scripts..."/> + <button label="Für Gruppe kaufen" label_selected="Für Gruppe kaufen..." name="Buy For Group..."/> + <button label="Pass kaufen" label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/> + <button label="Land aufgeben" label_selected="Land aufgeben..." name="Abandon Land..."/> + <button label="Land in Besitz nehmen" label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/> + <button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> </panel> - <panel label="Vertrag" name="land_covenant_panel"> + <panel label="VERTRAG" name="land_covenant_panel"> <panel.string name="can_resell"> Gekauftes Land in dieser Region kann wiederverkauft werden. </panel.string> @@ -150,9 +152,6 @@ und geteilt werden. <text name="estate_section_lbl"> Grundstück: </text> - <text name="estate_name_lbl"> - Name: - </text> <text name="estate_name_text"> Mainland </text> @@ -171,11 +170,8 @@ und geteilt werden. <text name="region_section_lbl"> Region: </text> - <text name="region_name_lbl"> - Name: - </text> <text name="region_name_text"> - leyla + EricaVille </text> <text name="region_landtype_lbl"> Typ: @@ -203,7 +199,7 @@ und geteilt werden. werden. </text> </panel> - <panel label="Objekte" name="land_objects_panel"> + <panel label="OBJEKTE" name="land_objects_panel"> <panel.string name="objects_available_text"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </panel.string> @@ -214,19 +210,19 @@ werden. Objektbonusfaktor in Region: [BONUS] </text> <text name="Simulator primitive usage:"> - Primitive in Simulator: + Prim-Verwendung: </text> <text name="objects_available"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </text> <text name="Primitives parcel supports:" width="200"> - Von Parzelle unterstützte Primitiva: + Von Parzelle unterstützte Prims: </text> <text left="204" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> - Primitiva auf Parzelle: + Prims auf Parzelle: </text> <text left="204" name="total_objects_text" width="48"> [COUNT] @@ -238,7 +234,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Set to group:"> Der Gruppe zugeordnet: </text> @@ -246,7 +242,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Owned by others:" width="128"> Im Eigentum anderer: </text> @@ -254,7 +250,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Selected / sat upon:" width="140"> Ausgewählt/gesessen auf: </text> @@ -268,8 +264,8 @@ werden. <text name="Object Owners:"> Objekteigentümer: </text> - <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List"/> - <button label="Objekte zurückgeben..." label_selected="Objekte zurückgeben..." name="Return objects..."/> + <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List" tool_tip="Objektliste aktualisieren"/> + <button label="Objekte zurückgeben" label_selected="Objekte zurückgeben..." name="Return objects..."/> <name_list name="owner list"> <name_list.columns label="Typ" name="type"/> <name_list.columns label="Name" name="name"/> @@ -277,7 +273,7 @@ werden. <name_list.columns label="Aktuellster" name="mostrecent"/> </name_list> </panel> - <panel label="Optionen" name="land_options_panel"> + <panel label="OPTIONEN" name="land_options_panel"> <panel.string name="search_enabled_tooltip"> Diese Parzelle in Suchergebnissen anzeigen. </panel.string> @@ -289,13 +285,13 @@ Nur große Parzellen können in der Suche aufgeführt werden. Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können. </panel.string> <panel.string name="mature_check_mature"> - Mature-Inhalt + Moderater Inhalt </panel.string> <panel.string name="mature_check_adult"> Adult-Inhalt </panel.string> <panel.string name="mature_check_mature_tooltip"> - Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“. + Die Informationen oder Inhalte Ihrer Parzelle sind „Moderat“. </panel.string> <panel.string name="mature_check_adult_tooltip"> Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“. @@ -315,26 +311,26 @@ Nur große Parzellen können in der Suche aufgeführt werden. <check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/> <check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/> <text name="allow_label2"> - Objekte erstellen: + Bauen: </text> - <check_box label="Alle Einwohner" name="edit objects check"/> + <check_box label="Jeder" name="edit objects check"/> <check_box label="Gruppe" name="edit group objects check"/> <text name="allow_label3"> Objekteintritt: </text> - <check_box label="Alle Einwohner" name="all object entry check"/> + <check_box label="Jeder" name="all object entry check"/> <check_box label="Gruppe" name="group object entry check"/> <text name="allow_label4"> Skripts ausführen: </text> - <check_box label="Alle Einwohner" name="check other scripts"/> + <check_box label="Jeder" name="check other scripts"/> <check_box label="Gruppe" name="check group scripts"/> <text name="land_options_label"> Landoptionen: </text> <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/> <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/> - <check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> + <check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> <combo_box name="land category with adult"> <combo_box.item label="Alle Kategorien" name="item0"/> <combo_box.item label="Lindenort" name="item1"/> @@ -364,7 +360,7 @@ Nur große Parzellen können in der Suche aufgeführt werden. <combo_box.item label="Shopping" name="item11"/> <combo_box.item label="Sonstige" name="item12"/> </combo_box> - <check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/> + <check_box label="Moderater Inhalt" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> Foto: </text> @@ -383,33 +379,30 @@ Nur große Parzellen können in der Suche aufgeführt werden. <combo_box.item label="Überall" name="Anywhere"/> </combo_box> </panel> - <panel label="Medien" name="land_media_panel"> + <panel label="MEDIEN" name="land_media_panel"> <text name="with media:"> Typ: </text> <combo_box name="media type" tool_tip="Geben Sie einen URL für den Film, die Webseite oder ein anderes Medium ein"/> <text name="at URL:"> - Start URL: + Homepage: </text> - <button label="Einstellen..." label_selected="Einstellen..." name="set_media_url"/> + <button label="Festlegen" label_selected="Einstellen..." name="set_media_url"/> <text name="CurrentURL:"> - Aktuelle URL: + Aktuelle Seite: </text> - <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url"/> + <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url" tool_tip="URL aktualisieren"/> <check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/> <text name="Description:"> Inhalt: </text> <line_editor name="url_description" tool_tip="Text, der neben der Abspielen/Laden-Schaltfläche angezeigt wird"/> <text name="Media texture:"> - Textur -ersetzen: + Textur ersetzen: </text> <texture_picker label="" name="media texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <text name="replace_texture_help"> - Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken. - -Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. + Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken. Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </text> <check_box label="Automatisch skalieren" name="media_auto_scale" tool_tip="Aktivieren Sie diese Option, um den Inhalt für diese Parzelle automatisch zu skalieren. Dies ist eventuell langsamer und die Qualität ist schlechter, aber Sie müssen keine weitere Texturskalierung oder -anpassung vornehmen."/> <text name="media_size" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."> @@ -425,7 +418,7 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </text> <check_box label="Schleife" name="media_loop" tool_tip="Spielt das Medium in einer Schleife ab. Der Abspielvorgang wird immer wieder von vorne fortgesetzt."/> </panel> - <panel label="Audio" name="land_audio_panel"> + <panel label="SOUND" name="land_audio_panel"> <text name="MusicURL:"> Musik-URL: </text> @@ -440,19 +433,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. <check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/> <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/> </panel> - <panel label="Zugang" name="land_access_panel"> + <panel label="ZUGANG" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Durch Grundstück festgelegt) + </panel.string> <panel.string name="estate_override"> Eine oder mehrere dieser Optionen gelten auf Grundstücksebene </panel.string> <text name="Limit access to this parcel to:"> Zugang zu dieser Parzelle </text> - <check_box label="Freien Zugang erlauben" name="public_access"/> + <check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/> <text name="Only Allow"> - Zugang verweigern für: + Zugang auf Einwohner beschränken, die überprüft wurden von: </text> - <check_box label="Einwohner, die keine Zahlungsinformationen bei Linden Lab hinterlegt haben" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/> - <check_box label="Einwohner, die keine altersgeprüften Erwachsenen sind" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> + <check_box label="Zahlungsinformation gespeichert [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/> + <check_box label="Altersüberprüfung [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> <check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/> <check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/> <combo_box name="pass_combo"> @@ -461,18 +457,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </combo_box> <spinner label="Preis in L$:" name="PriceSpin"/> <spinner label="Online-Zeit:" name="HoursSpin"/> - <text label="Immer erlauben" name="AllowedText"> - Zulässige Einwohner - </text> - <name_list name="AccessList" tool_tip="([LISTED] angezeigt, max. [MAX])"/> - <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_allowed"/> - <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/> - <text label="Verbannen" name="BanCheck"> - Verbannte Einwohner - </text> - <name_list name="BannedList" tool_tip="([LISTED] angezeigt, max. [MAX])"/> - <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_banned"/> - <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <text label="Immer erlauben" name="AllowedText"> + Zulässige Einwohner + </text> + <name_list name="AccessList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/> + <button label="Hinzufügen" name="add_allowed"/> + <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/> + </panel> + <panel name="Banned_layout_panel"> + <text label="Verbannen" name="BanCheck"> + Verbannte Einwohner + </text> + <name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/> + <button label="Hinzufügen" name="add_banned"/> + <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml index 4b4067f1863..ce971d158dd 100644 --- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml @@ -171,7 +171,8 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. </combo_box> <spinner label="Eingang glätten (s)" label_width="105" name="ease_in_time" tool_tip="Einblendungsgeschwindigkeit von Animationen (in Sekunden)" width="175"/> <spinner bottom_delta="-20" label="Ausgang glätten (s)" label_width="105" left="10" name="ease_out_time" tool_tip="Ausblendegeschwindigkeit von Animationen (in Sekunden)" width="175"/> - <button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben"/> + <button bottom_delta="-32" label="" name="play_btn" tool_tip="Ihre Animation abspielen"/> + <button name="pause_btn" tool_tip="Ihre Animation pausieren"/> <button label="" name="stop_btn" tool_tip="Animation anhalten"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -179,6 +180,6 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. Wir empfehlen exportierte BVH-Dateien aus Poser 4. </text> - <button label="Abbrechen" name="cancel_btn"/> <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml index 6f5fe23d4c0..3be5194a8f4 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml @@ -10,33 +10,37 @@ Zusammengesetzte Texturen </text> <button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/> - <texture_picker label="Haare" name="hair-baked"/> - <texture_picker label="Haare" name="hair_grain"/> - <texture_picker label="Alpha: Haare" name="hair_alpha"/> - <texture_picker label="Kopf" name="head-baked"/> - <texture_picker label="Make-Uup" name="head_bodypaint"/> - <texture_picker label="Kopf: Alpha" name="head_alpha"/> - <texture_picker label="Kopftattoo" name="head_tattoo"/> - <texture_picker label="Augen" name="eyes-baked"/> - <texture_picker label="Auge" name="eyes_iris"/> - <texture_picker label="Alpha: Augen" name="eyes_alpha"/> - <texture_picker label="Oberkörper" name="upper-baked"/> - <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/> - <texture_picker label="Unterhemd" name="upper_undershirt"/> - <texture_picker label="Handschuhe" name="upper_gloves"/> - <texture_picker label="Hemd" name="upper_shirt"/> - <texture_picker label="Oberjacke" name="upper_jacket"/> - <texture_picker label="Alpha: Oben" name="upper_alpha"/> - <texture_picker label="Obere Tattoos" name="upper_tattoo"/> - <texture_picker label="Unterkörper" name="lower-baked"/> - <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/> - <texture_picker label="Unterhose" name="lower_underpants"/> - <texture_picker label="Socken" name="lower_socks"/> - <texture_picker label="Schuhe" name="lower_shoes"/> - <texture_picker label="Hose" name="lower_pants"/> - <texture_picker label="Jacke" name="lower_jacket"/> - <texture_picker label="Alpha: Unten" name="lower_alpha"/> - <texture_picker label="Untere Tattoos" name="lower_tattoo"/> - <texture_picker label="Rock" name="skirt-baked"/> - <texture_picker label="Rock" name="skirt"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="Haare" name="hair-baked"/> + <texture_picker label="Haare" name="hair_grain"/> + <texture_picker label="Alpha: Haare" name="hair_alpha"/> + <texture_picker label="Kopf" name="head-baked"/> + <texture_picker label="Make-Uup" name="head_bodypaint"/> + <texture_picker label="Kopf: Alpha" name="head_alpha"/> + <texture_picker label="Kopftattoo" name="head_tattoo"/> + <texture_picker label="Augen" name="eyes-baked"/> + <texture_picker label="Auge" name="eyes_iris"/> + <texture_picker label="Alpha: Augen" name="eyes_alpha"/> + <texture_picker label="Oberkörper" name="upper-baked"/> + <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/> + <texture_picker label="Unterhemd" name="upper_undershirt"/> + <texture_picker label="Handschuhe" name="upper_gloves"/> + <texture_picker label="Hemd" name="upper_shirt"/> + <texture_picker label="Oberjacke" name="upper_jacket"/> + <texture_picker label="Alpha: Oben" name="upper_alpha"/> + <texture_picker label="Obere Tattoos" name="upper_tattoo"/> + <texture_picker label="Unterkörper" name="lower-baked"/> + <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/> + <texture_picker label="Unterhose" name="lower_underpants"/> + <texture_picker label="Socken" name="lower_socks"/> + <texture_picker label="Schuhe" name="lower_shoes"/> + <texture_picker label="Hose" name="lower_pants"/> + <texture_picker label="Jacke" name="lower_jacket"/> + <texture_picker label="Alpha: Unten" name="lower_alpha"/> + <texture_picker label="Untere Tattoos" name="lower_tattoo"/> + <texture_picker label="Rock" name="skirt-baked"/> + <texture_picker label="Rock" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 287b16273a0..aa6201ec26f 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -46,7 +46,7 @@ [AMT] L$ </text> <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE payment method] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE exchange rate] + [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE Umtauschrate] </text> <text name="exchange_rate_note"> Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen. diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml index 34aa17bbe02..a2bf45852a9 100644 --- a/indra/newview/skins/default/xui/de/floater_customize.xml +++ b/indra/newview/skins/default/xui/de/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="AUSSEHEN"> <tab_container name="customize tab container"> - <placeholder label="Körperteile" name="body_parts_placeholder"/> + <text label="Körperteile" name="body_parts_placeholder"> + Körperteile + </text> <panel label="Form" name="Shape"> <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> <button label="Körper" label_selected="Körper" name="Body"/> @@ -14,8 +16,8 @@ <button label="Oberkörper" label_selected="Oberkörper" name="Torso"/> <button label="Beine" label_selected="Beine" name="Legs"/> <radio_group name="sex radio"> - <radio_item label="Weiblich" name="radio"/> - <radio_item label="Männlich" name="radio2"/> + <radio_item label="Weiblich" name="radio" value="0"/> + <radio_item label="Männlich" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,9 +35,7 @@ In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Körperform aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Körperform erstellen -und diese anziehen. + Ziehen Sie eine neue Form aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -68,9 +68,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Haut aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Haut erstellen -und diese anziehen. + Ziehen Sie eine neue Skin (Haut) aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -107,9 +105,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Haare aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Haare erstellen -und diese anziehen. + Ziehen Sie Haar aus dem Inventar auf Ihren Avatar, um dieses anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -140,9 +136,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Augen aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Augen erstellen -und diese anziehen. + Ziehen Sie neue Augen aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -156,7 +150,9 @@ und diese anziehen. <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> - <placeholder label="Kleidung" name="clothes_placeholder"/> + <text label="Kleidung" name="clothes_placeholder"> + Kleidung + </text> <panel label="Hemd" name="Shirt"> <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> @@ -181,9 +177,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie ein Hemd aus dem Inventar auf Ihren Avatar, -um es zu tragen. Sie können auch ein neues Hemd erstellen -und dieses anziehen. + Ziehen Sie ein neues Hemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -216,9 +210,7 @@ und dieses anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Hose aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Hose erstellen -und diese anziehen. + Ziehen Sie eine neue Hose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -244,9 +236,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Schuhe aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Schuhe erstellen -und diese anziehen. + Ziehen Sie neue Schuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -279,9 +269,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Socken aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Socken erstellen -und diese anziehen. + Ziehen Sie neue Strümpfe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -314,9 +302,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Jacke aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Jacke erstellen -und diese anziehen. + Ziehen Sie eine neue Jacke aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -350,9 +336,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Handschuhe aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Handschuhe erstellen -und diese anziehen. + Ziehen Sie neue Handschuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -385,9 +369,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie ein Unterhemd aus dem Inventar auf Ihren Avatar, -um es zu tragen. Sie können auch ein neues Unterhemd erstellen -und dieses anziehen. + Ziehen Sie ein neues Unterhemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -420,9 +402,7 @@ und dieses anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Unterhose aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Unterhose erstellen -und diese anziehen. + Ziehen Sie eine neue Unterhose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -455,9 +435,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie einen Rock aus dem Inventar auf Ihren Avatar, -um ihn zu tragen. Sie können auch einen neuen Rock erstellen -und diesen anziehen. + Ziehen Sie einen neuen Rock aus dem Inventar auf Ihren Avatar, um diesen anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -490,8 +468,7 @@ und diesen anziehen. Befindet sich in [PATH] </text> <text name="not worn instructions"> - Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. -Sie können aber auch eine neue erstellen und diese anlegen. + Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -527,8 +504,7 @@ Sie können aber auch eine neue erstellen und diese anlegen. Befindet sich in [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. -Sie können aber auch eine neue erstellen und diese anlegen. + Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -546,6 +522,7 @@ Sie können aber auch eine neue erstellen und diese anlegen. <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> </tab_container> + <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info"/> <button label="Outfit erstellen" label_selected="Outfit erstellen" name="make_outfit_btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml index e790420efb6..716165bb6b8 100644 --- a/indra/newview/skins/default/xui/de/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml @@ -11,8 +11,7 @@ </text> <check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/> <check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ > „Terrain“."/> - <check_box height="32" label="Zuhause auf Teleport -zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren, ihr Zuhause auf Zielposition setzen."/> + <check_box height="32" label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/> <check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/> <check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/> <check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/> @@ -59,10 +58,8 @@ zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren <text name="region name"> Welsh </text> - <check_box label="Skripts -deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/> - <check_box label="Kollisionen -deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/> + <check_box label="Skripts deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/> + <check_box label="Kollisionen deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/> <check_box label="Physik deaktivieren" name="disable physics" tool_tip="Die Physik in dieser Region komplett abschalten"/> <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/> <button label="Ziel festlegen" label_selected="Ziel festlegen" name="Set Target" tool_tip="Den Ziel-Avatar für das Löschen von Objekten auswählen."/> diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml index 62578c00d5a..95eda97938c 100644 --- a/indra/newview/skins/default/xui/de/floater_im_container.xml +++ b/indra/newview/skins/default/xui/de/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="Sofortnachrichten"/> +<multi_floater name="floater_im_box" title="GESPRÄCHE"/> diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml index e40d57976f9..740085599fd 100644 --- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="incoming call" title="ANRUF VON UNBEKANNT"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Voice-Chat in der Nähe </floater.string> @@ -12,6 +15,9 @@ <floater.string name="VoiceInviteAdHoc"> ist einem Voice-Konferenz-Chat beigetreten. </floater.string> + <floater.string name="VoiceInviteGroup"> + ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. + </floater.string> <text name="question"> Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten? </text> diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml index 5e90076487b..1d6f690d3c1 100644 --- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL-WIKI"> +<floater name="script ed float" title="LSL-REFERENZ"> <check_box label="Cursor folgen" name="lock_check"/> <combo_box label="Sperren" name="history_combo"/> <button label="Zurück" name="back_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml index 62a047b8fe7..18adb5ee7f3 100644 --- a/indra/newview/skins/default/xui/de/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml @@ -19,7 +19,7 @@ <button label="vorwärts" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="Aktuelle URL an Parzelle senden" name="assign"/> + <button label="Aktuelle Seite an Parzelle senden" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="In meinem Browser öffnen" name="open_browser"/> diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml new file mode 100644 index 00000000000..42cb91ccbb8 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container"> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <text name="Save item as:"> + Outfit speichern als: + </text> + <line_editor name="name ed"> + [BESCHR] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml index 65f2fe10e24..99ef0e900e2 100644 --- a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="outgoing call" title="ANRUF"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Voice-Chat in der Nähe </floater.string> @@ -21,6 +24,12 @@ <text name="noanswer"> Der Anruf wurde nicht entgegengenommen. Bitte versuchen Sie es später erneut. </text> + <text name="nearby"> + Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. + </text> + <text name="nearby_P2P"> + [VOICE_CHANNEL_NAME] hat den Anruf beendet. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. + </text> <text name="leaving"> [CURRENT_CHAT] wird verlassen. </text> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 16e2fc18cb6..51c41a32090 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -24,6 +24,9 @@ <floater.string name="Title"> Gesten: [NAME] </floater.string> + <text name="name_text"> + Name: + </text> <text name="desc_label"> Beschreibung: </text> diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml index a02a58ee0e2..62f9e1e9e5f 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="HINWEIS:"> +<floater name="preview notecard" title="NOTIZKARTE:"> <floater.string name="no_object"> - Es wurde kein Objekt gefunden, das diese Notiz enthält. + Es wurde kein Objekt gefunden, das diese Notizkarte enthält. </floater.string> <floater.string name="not_allowed"> Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte. diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml index 95d1db1877f..ac6a61cde6b 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml @@ -9,8 +9,6 @@ <text name="desc txt"> Beschreibung: </text> - <button label="OK" name="Keep"/> - <button label="Abbrechen" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> @@ -43,4 +41,7 @@ 2:1 </combo_item> </combo_box> + <button label="OK" name="Keep"/> + <button label="Abbrechen" name="Discard"/> + <button label="Speichern unter" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml index 3e4cf86a752..3edf5959a22 100644 --- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml @@ -41,7 +41,7 @@ <combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft"> <combo_box.item label="Kategorie auswählen" name="Select_category"/> <combo_box.item label="Alter> Age-Play" name="Age__Age_play"/> - <combo_box.item label="Alter> Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Alter > Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> <combo_box.item label="Alter > Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> <combo_box.item label="Angriff> Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/> <combo_box.item label="Angriff> Sichere Region" name="Assault__Safe_area"/> @@ -68,7 +68,7 @@ <combo_box.item label="Unanständigkeit > Anstößige Inhalte oder Handlungen in der Öffentlichkeit" name="Indecency__Broadly_offensive_content_or_conduct"/> <combo_box.item label="Unanständigkeit > Anstößiger Avatarname" name="Indecency__Inappropriate_avatar_name"/> <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region" name="Indecency__Mature_content_in_PG_region"/> - <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in moderater Region" name="Indecency__Inappropriate_content_in_Mature_region"/> <combo_box.item label="Urheberrechtsverletzung > Entfernen von Inhalten" name="Intellectual_property_infringement_Content_Removal"/> <combo_box.item label="Urheberrechtsverletzung > CopyBot oder Berechtigungs-Exploit" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> <combo_box.item label="Intoleranz" name="Intolerance"/> diff --git a/indra/newview/skins/default/xui/de/floater_script_limits.xml b/indra/newview/skins/default/xui/de/floater_script_limits.xml new file mode 100644 index 00000000000..94a24a97ae0 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="SKRIPT-INFORMATION"/> diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml index 3401db1a393..d44ad44aea6 100644 --- a/indra/newview/skins/default/xui/de/floater_search.xml +++ b/indra/newview/skins/default/xui/de/floater_search.xml @@ -6,4 +6,11 @@ <floater.string name="done_text"> Fertig </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Suche wiederholen, um aktuellen Gott-Level zu berücksichtigen + </text> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml index 6094d113595..8ab9db520a9 100644 --- a/indra/newview/skins/default/xui/de/floater_select_key.xml +++ b/indra/newview/skins/default/xui/de/floater_select_key.xml @@ -1,8 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container"> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <text name="Save item as:"> - Zur Auswahl gewünschte -Taste drücken. + Eine Taste drücken, um die Auslösetaste zum Sprechen festzulegen. </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml index c9e21a6c4f3..2bc7356e65c 100644 --- a/indra/newview/skins/default/xui/de/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml @@ -39,7 +39,7 @@ Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person beschränkt ist. </text> <combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140"> - <combo_box.item label="-- Wählen --" name="--selectone--"/> + <combo_box.item label="-- Auswählen --" name="--selectone--"/> <combo_box.item label="Jeder" name="Anyone"/> <combo_box.item label="Bestimmte Person:" name="Specificuser:"/> </combo_box> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 8aa1ef54978..80573d69ada 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -4,12 +4,12 @@ Zweck des Fotos </text> <radio_group label="Fototyp" name="snapshot_type_radio"> - <radio_item label="Per E-Mail senden" name="postcard"/> - <radio_item label="Im Inventar speichern ([AMOUNT] L$)" name="texture"/> - <radio_item label="Auf Festplatte speichern" name="local"/> + <radio_item label="Email-Adresse" name="postcard"/> + <radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/> + <radio_item label="Auf meinem Computer speichern" name="local"/> </radio_group> <text name="file_size_label"> - Dateigröße: [SIZE] KB + [SIZE] KB </text> <button label="Foto aktualisieren" name="new_snapshot_btn"/> <button label="Senden" name="send_btn"/> @@ -19,8 +19,8 @@ <flyout_button_item label="Speichern unter..." name="saveas_item"/> </flyout_button> <button label="Abbrechen" name="discard_btn"/> - <button label="Mehr >>" name="more_btn" tool_tip="Erweiterte Optionen"/> - <button label="<< Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/> + <button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/> + <button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/> <text name="type_label2"> Größe </text> @@ -68,10 +68,10 @@ <combo_box.item label="Tiefe" name="Depth"/> <combo_box.item label="Objektmasken" name="ObjectMattes"/> </combo_box> - <check_box label="Interface auf Foto anzeigen" name="ui_check"/> - <check_box label="HUD-Objekte auf Foto anzeigen" name="hud_check"/> + <check_box label="Schnittstelle" name="ui_check"/> + <check_box label="HUDs" name="hud_check"/> <check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/> - <check_box label="Frame einfrieren (Vollbildvorschau)" name="freeze_frame_check"/> + <check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/> <check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/> <string name="unknown"> unbekannt diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml index bcf0cbd4192..0aa0014baaf 100644 --- a/indra/newview/skins/default/xui/de/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml @@ -1,2 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN"/> +<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN"> + <string name="title_im_well_window"> + IM-SITZUNGEN + </string> + <string name="title_notification_well_window"> + BENACHRICHTIGUNGEN + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml index f348371e4d6..923b4c0079f 100644 --- a/indra/newview/skins/default/xui/de/floater_telehub.xml +++ b/indra/newview/skins/default/xui/de/floater_telehub.xml @@ -21,12 +21,9 @@ <button label="Spawn hinzufügen" name="add_spawn_point_btn"/> <button label="Spawn entfernen" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - Wählen Sie ein Objekt und klicken zur -Positionsangabe auf „Hinzufügen“. Anschließend -können sie das Objekt verschieben oder löschen. -Positionsangaben sind relativ zum -Telehub-Mittelpunkt. -Wählen Sie ein Objekt aus, um seine Position in -der Welt anzuzeigen. + Wählen Sie ein Objekt und klicken zur Positionsangabe auf Spawn hinzufügen. +Anschließend können Sie das Objekt verschieben oder löschen. +Positionsangaben sind relativ zum Telehub-Mittelpunkt. +Wählen Sie ein Objekt aus der Liste aus, um dieses inworld zu markieren. </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 48887191e03..b2f8cbed45f 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -454,12 +454,12 @@ <spinner label="Vertikal (V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - Medien-URL + Medien </text> <button name="add_media" tool_tip="Medien hinzufügen"/> <button name="delete_media" tool_tip="Diese Medien-Textur löschen"/> <button name="edit_media" tool_tip="Diese Medien bearbeiten"/> - <button label="Ausrichten" label_selected="Medien angleichen" name="button align"/> + <button label="Ausrichten" label_selected="Medien angleichen" name="button align" tool_tip="Medientexturen angleichen (müssen zunächst geladen werden)"/> </panel> </panel> <panel label="Inhalt" name="Contents"> @@ -478,14 +478,7 @@ Gebiet: [AREA] m². </text> <button label="Über Land" label_selected="Über Land" name="button about land"/> - <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen - -Grün = Ihr Land -Blau = Das Land Ihrer Gruppe -Rot = Im Eigentum anderer -Geld = Zum Verkauf -Lila = Zur Auktion -Grau = Öffentlich"/> + <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen Grün = Ihr Land Blau = Das Land Ihrer Gruppe Rot = Im Eigentum anderer Geld = Zum Verkauf Lila = Zur Auktion Grau = Öffentlich"/> <text name="label_parcel_modify"> Parzelle ändern </text> diff --git a/indra/newview/skins/default/xui/de/floater_top_objects.xml b/indra/newview/skins/default/xui/de/floater_top_objects.xml index 579e5cbe7e4..dad550227e0 100644 --- a/indra/newview/skins/default/xui/de/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/de/floater_top_objects.xml @@ -1,15 +1,40 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="WIRD GELDADEN..."> +<floater name="top_objects" title="Top-Objekte"> + <floater.string name="top_scripts_title"> + Top-Skripts + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT] Skripts benötigen insgesamt [TIME] ms + </floater.string> + <floater.string name="scripts_score_label"> + Zeit + </floater.string> + <floater.string name="scripts_mono_time_label"> + Mono-Uhrzeit: + </floater.string> + <floater.string name="top_colliders_title"> + Top-Kollisionsobjekte + </floater.string> + <floater.string name="top_colliders_text"> + Top [COUNT] Objekte mit vielen potenziellen Kollisionen + </floater.string> + <floater.string name="colliders_score_label"> + Wertung + </floater.string> + <floater.string name="none_descriptor"> + Nicht gefunden. + </floater.string> <text name="title_text"> Wird geladen... </text> <scroll_list name="objects_list"> - <column label="Wertung" name="score" width="65"/> - <column label="Name" name="name" width="135"/> - <column label="Eigentümer" name="owner"/> - <column label="Position" name="location" width="125"/> - <column label="Uhrzeit" name="time"/> - <column label="Mono-Uhrzeit:" name="mono_time"/> + <scroll_list.columns label="Wertung" name="score" width="65"/> + <scroll_list.columns label="Name" name="name" width="135"/> + <scroll_list.columns label="Eigentümer" name="owner"/> + <scroll_list.columns label="Position" name="location" width="125"/> + <scroll_list.columns label="Uhrzeit" name="time"/> + <scroll_list.columns label="Mono-Uhrzeit:" name="mono_time"/> + <scroll_list.columns label="URLs" name="URLs"/> </scroll_list> <text name="id_text"> Objekt-ID: @@ -22,37 +47,13 @@ <line_editor bg_readonly_color="clear" bottom_delta="3" enabled="false" follows="left|bottom|right" font="SansSerifSmall" height="20" left="80" name="object_name_editor" text_readonly_color="white" width="244"/> <button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_object_btn" right="-10" width="110"/> <text name="owner_name_text"> - Eigentümername: + Eigentümer: </text> <line_editor bg_readonly_color="clear" bottom_delta="3" enabled="true" follows="left|bottom|right" font="SansSerifSmall" height="20" left="106" name="owner_name_editor" text_readonly_color="white" width="218"/> <button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_owner_btn" right="-10" width="110"/> + <button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/> <button bottom="35" follows="bottom|left" height="20" label="Auswahl zurückgeben" left="10" name="return_selected_btn" width="134"/> <button bottom="35" follows="bottom|left" height="20" label="Alle zurückgeben" left="150" name="return_all_btn" width="134"/> <button bottom="10" follows="bottom|left" height="20" label="Auswahl deaktivieren" left="10" name="disable_selected_btn" width="134"/> <button bottom="10" follows="bottom|left" height="20" label="Alle deaktivieren" left="150" name="disable_all_btn" width="134"/> - <button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/> - <string name="top_scripts_title"> - Top-Skripts - </string> - <string name="top_scripts_text"> - [COUNT] Skripts benötigen insgesamt [TIME] ms - </string> - <string name="scripts_score_label"> - Zeit - </string> - <string name="scripts_mono_time_label"> - Mono-Uhrzeit: - </string> - <string name="top_colliders_title"> - Top-Kollisionsobjekte - </string> - <string name="top_colliders_text"> - Top [COUNT] Objekte mit vielen potenziellen Kollisionen - </string> - <string name="colliders_score_label"> - Wertung - </string> - <string name="none_descriptor"> - Nicht gefunden. - </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml index 39675beb456..f978042cc2d 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -1,13 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_voice_controls" title="Voice-Steuerung"> - <panel name="control_panel"> - <panel name="my_panel"> - <text name="user_text" value="Mein Avatar:"/> - </panel> - <layout_stack> - <layout_panel> - <slider_bar name="volume_slider_bar" tool_tip="Master-Lautstärke"/> - </layout_panel> - </layout_stack> - </panel> + <string name="title_nearby"> + VOICE IN DER NÄHE + </string> + <string name="title_group"> + Gruppengespräch mit [GROUP] + </string> + <string name="title_adhoc"> + Konferenzgespräch + </string> + <string name="title_peer_2_peer"> + Gespräch mit [NAME] + </string> + <string name="no_one_near"> + Es ist niemand in der Nähe, der Voice aktiviert hat. + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Anruf beenden" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml index a0bfc57e425..35a5ec35f71 100644 --- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="whitelist_entry"> +<floater name="whitelist_entry" title="WHITELISTEN-EINTRAG"> <text name="media_label"> Eine URL oder URL </text> diff --git a/indra/newview/skins/default/xui/de/floater_window_size.xml b/indra/newview/skins/default/xui/de/floater_window_size.xml new file mode 100644 index 00000000000..a2a53e0567a --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="FENSTERGRÖSSE"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + Fenstergröße einstellen: + </text> + <combo_box name="window_size_combo" tool_tip="Breite x Höhe"> + <combo_box.item label="1000 x 700 (Standard)" name="item0"/> + <combo_box.item label="1024 x 768" name="item1"/> + <combo_box.item label="1280 x 720 (720p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> + </combo_box> + <button label="Festlegen" name="set_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index dd13623f918..89af5d4a30c 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -1,53 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="KARTE"> - <text name="you_label"> - Sie - </text> - <text name="home_label"> - Zuhause - </text> - <text name="auction_label"> - Auktion - </text> - <text font="SansSerifSmall" name="land_for_sale_label"> - Land zum Verkauf - </text> - <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> - <check_box label="Einwohner" name="people_chk"/> - <check_box label="Infohub" name="infohub_chk"/> - <check_box label="Telehub" name="telehub_chk"/> - <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> - <text name="events_label"> - Events: - </text> - <check_box label="PG" name="event_chk"/> - <check_box initial_value="true" label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll"> - <combo_box.item label="Online-Freunde" name="item1"/> - </combo_box> - <combo_box label="Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll"> - <combo_box.item label="Landmarken" name="item1"/> - </combo_box> - <line_editor label="Nach Regionsname suchen" name="location" tool_tip="Geben Sie den Namen einer Region ein"/> - <button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/> - <text name="search_label"> - Suchergebnisse: - </text> - <scroll_list name="search_results"> - <scroll_list.columns label="" name="icon"/> - <scroll_list.columns label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - Standort: - </text> - <spinner name="spin x" tool_tip="X-Koordinate der Position auf der Karte"/> - <spinner name="spin y" tool_tip="Y-Koordinate der Position auf der Karte"/> - <spinner name="spin z" tool_tip="Z-Koordinate der Position auf der Karte"/> - <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/> - <button label="Gesuchte Position" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/> - <button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Verfolgung abschalten"/> - <button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position Ihres Avatars zentrieren"/> - <button font="SansSerifSmall" label="SLurl in die Zwischenablage kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/> - <slider label="Zoom" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + Legende + </text> + </panel> + <panel> + <button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position meines Avatars zentrieren"/> + <text name="me_label"> + Ich + </text> + <check_box label="Einwohner" name="people_chk"/> + <text name="person_label"> + Person + </text> + <check_box label="Infohub" name="infohub_chk"/> + <text name="infohub_label"> + Infohub + </text> + <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> + <text name="land_sale_label"> + Land-Verkauf + </text> + <text name="by_owner_label"> + durch Besitzer + </text> + <text name="auction_label"> + Land-Auktion + </text> + <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="An meinen Heimatort teleportieren"/> + <text name="Home_label"> + Startseite + </text> + <text name="events_label"> + Events: + </text> + <check_box label="PG" name="event_chk"/> + <text name="pg_label"> + Allgemein + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Moderat + </text> + <check_box label="Adult" name="event_adult_chk"/> + <text name="adult_label"> + Adult + </text> + </panel> + <panel> + <text name="find_on_map_label"> + Auf Karte anzeigen + </text> + </panel> + <panel> + <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freunde auf Karte anzeigen"> + <combo_box.item label="Meine Freunde: Online" name="item1"/> + </combo_box> + <combo_box label="Meine Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll"> + <combo_box.item label="Meine Landmarken" name="item1"/> + </combo_box> + <search_editor label="Regionen nach Name" name="location" tool_tip="Geben Sie den Namen einer Region ein"/> + <button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/> + <button font="SansSerifSmall" label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/> + <button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/> + </panel> + <panel> + <text name="zoom_label"> + Zoom + </text> + </panel> + <panel> + <slider label="Zoom" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml index 91b76503766..489e2578678 100644 --- a/indra/newview/skins/default/xui/de/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml @@ -10,19 +10,17 @@ <string name="Details"> [SL_PROFILE] </string> - <string name="Partner"> - Partner: [PARTNER] - </string> <text name="user_name" value="Grumpity ProductEngine"/> <text name="user_subtitle" value="11 Monate und 3 Tage alt"/> <text name="user_details"> Dies ist meine Beschreibung und ich finde sie wirklich gut! </text> - <text name="user_partner"> - Erica Linden - </text> <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/> <button label="Freund hinzufügen" name="add_friend_btn"/> <button label="IM" name="im_btn"/> <button label="Mehr" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Voice deaktivieren" name="disable_voice"/> + <button label="Voice aktivieren" name="enable_voice"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml index fa9764e4207..81d946be9d2 100644 --- a/indra/newview/skins/default/xui/de/inspect_group.xml +++ b/indra/newview/skins/default/xui/de/inspect_group.xml @@ -31,4 +31,5 @@ Hoch solln sie leben! Elche forever! Und auch Mungos! </text> <button label="Zusammen" name="join_btn"/> <button label="Verlassen" name="leave_btn"/> + <button label="Profil anzeigen" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml new file mode 100644 index 00000000000..33cff066a28 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil anzeigen" name="Profile..."/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="In Gruppe einladen" name="Invite..."/> + <menu_item_call label="Ignorieren" name="Avatar Mute"/> + <menu_item_call label="Melden" name="abuse"/> + <menu_item_call label="Einfrieren" name="Freeze..."/> + <menu_item_call label="Hinauswerfen" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="Zahlen" name="Pay..."/> + <menu_item_call label="Objektprofil" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml new file mode 100644 index 00000000000..bc33b9b93df --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Berühren" name="Attachment Object Touch"/> + <menu_item_call label="Bearbeiten" name="Edit..."/> + <menu_item_call label="Abnehmen" name="Detach"/> + <menu_item_call label="Fallen lassen" name="Drop"/> + <menu_item_call label="Aufstehen" name="Stand Up"/> + <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Meine Freunde" name="Friends..."/> + <menu_item_call label="Meine Gruppen" name="Groups..."/> + <menu_item_call label="Mein Profil" name="Profile..."/> +</context_menu> 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 b1e119c66a9..c036cf5515e 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="Profil anzeigen..." name="Show Profile"/> + <menu_item_call label="Profil anzeigen" name="Show Profile"/> <menu_item_call label="IM senden..." name="Send IM"/> <menu_item_call label="Freund hinzufügen..." name="Add Friend"/> <menu_item_call label="Freund entfernen..." name="Remove Friend"/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml new file mode 100644 index 00000000000..85db6481193 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil anzeigen" name="Profile..."/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="In Gruppe einladen" name="Invite..."/> + <menu_item_call label="Ignorieren" name="Avatar Mute"/> + <menu_item_call label="Melden" name="abuse"/> + <menu_item_call label="Einfrieren" name="Freeze..."/> + <menu_item_call label="Hinauswerfen" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="Zahlen" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml new file mode 100644 index 00000000000..5f9856a9cbe --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="Aufstehen" name="Stand Up"/> + <context_menu label="Ausziehen >" name="Take Off >"> + <context_menu label="Kleidung >" name="Clothes >"> + <menu_item_call label="Hemd" name="Shirt"/> + <menu_item_call label="Hose" name="Pants"/> + <menu_item_call label="Rock" name="Skirt"/> + <menu_item_call label="Schuhe" name="Shoes"/> + <menu_item_call label="Strümpfe" name="Socks"/> + <menu_item_call label="Jacke" name="Jacket"/> + <menu_item_call label="Handschuhe" name="Gloves"/> + <menu_item_call label="Unterhemd" name="Self Undershirt"/> + <menu_item_call label="Unterhose" name="Self Underpants"/> + <menu_item_call label="Tätowierung" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alle Kleider" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Abnehmen >" name="Object Detach"/> + <menu_item_call label="Alles abnehmen" name="Detach All"/> + </context_menu> + <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Meine Freunde" name="Friends..."/> + <menu_item_call label="Meine Gruppen" name="Groups..."/> + <menu_item_call label="Mein Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml index 246275bee1e..3f12906adcc 100644 --- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml @@ -4,4 +4,9 @@ <menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/> <menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/> <menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/> + <menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/> + <menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/> + <menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/> + <menu_item_call label="Löschen" name="NearbyChatBar_Delete"/> + <menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_im_well_button.xml b/indra/newview/skins/default/xui/de/menu_im_well_button.xml new file mode 100644 index 00000000000..f464b71f4a7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="Alle schließen" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..11f93f47b47 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Sitzung beenden" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml index 128bcdb86a9..9b6a6b2c4a1 100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@ <menu_item_call label="Teleportieren" name="teleport"/> <menu_item_call label="In Gruppe einladen" name="invite_to_group"/> <menu_item_call label="Ignorieren" name="block"/> + <menu_item_call label="Freischalten" name="unblock"/> <menu_item_call label="Melden" name="report"/> <menu_item_call label="Einfrieren" name="freeze"/> <menu_item_call label="Hinauswerfen" name="eject"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index fcdfc8b9e00..77c012d0456 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -10,7 +10,7 @@ <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> @@ -46,6 +46,9 @@ <menu_item_call label="Teleportieren" name="Landmark Open"/> <menu_item_call label="Öffnen" name="Animation Open"/> <menu_item_call label="Öffnen" name="Sound Open"/> + <menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/> + <menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/> + <menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/> <menu_item_call label="Objekt löschen" name="Purge Item"/> <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/> <menu_item_call label="Original suchen" name="Find Original"/> @@ -56,10 +59,9 @@ <menu_item_call label="Kopieren" name="Copy"/> <menu_item_call label="Einfügen" name="Paste"/> <menu_item_call label="Als Link einfügen" name="Paste As Link"/> + <menu_item_call label="Link entfernen" name="Remove Link"/> <menu_item_call label="Löschen" name="Delete"/> - <menu_item_call label="Von Outfit entfernen" name="Remove From Outfit"/> - <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/> - <menu_item_call label="Outfit ersetzen" name="Replace Outfit"/> + <menu_item_call label="Systemordner löschen" name="Delete System Folder"/> <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/> <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/> <menu_item_call label="Landmarken-Info" name="About Landmark"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml index f6b7e513255..448b1d80bf7 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml @@ -8,7 +8,7 @@ </menu> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml index 69f9b86d751..472d7bc4fda 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml @@ -9,4 +9,6 @@ <menu_item_call label="Papierkorb ausleeren" name="empty_trash"/> <menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/> <menu_item_call label="Textur speichern als" name="Save Texture As"/> + <menu_item_call label="Original suchen" name="Find Original"/> + <menu_item_call label="Alle Links suchen" name="Find All Links"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml new file mode 100644 index 00000000000..9b1e6727b7b --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="Land-Info" name="Place Information..."/> + <menu_item_call label="Hier sitzen" name="Sit Here"/> + <menu_item_call label="Dieses Land kaufen" name="Land Buy"/> + <menu_item_call label="Pass kaufen" name="Land Buy Pass"/> + <menu_item_call label="Bauen" name="Create"/> + <menu_item_call label="Terrain bearbeiten" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 26c2a4c2f46..fffa056cac2 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -23,10 +23,8 @@ <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/> <menu_item_call label="XUI-Editor" name="UI Preview Tool"/> - <menu_item_call label="Seitenleiste anzeigen" name="Show Side Tray"/> - <menu_item_call label="Widget testen" name="Widget Test"/> - <menu_item_call label="Inspektor-Test" name="Inspectors Test"/> - <menu_item_check label="Reg In Client Test (Neustart)" name="Reg In Client Test (restart)"/> + <menu label="UI-Tests" name="UI Tests"/> + <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> <menu_item_call label="Web-Browser-Test" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml new file mode 100644 index 00000000000..0f2784f1607 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="Alle schließen" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml new file mode 100644 index 00000000000..6f8d85ecb83 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Berühren" name="Object Touch"/> + <menu_item_call label="Bearbeiten" name="Edit..."/> + <menu_item_call label="Bauen" name="Build"/> + <menu_item_call label="Öffnen" name="Open"/> + <menu_item_call label="Hier sitzen" name="Object Sit"/> + <menu_item_call label="Objektprofil" name="Object Inspect"/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <context_menu label="Anziehen >" name="Put On"> + <menu_item_call label="Anziehen" name="Wear"/> + <context_menu label="Anhängen >" name="Object Attach"/> + <context_menu label="HUD anhängen >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Entfernen >" name="Remove"> + <menu_item_call label="Nehmen" name="Pie Object Take"/> + <menu_item_call label="Missbrauch melden" name="Report Abuse..."/> + <menu_item_call label="Ignorieren" name="Object Mute"/> + <menu_item_call label="Zurückgeben" name="Return..."/> + <menu_item_call label="Löschen" name="Delete"/> + </context_menu> + <menu_item_call label="Kopie nehmen" name="Take Copy"/> + <menu_item_call label="Zahlen" name="Pay..."/> + <menu_item_call label="Kaufen" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml index 042123cde4d..15c957cee3c 100644 --- a/indra/newview/skins/default/xui/de/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Participant List Context Menu"> - <menu_item_check label="Text stummschalten" name="MuteText"/> - <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> + <menu_item_check label="Nach Name sortieren" name="SortByName"/> + <menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/> + <menu_item_call label="Profil anzeigen" name="View Profile"/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="Teilen" name="Share"/> + <menu_item_call label="Zahlen" name="Pay"/> + <menu_item_check label="Voice ignorieren" name="Block/Unblock"/> + <menu_item_check label="Text ignorieren" name="MuteText"/> + <context_menu label="Moderator-Optionen >" name="Moderator Options"> + <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> + <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Alle anderen stummschalten" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Stummschaltung für alle anderen aufheben" name="ModerateVoiceUnMuteOthers"/> + </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml new file mode 100644 index 00000000000..87f43d27e6a --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Ansichts-Info" name="View Info"/> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="Aktivieren" name="Activate"/> + <menu_item_call label="Verlassen" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml index ef58b4136e6..9fa5db5fa38 100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml @@ -7,4 +7,5 @@ <menu_item_call label="Teilen" name="Share"/> <menu_item_call label="Zahlen" name="Pay"/> <menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/> + <menu_item_call label="Teleport anbieten" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml index 89b56d15715..f5cedf54640 100644 --- a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml @@ -2,4 +2,8 @@ <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="Zahlen" name="pay"/> <menu_item_call label="Teilen" name="share"/> + <menu_item_call label="Hinauswerfen" name="kick"/> + <menu_item_call label="Einfrieren" name="freeze"/> + <menu_item_call label="Auftauen" name="unfreeze"/> + <menu_item_call label="CSR" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index ee2f1ee7c9a..e972e5d1f53 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -9,7 +9,7 @@ <menu_item_call label="Mein Profil" name="Profile"/> <menu_item_call label="Mein Aussehen" name="Appearance"/> <menu_item_check label="Mein Inventar" name="Inventory"/> - <menu_item_call label="Inventar in Seitenleiste anzeigen" name="ShowSidetrayInventory"/> + <menu_item_call label="Inventar auf Seitenleiste anzeigen" name="ShowSidetrayInventory"/> <menu_item_call label="Meine Gesten" name="Gestures"/> <menu label="Mein Status" name="Status"> <menu_item_call label="Abwesend" name="Set Away"/> @@ -25,36 +25,30 @@ <menu_item_check label="Lokaler Chat" name="Nearby Chat"/> <menu_item_call label="Leute in dern Nähe" name="Active Speakers"/> <menu_item_check label="Medien in der Nähe" name="Nearby Media"/> - <menu_item_check label="(Legacy) Kommunikation" name="Instant Message"/> - <menu_item_call label="(Temp) Mediensteuerung" name="Preferences"/> </menu> <menu label="Welt" name="World"> - <menu_item_check label="Bewegen" name="Movement Controls"/> - <menu_item_check label="Ansicht" name="Camera Controls"/> - <menu_item_call label="Über Land" name="About Land"/> - <menu_item_call label="Region/Grundstück" name="Region/Estate"/> - <menu_item_call label="Land kaufen" name="Buy Land"/> - <menu_item_call label="Mein Land" name="My Land"/> - <menu label="Anzeigen" name="Land"> - <menu_item_check label="Bannlinien" name="Ban Lines"/> - <menu_item_check label="Strahlen" name="beacons"/> - <menu_item_check label="Grundstücksgrenzen" name="Property Lines"/> - <menu_item_check label="Landeigentümer" name="Land Owners"/> - </menu> - <menu label="Landmarken" name="Landmarks"> - <menu_item_call label="Landmarke hier setzen" name="Create Landmark Here"/> - <menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/> - </menu> - <menu_item_call label="Startseite" name="Teleport Home"/> <menu_item_check label="Minikarte" name="Mini-Map"/> <menu_item_check label="Weltkarte" name="World Map"/> <menu_item_call label="Foto" name="Take Snapshot"/> + <menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/> + <menu label="Ortsprofil" name="Land"> + <menu_item_call label="Land-Info" name="About Land"/> + <menu_item_call label="Region/Grundstück" name="Region/Estate"/> + </menu> + <menu_item_call label="Dieses Land kaufen" name="Buy Land"/> + <menu_item_call label="Mein Land" name="My Land"/> + <menu label="Anzeigen" name="LandShow"> + <menu_item_check label="Bewegungssteuerung" name="Movement Controls"/> + <menu_item_check label="Ansichtsteuerung" name="Camera Controls"/> + </menu> + <menu_item_call label="Teleport nach Hause" name="Teleport Home"/> + <menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/> <menu label="Sonne" name="Environment Settings"> <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="Grundstückszeit verwenden" name="Revert to Region Default"/> + <menu_item_call label="Grundstückszeit" name="Revert to Region Default"/> <menu_item_call label="Umwelt-Editor" name="Environment Editor"/> </menu> </menu> @@ -125,21 +119,20 @@ </menu> <menu label="Hilfe" name="Help"> <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> - <menu_item_call label="Tutorial" name="Tutorial"/> <menu_item_call label="Missbrauch melden" name="Report Abuse"/> + <menu_item_call label="Fehler melden" name="Report Bug"/> <menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/> </menu> <menu label="Erweitert" name="Advanced"> - <menu_item_check label="Nach 30 Min auf Abwesend stellen" name="Go Away/AFK When Idle"/> <menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/> <menu_item_call label="Textur neu laden" name="Rebake Texture"/> <menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/> + <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> <menu_item_check label="Auswahldistanz einschränken" name="Limit Select Distance"/> <menu_item_check label="Kamerabeschränkungen deaktivieren" name="Disable Camera Distance"/> <menu_item_check label="Foto (hohe Auflösung)" name="HighResSnapshot"/> <menu_item_check label="Fotos auf Festplatte leise speichern" name="QuietSnapshotsToDisk"/> <menu_item_check label="Fotos auf Festplatte komprimieren" name="CompressSnapshotsToDisk"/> - <menu_item_call label="Textur speichern als" name="Save Texture As"/> <menu label="Performance Tools" name="Performance Tools"> <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> <menu_item_check label="Statistikleiste" name="Statistics Bar"/> @@ -333,7 +326,6 @@ <menu_item_call label="Als XML speichern" name="Save to XML"/> <menu_item_check label="XUI-Namen anzeigen" name="Show XUI Names"/> <menu_item_call label="Test-IMs senden" name="Send Test IMs"/> - <menu_item_call label="Inspektoren testen" name="Test Inspectors"/> </menu> <menu label="Avatar" name="Character"> <menu label="Geladene Textur nehmen" name="Grab Baked Texture"> @@ -366,6 +358,7 @@ <menu_item_call label="Fehler in Avatar-Texturen beseitigen" name="Debug Avatar Textures"/> <menu_item_call label="Lokale Texturen ausgeben" name="Dump Local Textures"/> </menu> + <menu_item_check label="HTTP-Texturen" name="HTTP Textures"/> <menu_item_call label="Bilder komprimieren" name="Compress Images"/> <menu_item_check label="Ausgabe Fehlerbeseitigung ausgeben" name="Output Debug Minidump"/> <menu_item_check label="Bei nächster Ausführung Fenster öffnen" name="Console Window"/> @@ -383,7 +376,7 @@ <menu_item_call label="Asset-ID zulassen" name="Get Assets IDs"/> </menu> <menu label="Parzelle" name="Parcel"> - <menu_item_call label="Besitzer zu mir" name="Owner To Me"/> + <menu_item_call label="Besitzer zu mir zwingen" name="Owner To Me"/> <menu_item_call label="Auf Linden-Inhalt festlegen" name="Set to Linden Content"/> <menu_item_call label="Öffentiches Land in Besitz nehmen" name="Claim Public Land"/> </menu> @@ -410,7 +403,6 @@ <menu_item_call label="Tätowierung" name="Tattoo"/> <menu_item_call label="Alle Kleider" name="All Clothes"/> </menu> - <menu_item_check label="Werkzeugleiste anzeigen" name="Show Toolbar"/> <menu label="Hilfe" name="Help"> <menu_item_call label="Offizielles Linden-Blog" name="Official Linden Blog"/> <menu_item_call label="Scripting-Portal" name="Scripting Portal"/> diff --git a/indra/newview/skins/default/xui/de/mime_types_linux.xml b/indra/newview/skins/default/xui/de/mime_types_linux.xml new file mode 100644 index 00000000000..e4b5c532921 --- /dev/null +++ b/indra/newview/skins/default/xui/de/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Webinhalt + </label> + <tooltip name="web_tooltip"> + Dieser Ort verfügt über Webinhalte + </tooltip> + <playtip name="web_playtip"> + Webinhalt anzeigen + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + Ein Video wurde gefunden. + </tooltip> + <playtip name="movie_playtip"> + Video wiedergeben + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Bild + </label> + <tooltip name="image_tooltip"> + Dieser Ort verfügt über Bildinhalte + </tooltip> + <playtip name="image_playtip"> + Das Bild an diesem Ort anzeigen + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Dieser Ort verfügt über Audioinhalte + </tooltip> + <playtip name="audio_playtip"> + Das Audio dieses Standorts abspielen + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Echtzeit-Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Keine - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Keine - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Bild + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF-Dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript-Dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Webseite (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Bild (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Bild (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Bild (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Bild (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Bild (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Bild (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Webseite + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Text + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/de/mime_types_mac.xml b/indra/newview/skins/default/xui/de/mime_types_mac.xml new file mode 100644 index 00000000000..e4b5c532921 --- /dev/null +++ b/indra/newview/skins/default/xui/de/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Webinhalt + </label> + <tooltip name="web_tooltip"> + Dieser Ort verfügt über Webinhalte + </tooltip> + <playtip name="web_playtip"> + Webinhalt anzeigen + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + Ein Video wurde gefunden. + </tooltip> + <playtip name="movie_playtip"> + Video wiedergeben + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Bild + </label> + <tooltip name="image_tooltip"> + Dieser Ort verfügt über Bildinhalte + </tooltip> + <playtip name="image_playtip"> + Das Bild an diesem Ort anzeigen + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Dieser Ort verfügt über Audioinhalte + </tooltip> + <playtip name="audio_playtip"> + Das Audio dieses Standorts abspielen + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Echtzeit-Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Keine - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Keine - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Bild + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF-Dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript-Dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Webseite (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Bild (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Bild (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Bild (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Bild (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Bild (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Bild (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Webseite + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Text + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 7f5a561f744..65d3b74bd56 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -32,10 +32,10 @@ <button name="No" text="$notext"/> </form> </template> - <notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert"> - Ihre Version von [APP_NAME] kann den gerade empfangenen Warnhinweis nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben. + <notification functor="GenericAcknowledge" label="Unbekannte Meldung" name="MissingAlert"> + Ihre Version von [APP_NAME] kann die gerade empfangene Benachrichtigung nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben. -Fehlerdetails: Der Warnhinweis '[_NAME]' wurde in notifications.xml nicht gefunden. +Fehlerdetails: The notification called '[_NAME]' was not found in notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -94,12 +94,12 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/> </notification> <notification name="GrantModifyRights"> - Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. -Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren? + Wenn Sie einem anderen Einwohner, das die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern, löschen oder nehmen. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren! +Möchten Sie [FIRST_NAME] [LAST_NAME] die Erlaubnis zum Bearbeiten gewähren? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="GrantModifyRightsMultiple"> - Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. + Wenn Sie einem anderen Einwohner, die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren! Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> @@ -156,6 +156,11 @@ Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> + <notification name="AttachmentDrop"> + Sie möchten Ihren Anhang wirklich fallen lassen? +Möchten Sie fortfahren? + <usetemplate ignoretext="Bestätigen, bevor Anhänge fallen gelassen werden" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> <notification name="ClickUnimplemented"> Leider ist diese Funktion noch nicht implementiert. </notification> @@ -253,15 +258,11 @@ Für die gesamte Region ist Schaden aktiviert. Damit Waffen funktionieren, müssen Skripts erlaubt sein. </notification> <notification name="MultipleFacesSelected"> - Momentan sind mehrere Seiten ausgewählt. Wenn Sie fortfahren, werden einzelne Medien auf mehreren Seiten des Objektes dargestellt. Um die Medien auf einer einzigen Seite darzustellen, wählen Sie Textur auswählen und klicken Sie auf die gewünschte Seite. Danach klicken Sie Hinzufügen. + Mehrere Flächen wurden ausgewählt. +Wenn Sie fortfahren werden auf mehrere Flächen des Objekts unterschiedlichen Medien-Instanzen eingefügt. +Um Medien nur auf einer Fläche einzufügen, wählen Sie „Oberfläche auswählen" und klicken Sie auf die gewünschte Fläche des Objektes. Klicken Sie dann auf „Hinzufügen". <usetemplate ignoretext="Die Medien werden auf mehrere ausgewählte Seiten übertragen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> - <notification name="WhiteListInvalidatesHomeUrl"> - Wenn Sie diesen Eintrag zur Whitelist hinzufügen, dann wird die URL, -die Sie für diese Medien-Instanz festgelegt haben, ungültig. Dies ist nicht zulässig. -Der Eintrag kann nicht zur Whitelist hinzugefügt werden. - <usetemplate name="okbutton" yestext="OK"/> - </notification> <notification name="MustBeInParcel"> Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen. </notification> @@ -352,14 +353,6 @@ Sind Sie sicher, dass Sie fortfahren wollen? <notification name="SelectHistoryItemToView"> Wählen Sie ein Element zur Ansicht. </notification> - <notification name="ResetShowNextTimeDialogs"> - Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben? - <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - Möchten Sie alle Popups, die übersprungen werden können, deaktivieren? - <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> - </notification> <notification name="CacheWillClear"> Der Cache wird nach einem Neustart von [APP_NAME] geleert. </notification> @@ -621,6 +614,10 @@ Bitte versuchen Sie es erneut. <notification name="LandmarkCreated"> „[LANDMARK_NAME]“ wurde zum Ordner „[FOLDER_NAME]“ hinzugefügt. </notification> + <notification name="LandmarkAlreadyExists"> + Sie besitzen für diesen Standort bereits eine Landmarke. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat. </notification> @@ -722,7 +719,8 @@ Keine Parzelle ausgewählt. Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. </notification> <notification name="ForceOwnerAuctionWarning"> - Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen? + Diese Parzelle steht zur Auktion. Wenn Sie eine Eigentumsübertragung erzwingen, wird die Auktion abgesagt. Wenn die Auktion bereits begonnen hatte, dann werden Sie sich hiermit keine Freunde machen! +Eigentumsübertragung erzwingen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -775,7 +773,7 @@ Wählen Sie eine einzelne Parzelle. Streaming-Medien erfordern eine schnelle Internet-Verbindung. Streaming-Medien abspielen, wenn verfügbar? -(Sie können diese Option später unter „Einstellungen“ > „Audio & Video“ ändern.) +(Sie können diese Option später unter Einstellungen > Datenschutz ändern.) <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -1340,6 +1338,10 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht [INVITE] <usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/> </notification> + <notification name="JoinedTooManyGroups"> + Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine Gruppe bevor Sie einer neuen beitreten oder eine neue Gruppe bilden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen? <form name="form"> @@ -1584,11 +1586,11 @@ Anzeige für [AMOUNT] L$ veröffentlichen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - Enthält diese Anzeige Mature-Inhalte? + Enthält diese Anzeige moderate Inhalte? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="SetGroupMature"> - Beschäftigt sich diese Gruppe mit Mature-Inhalten? + Beschäftigt sich diese Gruppe mit moderaten Inhalten? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification label="Neustart bestätigen" name="ConfirmRestart"> @@ -1605,7 +1607,9 @@ Anzeige für [AMOUNT] L$ veröffentlichen? </notification> <notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange"> Die Alterseinstufung dieser Region wurde aktualisiert. -Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt. +Es kann eine Weile dauern, bis diese Änderung auf der Karte angezeigt wird. + +Um Regionen der Alterseinstufung „Adult" zu betreten, müssen Einwohner altersüberprüft sein. Dies kann entweder über die Alterverifizierung oder Zahlungsverifizierung geschehen. </notification> <notification label="Falsche Voice-Version" name="VoiceVersionMismatch"> Diese Version von [APP_NAME] ist mit der Voice-Chat-Funktion in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren. @@ -1727,16 +1731,6 @@ Inventarobjekt(e) verschieben? Mit dieser Funktion können Sie Verstöße gegen die [http://secondlife.com/corporate/tos.php Servicebedingungen (EN)] and [http://secondlife.com/corporate/cs.php Community-Standards] melden. Alle gemeldeten Verstöße werden bearbeitet. Sie können auf der Seite [http://secondlife.com/support/incidentreport.php Verstoßmeldungen] nachverfolgen, welche Verstoßmeldungen bearbeitet wurden. - </notification> - <notification name="HelpReportAbuseEmailEO"> - WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab. - -Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. - -Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind. -(Den Vertrag können Sie unter 'Welt ' > 'Land-Info ' einsehen.) - -Die Klärung des gemeldeten Verstoßes bezieht sich nur auf diese Region. Der Zugang für Einwohner zu anderen Bereichen von [SECOND_LIFE] wird durch das Resultat dieser Meldung nicht beeinträchtigt. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken. </notification> <notification name="HelpReportAbuseSelectCategory"> Wählen Sie eine Missbrauchskategorie aus. @@ -1971,7 +1965,6 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies </notification> <notification name="UnableToLoadGesture"> Geste [NAME] konnte nicht geladen werden. -Bitte versuchen Sie es erneut. </notification> <notification name="LandmarkMissing"> Landmarke fehlt in Datenbank. @@ -2073,7 +2066,7 @@ Wählen Sie eine kleinere Landfläche. Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen. </notification> <notification name="NoContentToSearch"> - Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult). + Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (Allgemein, Moderat oder Adult). </notification> <notification name="GroupVote"> [NAME] hat eine Abstimmung vorgeschlagen über: @@ -2086,6 +2079,9 @@ Wählen Sie eine kleinere Landfläche. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Event-Benachrichtigung: @@ -2132,8 +2128,7 @@ Bitte installieren Sie das Plugin erneut. Falls weiterhin Problem auftreten, kon Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert. </notification> <notification name="OtherObjectsReturned2"> - Die Objekte von [FIRST] [LAST] auf dieser -Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben. + Alle Objekte auf der ausgewählten Parzelle, die Einwohner '[NAME]' gehören, wurden an ihren Eigentümern zurückgegeben. </notification> <notification name="GroupObjectsReturned"> Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert. @@ -2146,7 +2141,6 @@ Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht. <notification name="ServerObjectMessage"> Nachricht von [NAME]: [MSG] - <usetemplate name="okcancelbuttons" notext="OK" yestext="Untersuchen"/> </notification> <notification name="NotSafe"> Auf diesem Land ist Schaden aktiviert. @@ -2276,12 +2270,12 @@ Versuchen Sie es in einigen Minuten erneut. </form> </notification> <notification name="UserGiveItem"> - [NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE]: + [NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE] übergeben: [ITEM_SLURL] <form name="form"> - <button name="Keep" text="Behalten"/> <button name="Show" text="Anzeigen"/> <button name="Discard" text="Verwerfen"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="GodMessage"> @@ -2306,6 +2300,9 @@ Versuchen Sie es in einigen Minuten erneut. <button name="Cancel" text="Abbrechen"/> </form> </notification> + <notification name="TeleportOfferSent"> + Ein Teleportangebot wurde an [TO_NAME] geschickt + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2323,8 +2320,12 @@ Versuchen Sie es in einigen Minuten erneut. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> + <button name="Send IM" text="IM senden"/> </form> </notification> + <notification name="FriendshipOffered"> + Sie haben [TO_NAME] die Freundschaft angeboten. + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] bietet Ihnen die Freundschaft an. @@ -2341,8 +2342,8 @@ Versuchen Sie es in einigen Minuten erneut. [NAME] hat Ihr Freundschaftsangebot abgelehnt. </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST] bietet Ihnen eine Visitenkarte an. -Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen. + [FIRST] [LAST] bietet Ihnen ihre/seine Visitenkarte an. +Ihrem Inventar wird ein Lesezeichen erstellt, damit Sie diesem Einwohner einfach eine IM schicken können. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> @@ -2422,14 +2423,6 @@ Anfrage gestatten? <button name="Block" text="Ignorieren"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - Sie haben gerade [AMOUNT] L$ erhalten. -Ihr Kontostand wird oben rechts angezeigt. - </notification> - <notification name="FirstBalanceDecrease"> - Sie haben gerade [AMOUNT] L$ bezahlt. -Ihr Kontostand wird oben rechts angezeigt. - </notification> <notification name="BuyLindenDollarSuccess"> Vielen Dank für Ihre Zahlung. @@ -2437,58 +2430,17 @@ Ihr L$-Kontostand wird aktualisiert, sobald die Bearbeitung abgeschlossen ist. F Der Zahlungsstatus kann auf Ihrer [http://secondlife.com/account/ Startseite] unter Transaktionsübersicht überprüft werden. </notification> - <notification name="FirstSit"> - Sie sitzen. -Verwenden Sie die Pfeiltasten (oder AWSD-Tasten), um sich umzusehen. -Um aufzustehen, klicken Sie auf die Schaltfläche „Aufstehen“. - </notification> - <notification name="FirstMap"> - Klicken Sie auf die Karte und bewegen Sie die Maus, um sich auf der Karte umzusehen. -Zum Teleportieren doppelklicken. -Nutzen Sie die Optionen rechts, um Objekte, Einwohner oder Events anzuzeigen und einen anderen Hintergrund auszuwählen. - </notification> - <notification name="FirstBuild"> - Sie haben die Bauwerkzeuge geöffnet. Jedes Objekt, dass Sie sehen wurde mit diesen Werkzeugen gebaut. - </notification> - <notification name="FirstTeleport"> - Sie können nur zu bestimmten Bereichen in dieser Region teleportieren. Der Pfeil deutet zu Ihrem Ziel hin. Klicken Sie auf den Pfeil, um diesen auszublenden. - </notification> <notification name="FirstOverrideKeys"> Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert. Probieren Sie die Pfeil- oder WASD-Tasten aus. Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden. Drücken Sie dazu „M“. - </notification> - <notification name="FirstAppearance"> - Sie bearbeiten gerade Ihr Aussehen. -Verwenden Sie die Pfeiltasten, um sich umzusehen. -Klicken Sie auf „Alles speichern“, wenn Sie fertig sind. - </notification> - <notification name="FirstInventory"> - Dies ist Ihr Inventar. Es enthält Objekte, die Ihnen gehören. - -* Um etwas anzuziehen, ziehen Sie es mit der Maus auf Ihren Avatar. -* Um etwas inworld zu rezzen, ziehen Sie das Objekt auf den Boden. -* Zum Lesen einer Notizkarte klicken Sie sie doppelt an. </notification> <notification name="FirstSandbox"> Dies ist ein Sandkasten. Hier können Einwohner lernen, wie Objekte gebaut werden. Objekte, die Sie hier bauen, werden gelöscht, nachdem Sie den Sandkasten verlassen. Vergessen Sie nicht, Ihr Werk mit einem Rechtsklick und der Auswahl „Nehmen“ in Ihrem Inventar zu speichern. </notification> - <notification name="FirstFlexible"> - Dieses Objekt ist flexibel. Flexible Objekte müssen die Eigenschaft „Phantom“ haben und dürfen nicht „physisch“ sein. - </notification> - <notification name="FirstDebugMenus"> - Sie haben das Menü „Erweitert“ geöffnet. - -Um dieses Menü zu aktivieren bzw. deaktivieren: - Windows Strg+Alt+D - Mac ⌥⌘D - </notification> - <notification name="FirstSculptedPrim"> - Sie bearbeiten ein geformtes Primitiv. Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert. - </notification> <notification name="MaxListSelectMessage"> Sie können maximal [MAX_SELECT] Objekte von der Liste auswählen. @@ -2583,12 +2535,23 @@ Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf &a <notification name="UnsupportedCommandSLURL"> Die SLurl, auf die Sie geklickt haben, wird nicht unterstützt. </notification> + <notification name="BlockedSLURL"> + Ein untrusted Browser hat eine SLurl geschickt, diese wurde sicherheitshalber gesperrt. + </notification> + <notification name="ThrottledSLURL"> + Innerhalb kurzer Zeit wurden von einem untrusted Browser mehrere SLurls erhalten. +Diese werden für ein paar Sekunden sicherheitshalber gesperrt. + </notification> <notification name="IMToast"> [MESSAGE] <form name="form"> <button name="respondbutton" text="Antworten"/> </form> </notification> + <notification name="ConfirmCloseAll"> + Möchten Sie wirklich alle IMs schließen? + <usetemplate name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="AttachmentSaved"> Der Anhang wurde gespeichert. </notification> @@ -2600,6 +2563,14 @@ Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf &a '[ERROR]' <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TextChatIsMutedByModerator"> + Sie wurden vom Moderator stummgeschaltet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Sie wurden vom Moderator stummgeschaltet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Möchten Sie Ihren Teleport-Verlauf löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> diff --git a/indra/newview/skins/default/xui/de/panel_active_object_row.xml b/indra/newview/skins/default/xui/de/panel_active_object_row.xml new file mode 100644 index 00000000000..00de705a307 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + Unbekanntes Objekt + </string> + <text name="object_name"> + Unbenanntes Objekt + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml index 6109d8b0ea1..6ad18781f55 100644 --- a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <panel name="panel_call_buttons"> - <button label="Anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml index ae5c1ec4243..0715175dd93 100644 --- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml @@ -23,4 +23,5 @@ </string> <text name="avatar_name" value="Unbekannt"/> <text name="last_interaction" value="0s"/> + <button name="profile_btn" tool_tip="Profil anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml index 462009746b4..eb4832770ea 100644 --- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml @@ -4,7 +4,7 @@ Liste der ignorierten Einwohner </text> <scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner"/> - <button label="Einwohner ignorieren..." label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/> - <button label="Objekt nach Name ignorieren..." label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/> + <button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/> + <button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/> <button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray.xml b/indra/newview/skins/default/xui/de/panel_bottomtray.xml index 11dd99a1d48..7a627e32c89 100644 --- a/indra/newview/skins/default/xui/de/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml @@ -8,7 +8,7 @@ </string> <layout_stack name="toolbar_stack"> <layout_panel name="gesture_panel"> - <gesture_combo_box label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> + <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> </layout_panel> <layout_panel name="movement_panel"> <button label="Bewegen" name="movement_btn" tool_tip="Bewegungssteuerung anzeigen/ausblenden"/> @@ -19,5 +19,15 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="Foto machen"/> </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="IMs"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Benachrichtigungen"/> + </chiclet_notification> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml index ca357abda3b..a9b5da163f1 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml @@ -24,10 +24,10 @@ <button label="Auf aktuelle Position einstellen" name="set_to_curr_location_btn"/> <combo_box name="content_type"> <combo_item name="mature_ci"> - Mature-Inhalt + Moderater Inhalt </combo_item> <combo_item name="pg_ci"> - PG-Inhalt + Allgemeiner Inhalt </combo_item> </combo_box> <spinner label="L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml index 811ca118d67..f643115dbe4 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml @@ -19,6 +19,9 @@ <string name="partner_edit_link_url"> http://www.secondlife.com/account/partners.php?lang=de </string> + <string name="my_account_link_url"> + http://de.secondlife.com/my + </string> <string name="no_partner_text" value="Keiner"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -44,7 +47,7 @@ <text name="title_partner_text" value="Mein Partner:"/> <text name="partner_edit_link" value="[[URL] bearbeiten]"/> <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> + <name_box name="partner_text" value="[FIRST] [LAST]"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_friends.xml b/indra/newview/skins/default/xui/de/panel_friends.xml index bb2adb36fe5..10c59547758 100644 --- a/indra/newview/skins/default/xui/de/panel_friends.xml +++ b/indra/newview/skins/default/xui/de/panel_friends.xml @@ -1,41 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Mehrere Freunde... + Mehrere Freunde </string> - <scroll_list name="friend_list" - tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen."> - <column name="icon_online_status" tool_tip="Online-Status" /> - <column label="Name" name="friend_name" tool_tip="Name" /> - <column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind" /> - <column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden" /> - <column name="icon_edit_mine" - tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen" /> - <column name="icon_edit_theirs" - tool_tip="Sie können die Objekte dieses Freunds bearbeiten" /> + <scroll_list name="friend_list" tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen."> + <column name="icon_online_status" tool_tip="Online-Status"/> + <column label="Name" name="friend_name" tool_tip="Name"/> + <column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind"/> + <column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden"/> + <column name="icon_edit_mine" tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen"/> + <column name="icon_edit_theirs" tool_tip="Sie können die Objekte dieses Freunds bearbeiten"/> </scroll_list> <panel name="rights_container"> <text name="friend_name_label"> Wählen Sie den/die Freund(e) aus, dessen/deren Rechte Sie ändern möchten... </text> - <check_box label="Kann meinen Online-Status sehen" name="online_status_cb" - tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann" /> - <check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" - tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann" /> - <check_box label="Kann meine Objekte verändern" name="modify_status_cb" - tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann" /> + <check_box label="Kann meinen Online-Status sehen" name="online_status_cb" tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann"/> + <check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann"/> + <check_box label="Kann meine Objekte verändern" name="modify_status_cb" tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann"/> <text name="process_rights_label"> Rechte werden geändert... </text> </panel> - <button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung" /> - <button label="Profil" name="profile_btn" - tool_tip="Bilder, Gruppen und andere Informationen anzeigen" /> - <button label="Teleport" name="offer_teleport_btn" - tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an" /> - <button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben" /> - <button label="Entfernen" name="remove_btn" - tool_tip="Diese Person von Ihrer Freundesliste entfernen" /> - <button label="Hinzufügen" name="add_btn" - tool_tip="Bieten Sie einem Einwohner die Freundschaft an" /> + <button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung"/> + <button label="Profil" name="profile_btn" tool_tip="Bilder, Gruppen und andere Informationen anzeigen"/> + <button label="Teleportieren" name="offer_teleport_btn" tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an"/> + <button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/> + <button label="Entfernen" name="remove_btn" tool_tip="Diese Person von Ihrer Freundesliste entfernen"/> + <button label="Hinzufügen" name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml index 6a7546457f6..9cb72fafff0 100644 --- a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="Gruppeninfo" name="group_info_btn"/> - <panel name="panel_call_buttons"> - <button label="Gruppe anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="Gruppenprofil" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Gruppe anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml index e6abd4349da..8904193f183 100644 --- a/indra/newview/skins/default/xui/de/panel_group_general.xml +++ b/indra/newview/skins/default/xui/de/panel_group_general.xml @@ -22,16 +22,16 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen. Mein Titel </text> <combo_box name="active_title" tool_tip="Legt fest, was im Namensschild Ihres Avatars angezeigt wird, wenn diese Gruppe aktiviert ist."/> - <check_box label="Notizen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/> + <check_box label="Gruppenmitteilungen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/> <check_box label="In meinem Profil anzeigen" name="list_groups_in_profile" tool_tip="Steuert, ob diese Gruppe in Ihrem Profil angezeigt wird"/> <panel name="preferences_container"> <check_box label="Registrierung offen" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/> <check_box label="Beitrittsgebühr" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="Wenn Beitrittsgebühr aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/> <check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/> - <combo_box name="group_mature_check" tool_tip="Festlegen, ob die Informationen Ihrer Gruppe „Moderat“ sind"> - <combo_box.item label="PG-Inhalt" name="pg"/> - <combo_box.item label="Mature-Inhalt" name="mature"/> + <combo_box name="group_mature_check" tool_tip="Legt fest, ob Ihre Gruppeninformation moderate Inhalte enthält"> + <combo_box.item label="Allgemeiner Inhalt" name="pg"/> + <combo_box.item label="Moderater Inhalt" name="mature"/> </combo_box> </panel> </panel> 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 71a0adcdfbd..f70291c922c 100644 --- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml @@ -31,6 +31,8 @@ </accordion> <panel name="button_row"> <button label="Erstellen" label_selected="Neue Gruppe" name="btn_create"/> + <button label="Gruppen-Chat" name="btn_chat"/> + <button label="Gruppe anrufen" name="btn_call"/> <button label="Speichern" label_selected="Speichern" name="btn_apply"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index 0712722cb30..8e1fb5e4b2e 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -7,15 +7,13 @@ (wird geladen...) </panel.string> <panel.string name="already_in_group"> - Einige Avatare sind bereits Mitglied und wurden nicht eingeladen. + Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten. </panel.string> <text name="help_text"> - Sie können mehrere Einwohner in Ihre -Gruppe einladen. Klicken Sie hierzu -auf „Einwohnerliste öffnen“. + Sie können mehrere Einwohner auswählen, um diese in Ihre Gruppe einzuladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. </text> <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen."/> + <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/> <button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/> <text name="role_text"> Wählen Sie eine Rolle aus: diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml index 1b37c35ea52..d097a2b18c3 100644 --- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="Unbekannt"/> + <button name="profile_btn" tool_tip="Profil anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml index 6d0fd9eefbd..d2ba40ae2c6 100644 --- a/indra/newview/skins/default/xui/de/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Mitteilungen" name="notices_tab"> <panel.string name="help_text"> - Mit Mitteilungen können Sie eine Nachricht und -Objekte im Anhang versenden. Mitteilungen werden -nur an Mitglieder mit einer entsprechenden Rolle -gesendet. Mitteilungen können unter - 'Allgemein ' ausgeschaltet werden. + Mit Mitteilungen können Sie eine Nachricht und auch einen Anhang versenden. +Mitteilungen werden nur an Gruppenmitglieder verschickt, deren Rolle es zulässt, dass sie Mitteilungen empfangen. +Sie können auf der Registerkarte „Allgemein“ wählen, ob Sie Mitteilungen empfangen möchten. </panel.string> <panel.string name="no_notices_text"> Keine älteren Mitteilungen. @@ -24,7 +22,7 @@ Maximal 200 pro Gruppe täglich Nicht gefunden. </text> <button label="Neue Mitteilung erstellen" label_selected="Neue Mitteilung" name="create_new_notice" tool_tip="Neue Mitteilung erstellen"/> - <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/> + <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices" tool_tip="Mitteilungsliste aktualisieren"/> <panel label="Neue Mitteilung" name="panel_create_new_notice"> <text name="lbl"> Mitteilung schreiben @@ -39,11 +37,11 @@ Maximal 200 pro Gruppe täglich Anhängen: </text> <text name="string"> - Hierhin ziehen, um etwas anzuhängen -- > + Das Objekt hierin ziehen und ablegen, um es anzuhängen: </text> <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment"/> <button label="Senden" label_selected="Senden" name="send_notice"/> - <group_drop_target name="drop_target" tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."/> + <group_drop_target name="drop_target" tool_tip="Ziehen Sie ein Objekt aus Ihrem Inventar auf dieses Feld, um es mit dieser Mitteilung zu versenden. Um das Objekt anhängen zu können, müssen Sie die Erlaubnis zum Kopieren und Übertragen besitzen."/> </panel> <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml index d91c7c0dcf0..8132f769cb4 100644 --- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <text name="avatar_name" value="Unbekannt"/> - <button label="Profil" name="view_profile_btn"/> - <button label="Freund hinzufügen" name="add_friend_btn"/> - <button label="Teleportieren" name="teleport_btn"/> - <button label="Teilen" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="Anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="Profil" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="Freund hinzufügen" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="Teleportieren" name="teleport_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Teilen" name="share_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_landmark_info.xml b/indra/newview/skins/default/xui/de/panel_landmark_info.xml index 1a68c9b3513..9cef7b6d351 100644 --- a/indra/newview/skins/default/xui/de/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/de/panel_landmark_info.xml @@ -21,6 +21,7 @@ <string name="icon_PG" value="parcel_drk_PG"/> <string name="icon_M" value="parcel_drk_M"/> <string name="icon_R" value="parcel_drk_R"/> + <button name="back_btn" tool_tip="Hinten"/> <text name="title" value="Ortsprofil"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 62973be4cbb..bd82fc68724 100644 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -6,36 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=de </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - Vorname: - </text> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> - <text name="last_name_text"> - Nachname: - </text> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> - <text name="password_text"> - Kennwort: - </text> - <button label="Login" label_selected="Login" name="connect_btn"/> - <text name="start_location_text"> - Startposition: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> - <combo_box.item label="Mein Zuhause" name="MyHome"/> - <combo_box.item label="<Region eingeben>" name="Typeregionname"/> - </combo_box> - <check_box label="Kennwort merken" name="remember_check"/> - <text name="create_new_account_text"> - Neues Konto erstellen - </text> - <text name="forgot_password_text"> - Namen oder Kennwort vergessen? - </text> - <text name="channel_text"> - [VERSION] - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Vorname: + </text> + <line_editor label="Vorname" name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> + <text name="last_name_text"> + Nachname: + </text> + <line_editor label="Nachname" name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> + <text name="password_text"> + Kennwort: + </text> + <check_box label="Kennwort merken" name="remember_check"/> + <text name="start_location_text"> + Hier anfangen: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> + <combo_box.item label="Mein Zuhause" name="MyHome"/> + <combo_box.item label="<Region eingeben>" name="Typeregionname"/> + </combo_box> + <button label="Anmelden" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Registrieren + </text> + <text name="forgot_password_text"> + Namen oder Kennwort vergessen? + </text> + <text name="login_help"> + Sie brauchen Hilfe? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml index 3d1b89ff407..026e766ab58 100644 --- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml @@ -3,10 +3,10 @@ <panel.string name="Title"> Sonstiges </panel.string> - <filter_editor label="Filter" name="inventory search editor"/> + <filter_editor label="Inventar filtern" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="Alle Objekte" name="All Items"/> - <inventory_panel label="Letzte Objekte" name="Recent Items"/> + <inventory_panel label="MEIN INVENTAR" name="All Items"/> + <inventory_panel label="AKTUELL" name="Recent Items"/> </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> @@ -32,7 +32,7 @@ <menu label="Bauen" name="Create"> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml index b657333439c..75c90575711 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Allgemein" name="Media Settings General"> <text name="home_label"> - Home-URL: + Homepage: </text> <text name="home_fails_whitelist_label"> - (Diese URL befindet sich nicht auf der festgelegten Whitelist) + (Diese Seite wird von der angegebenen Whiteliste nicht zugelassen) </text> - <line_editor name="home_url" tool_tip="Die Home-URL für diese Medienquelle"/> + <line_editor name="home_url" tool_tip="Die Start-URL für diese Medienquelle"/> <text name="preview_label"> Vorschau </text> <text name="current_url_label"> - Derzeitige URL: + Aktuelle Seite: </text> - <text name="current_url" tool_tip="Die derzeitige URL für diese Medienquelle" value=""/> + <text name="current_url" tool_tip="Die aktuelle Seite für diese Medienquelle" value=""/> <button label="Zurücksetzen" name="current_url_reset_btn"/> <check_box initial_value="false" label="Automatisch wiederholen" name="auto_loop"/> <check_box initial_value="false" label="Interaktion beim ersten Anklicken" name="first_click_interact"/> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml index 603fb67fd21..7ee0074a3bb 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Steuerung" name="Media settings for controls"> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_owner_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_owner_control"/> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_group_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_group_control"/> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_anyone_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_anyone_control"/> +<panel label="Anpassen" name="Media settings for controls"> + <text name="controls_label"> + Steuerung: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Standard + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_owner_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_owner_control"/> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_group_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_group_control"/> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_anyone_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml index d94d8b93753..8ff013f66bc 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Sicherheit" name="Media Settings Security"> - <check_box initial_value="false" label="Zugang nur für bestimmte URLs ermöglichen (mittels Präfix)" name="whitelist_enable"/> + <check_box initial_value="false" label="Nur Zugriff auf festgelegte URL-Muster zulassen" name="whitelist_enable"/> <text name="home_url_fails_some_items_in_whitelist"> - Einträge, die auf ungültige Home-URLs hinweisen, sind markiert: + Einträge, die für die Startseite nicht akzeptiert werden, sind markiert: </text> <button label="Hinzufügen" name="whitelist_add"/> <button label="Löschen" name="whitelist_del"/> <text name="home_url_fails_whitelist"> - Warnung: Die Home-URL, die in der Registerkarte "Allgemein" angegeben wurde, entspricht nicht den Einträgen auf der Whitelist. Sie wurde deaktiviert, bis ein gültiger Eintrag angegeben wird. + Achtung: Die auf der Registerkarte Allgemein festgelegte Startseite wird von der Whitelist nicht akzeptiert. Sie wurde deaktiviert bis ein gültiger Eintrag hinzugefügt wurde. </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml index 8357e4318d9..618ed888468 100644 --- a/indra/newview/skins/default/xui/de/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_my_profile.xml @@ -4,52 +4,44 @@ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] </string> + <string name="payment_update_link_url"> + http://www.secondlife.com/account/billing.php?lang=de-DE + </string> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=de + </string> + <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/> <string name="no_partner_text" value="Keiner"/> + <string name="no_group_text" value="Keiner"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> - <text name="title_rw_descr_text" value="Echtes Leben:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Webseite: - </text> - <text name="title_member_text" value="Mitglied seit:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Kontostatus:"/> - <text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Gruppen:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Freund hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Profil bearbeiten" name="edit_profile_btn"/> - <button label="Aussehen bearbeiten" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> + <text name="title_rw_descr_text" value="Echtes Leben:"/> + </panel> + <text name="title_member_text" value="Einwohner seit:"/> + <text name="title_acc_status_text" value="Kontostatus:"/> + <text name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppen:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/> + <button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml index 5bf78be3d33..ab59c207bf9 100644 --- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml @@ -10,6 +10,6 @@ </search_combo_box> </panel> <favorites_bar name="favorite"> - <chevron_button name=">>" tool_tip="Zeige weitere meiner Favoriten an"/> + <chevron_button name=">>" tool_tip="Mehr meiner Favoriten anzeigen"/> </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml index 994c02935c9..e6a63fc0c82 100644 --- a/indra/newview/skins/default/xui/de/panel_notes.xml +++ b/indra/newview/skins/default/xui/de/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notizen & Privatsphäre" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Meine Notizen:"/> @@ -11,13 +11,13 @@ <check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml index da871cad472..8d2dd84512c 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="Outfits"> - <accordion name="outfits_accordion"> - <accordion_tab name="tab_outfits" title="Outfit-Leiste"/> - <accordion_tab name="tab_cof" title="Aktuelles Outfit"/> - </accordion> - <button label=">" name="selector" tool_tip="Outfit-Eigenschaften anzeigen"/> +<panel label="Sonstiges" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="MEINE OUTFITS" name="outfitslist_tab"/> + <inventory_panel label="AKTUELLES OUTFIT" name="cof_accordionpanel"/> + </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> - <button name="add_btn" tool_tip="Neues Objekt hinzufügen"/> <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> + <button label="Outfit speichern" name="make_outfit_btn" tool_tip="Aussehen als Outfit speichern"/> + <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> + <button label="M" name="look_edit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml index ec4d109acdd..ad0e039070b 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Neues Outfit" name="new"/> - <menu_item_call label="Outfit anziehen" name="wear"/> + <menu_item_call label="Aktuelles Outfit ersetzen" name="wear"/> + <menu_item_call label="Vom aktuellen Outfit entfernen" name="remove"/> + <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Link entfernen" name="remove_link"/> <menu_item_call label="Outfit löschen" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 3e99272833b..91a17e127af 100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -49,5 +49,6 @@ <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> <button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/> <button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/> + <button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml index a1588e59301..a07bc170f6c 100644 --- a/indra/newview/skins/default/xui/de/panel_picks.xml +++ b/indra/newview/skins/default/xui/de/panel_picks.xml @@ -2,20 +2,16 @@ <panel label="Auswahl" name="panel_picks"> <string name="no_picks" value="Keine Auswahl"/> <string name="no_classifieds" value="Keine Anzeigen"/> - <text name="empty_picks_panel_text"> - Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Auswahl"/> <accordion_tab name="tab_classifieds" title="Anzeigen"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Aktuellen Standort zur Auswahl hinzufügen"/> + <button name="new_btn" tool_tip="An aktuellem Standort neue Auswahl oder Anzeige erstellen"/> </panel> <panel name="buttons_cucks"> - <button label="Info" name="info_btn"/> - <button label="Teleportieren" name="teleport_btn"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="â–¼" name="overflow_btn"/> + <button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml index e012acac8d3..b933a0a4990 100644 --- a/indra/newview/skins/default/xui/de/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml @@ -56,6 +56,7 @@ <string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/> <string name="icon_Damage" value="parcel_drk_Damage"/> <string name="icon_DamageNo" value="parcel_drk_DamageNo"/> + <button name="back_btn" tool_tip="Hinten"/> <text name="title" value="Ortsprofil"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index a2f98bf1997..d57ba9d0ab1 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -2,11 +2,12 @@ <panel label="Orte" name="places panel"> <string name="landmarks_tab_title" value="MEINE LANDMARKEN"/> <string name="teleport_history_tab_title" value="TELEPORT-VERLAUF"/> - <filter_editor label="Filter" name="Filter"/> + <filter_editor label="Orte filtern" name="Filter"/> <panel name="button_panel"> - <button label="Teleportieren" name="teleport_btn"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> <button label="Karte" name="map_btn"/> - <button label="Bearbeiten" name="edit_btn"/> + <button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/> + <button name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> <button label="Schließen" name="close_btn"/> <button label="Abbrechen" name="cancel_btn"/> <button label="Speichern" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml index 3e00c392896..def5fb3b1b2 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml @@ -9,6 +9,6 @@ Diese Warnhinweise immer anzeigen: </text> <text name="dont_show_label"> - Diese Warnhinweise immer anzeigen: + Diese Benachrichtungen nie anzeigen: </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index d51675e150a..cc0a09c06c7 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Text-Chat" name="chat"> <radio_group name="chat_font_size"> - <radio_item label="Klein" name="radio"/> - <radio_item label="Mittel" name="radio2"/> - <radio_item label="Groß" name="radio3"/> + <radio_item label="Klein" name="radio" value="0"/> + <radio_item label="Mittel" name="radio2" value="1"/> + <radio_item label="Groß" name="radio3" value="2"/> </radio_group> <color_swatch label="Sie" name="user"/> <text name="text_box1"> @@ -40,4 +40,8 @@ <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/> <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/> <check_box label="Text-Chatverlauf aktivieren" name="plain_text_chat_history"/> + <radio_group name="chat_window" tool_tip="Zeigen sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich)."> + <radio_item label="Mehrere Fenster" name="radio" value="0"/> + <radio_item label="Ein Fenster" name="radio2" value="1"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml index 5bbd579ff68..490b0b296b4 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -15,7 +15,6 @@ <combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/> <combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/> <combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/> - <combo_box.item label="Testsprache" name="TestLanguage"/> </combo_box> <text name="language_textbox2"> (Erfordert Neustart) @@ -25,8 +24,8 @@ </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="PG, Mature und Adult" name="Desired_Adult"/> - <combo_box.item label="PG und Mature" name="Desired_Mature"/> + <combo_box.item label="Allgemein, Moderat, Adult" name="Desired_Adult"/> + <combo_box.item label="Allgemein und Moderat" name="Desired_Mature"/> <combo_box.item label="Allgemein" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> @@ -41,9 +40,9 @@ Avatarnamen: </text> <radio_group name="Name_Tag_Preference"> - <radio_item label="Aus" name="radio"/> - <radio_item label="An" name="radio2"/> - <radio_item label="Vorübergehend anzeigen" name="radio3"/> + <radio_item label="Aus" name="radio" value="0"/> + <radio_item label="An" name="radio2" value="1"/> + <radio_item label="Vorübergehend anzeigen" name="radio3" value="2"/> </radio_group> <check_box label="Meinen Namen anzeigen" name="show_my_name_checkbox1"/> <check_box initial_value="true" label="Kleine Avatarnamen" name="small_avatar_names_checkbox"/> @@ -51,14 +50,17 @@ <text name="effects_color_textbox"> Meine Effekte: </text> - <color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <text name="title_afk_text"> Zeit bis zur Abwesenheit: </text> - <spinner label="" name="afk_timeout_spinner"/> - <text name="seconds_textbox"> - Sekunden - </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <combo_box label="Timeout für Abwesenheit:" name="afk"> + <combo_box.item label="2 Minuten" name="item0"/> + <combo_box.item label="5 Minuten" name="item1"/> + <combo_box.item label="10 Minuten" name="item2"/> + <combo_box.item label="30 Minuten" name="item3"/> + <combo_box.item label="nie" name="item4"/> + </combo_box> <text name="text_box3"> Antwort, wenn im „Beschäftigt“-Modus: </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml index fe0dca78d10..0c0924026ed 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml @@ -11,8 +11,8 @@ <check_box label="Nur Freunde und Gruppen können mich anrufen oder mir eine IM schicken" name="voice_call_friends_only_check"/> <check_box label="Mikrofon ausschalten, wenn Anrufe beendet werden" name="auto_disengage_mic_check"/> <check_box label="Cookies annehmen" name="cookies_enabled"/> - <check_box label="Automatisches Abspielen von Medien erlauben" name="autoplay_enabled"/> - <check_box label="Medien auf Parzellen automatisch abspielen" name="parcel_autoplay_enabled"/> + <check_box label="Medien aktiviert" name="media_enabled"/> + <check_box label="Automatische Wiedergabe zulassen" name="autoplay_enabled"/> <text name="Logs:"> Protokolle: </text> @@ -20,7 +20,7 @@ <check_box label="IM Protokolle auf meinem Computer speichern" name="log_instant_messages"/> <check_box label="Zeitstempel hinzufügen" name="show_timestamps_check_im"/> <text name="log_path_desc"> - Speicherort der Protokolldateien + Speicherort für Protokolle: </text> <button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/> <button label="Ignorierte Einwohner/Objekte" name="block_list"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index f1d4a853e8c..89433378bb5 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Kamera" name="Input panel"> +<panel label="Hardware & Web" name="Input panel"> <button label="Andere Geräte" name="joystick_setup_button"/> <text name="Mouselook:"> Mouselook: @@ -26,9 +26,9 @@ MB </text> <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/> - <button label="Zurücksetzen" label_selected="Set" name="reset_cache"/> + <button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/> <text name="Cache location"> - Speicherort des Caches + Cache-Ordner: </text> <text name="Web:"> Web: @@ -41,6 +41,6 @@ <line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/> <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/> <text name="Proxy location"> - Proxyadresse + Proxy-Standort: </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 94c215b80bf..6060b1e6107 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -7,7 +7,7 @@ <slider label="Medien" name="Media Volume"/> <slider label="Soundeffekte" name="SFX Volume"/> <slider label="Musik wird gestreamt" name="Music Volume"/> - <check_box label="Sprache" name="enable_voice_check"/> + <check_box label="Voice aktivieren" name="enable_voice_check"/> <slider label="Sprache" name="Voice Volume"/> <text name="Listen from"> Hören von: diff --git a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml index ed5daa60ce3..0a19483f8b7 100644 --- a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml @@ -6,7 +6,36 @@ <string name="skip_step"> 0.2 </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/> + </panel> + </layout_stack> <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Rückwärts"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Vorwärts"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="Startseite"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="Medienwiedergabe stoppen"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="Neu laden"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Ladevorgang stoppen"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Medien wiedergeben"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Medien pausieren"/> + </layout_panel> <layout_panel name="media_address"> <line_editor name="media_address_url" tool_tip="Medien URL"/> <layout_stack name="media_address_url_icons"> @@ -21,13 +50,24 @@ <layout_panel name="media_play_position"> <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Fortschritt der Filmwiedergabe"/> </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Rückwärts"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Vorwärts"/> + </layout_panel> <layout_panel name="media_volume"> - <button name="media_volume_button" tool_tip="Dieses Medium stummschalten"/> + <button name="media_mute_button" tool_tip="Stummschalten"/> + <slider name="volume_slider" tool_tip="Lautstärke"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="Auf Medien zoomen"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Herauszoomen"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="URL in Browser öffnen"/> </layout_panel> - </layout_stack> - <layout_stack> - <panel name="media_progress_indicator"> - <progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/> - </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml index c67d7f7fbc6..82467eb570b 100644 --- a/indra/newview/skins/default/xui/de/panel_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_profile.xml @@ -12,50 +12,41 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/> <string name="no_partner_text" value="Keiner"/> + <string name="no_group_text" value="Keiner"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="Echtes Leben:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Webseite: - </text> - <text name="title_member_text" value="Mitglied seit:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Kontostatus:"/> - <text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Gruppen:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Freund hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - <button label="â–¼" name="overflow_btn"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Profil bearbeiten" name="edit_profile_btn"/> - <button label="Aussehen bearbeiten" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="Echtes Leben:"/> + </panel> + <text name="title_member_text" value="Einwohner seit:"/> + <text name="title_acc_status_text" value="Kontostatus:"/> + <text name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppen:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/> + <button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml index e0008d2a397..b0c6dce8cf9 100644 --- a/indra/newview/skins/default/xui/de/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Grundstück" name="Estate"> <text name="estate_help_text"> - Änderungen auf dieser Registerkarte wirken sich -auf alle Regionen auf dem Grundstück aus. + Änderungen auf dieser Registerkarte wirken sich auf alle Regionen auf dem Grundstück aus. </text> <text name="estate_text"> Grundstück: @@ -17,10 +16,10 @@ auf alle Regionen auf dem Grundstück aus. (unbekannt) </text> <text name="Only Allow"> - Zugang beschränken auf: + Zugang auf Einwohner beschränken, die überprüft wurden von: </text> - <check_box label="Einwohner mit Zahlungsinformationen" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/> - <check_box label="Altersgeprüfte Erwachsene" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> + <check_box label="Zahlungsinformation gespeichert" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/> + <check_box label="Altersüberprüfung" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> <check_box label="Voice-Chat erlauben" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <text name="abuse_email_text" width="222"> 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 13df2bfb3b7..978b701054c 100644 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.xml @@ -39,10 +39,10 @@ <text label="Alterseinstufung" name="access_text"> Einstufung: </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="Moderat" name="access_combo"> <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Mature" name="Mature"/> - <combo_box.item label="PG" name="PG"/> + <combo_box.item label="Moderat" name="Mature"/> + <combo_box.item label="Allgemein" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="Übernehmen" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml new file mode 100644 index 00000000000..732249df35f --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Region" name="General"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + unbekannt + </text> + <text name="version_channel_text_lbl"> + Version: + </text> + <text name="version_channel_text"> + unbekannt + </text> + <text name="region_type_lbl"> + Typ: + </text> + <text name="region_type"> + unbekannt + </text> + <check_box label="Terraformen blockieren" name="block_terraform_check"/> + <check_box label="Fliegen blockieren" name="block_fly_check"/> + <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="Zusammenlegen/Teilen von Land 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"/> + <spinner label="Avatar-Limit" name="agent_limit_spin"/> + <spinner label="Objektbonus" name="object_bonus_spin"/> + <text label="Alterseinstufung" name="access_text"> + Einstufung: + </text> + <combo_box label="Moderat" name="access_combo"> + <combo_box.item label="Adult" name="Adult"/> + <combo_box.item label="Moderat" name="Mature"/> + <combo_box.item label="Allgemein" name="PG"/> + </combo_box> + <button label="Übernehmen" name="apply_btn"/> + <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/> + <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/> + <button label="Nachricht an Region senden..." name="im_btn"/> + <button label="Telehub verwalten..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml index 4361b39defe..d489b5bac8a 100644 --- a/indra/newview/skins/default/xui/de/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml @@ -48,8 +48,7 @@ Diese Werte geben den Mischungsgrad für die obigen Texturen an. </text> <text name="height_text_lbl11"> - Der UNTERE Wert gibt die MAXIMALE Höhe von Textur Nr. 1 an -und der OBERE WERT die MINIMALE Höhe von Textur 4. + In Metern gemessen. Der NIEDRIG-Wert ist die MAXIMALE Höhe der Textur #1, der HÖCHST-Wert ist die MINDEST-Höhe von Textur #4. </text> <text name="height_text_lbl12"> und der OBERE WERT die MINIMALE Höhe von Textur 4. diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml new file mode 100644 index 00000000000..f6a1d7e9b5e --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MEIN AVATAR" name="script_limits_my_avatar_panel"> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size"/> + <scroll_list.columns label="URLs" name="urls"/> + <scroll_list.columns label="Objektname" name="name"/> + <scroll_list.columns label="Ort" name="location"/> + </scroll_list> + <button label="Liste aktualisieren" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml new file mode 100644 index 00000000000..c466c04e869 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="REGIONSSPEICHER" name="script_limits_region_memory_panel"> + <text name="script_memory"> + Parzellenskript-Speicher + </text> + <text name="parcels_listed"> + Parzelleneigentümer: + </text> + <text name="memory_used"> + Verwendeter Speicher: + </text> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size"/> + <scroll_list.columns label="Objektname" name="name"/> + <scroll_list.columns label="Objekteigentümer" name="owner"/> + <scroll_list.columns label="Parzelle / Standort" name="location"/> + </scroll_list> + <button label="Liste aktualisieren" name="refresh_list_btn"/> + <button label="Markieren" name="highlight_btn"/> + <button label="Zurückgeben" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_side_tray.xml b/indra/newview/skins/default/xui/de/panel_side_tray.xml index d5baacd357a..2cd11cdcef7 100644 --- a/indra/newview/skins/default/xui/de/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml @@ -2,9 +2,13 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> + <sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose"/> <sidetray_tab description="Startseite." name="sidebar_home"> <panel label="Startseite" name="panel_home"/> </sidetray_tab> + <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me"> + <panel label="Ich" name="panel_me"/> + </sidetray_tab> <sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people"> <panel_container name="panel_container"> <panel label="Gruppeninfo" name="panel_group_info_sidetray"/> @@ -14,13 +18,10 @@ <sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places"> <panel label="Orte" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me"> - <panel label="Ich" name="panel_me"/> + <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory"> + <panel label="Inventar bearbeiten" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance"> <panel label="Aussehen bearbeiten" name="sidepanel_appearance"/> </sidetray_tab> - <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory"> - <panel label="Inventar bearbeiten" name="sidepanel_inventory"/> - </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml index 253207fe735..33fd0f6348f 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -21,7 +21,8 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand: Hier klicken, um mehr L$ zu kaufen"/> + <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/> + <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> 12:00 </text> diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml index 3149ddf19e1..4efd83dffff 100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml @@ -11,5 +11,7 @@ <accordion_tab name="1_month_and_older" title="1 Monat und älter"/> <accordion_tab name="6_months_and_older" title="6 Monate und älter"/> </accordion> - <panel label="bottom_panel" name="bottom_panel"/> + <panel label="bottom_panel" name="bottom_panel"> + <button name="gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml index 9d18c52442d..4b57aa69b60 100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="teleport_history_item"> <text name="region" value="..."/> + <button name="profile_btn" tool_tip="Objektinfo anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml index 95eb6c5eb29..554a5c27a4b 100644 --- a/indra/newview/skins/default/xui/de/role_actions.xml +++ b/indra/newview/skins/default/xui/de/role_actions.xml @@ -1,200 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." - name="Membership"> - <action description="Personen in diese Gruppe einladen" - longdescription="Personen zu dieser Gruppe einladen können Sie mit „Neue Person einladen...“ unter „Mitglieder und Rollen“ > „Mitglieder“." - name="member invite" /> - <action description="Mitglieder aus dieser Gruppe werfen" - longdescription="Mitglieder von der Gruppe ausschließen können Sie mit „Aus Gruppe werfen“ unter „Mitglieder und Rollen“ > „Mitglieder“. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann von der Gruppe ausschließen, wenn es die Rolle „Jeder“ innehat, aber KEINE ANDERE Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen." - name="member eject" /> - <action - description="„Registrierung offen“ einstellen und „Beitrittsgebühr“ ändern" - longdescription="„Beitritt möglich“ erlaubt den Beitritt zur Gruppe ohne vorhergehende Einladung. Die „Beitrittsgebühr“ wird in den Gruppeneinstellungen auf der Registerkarte „Allgemein“ festgelegt." - name="member options" /> + <action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." name="Membership"> + <action description="Personen in diese Gruppe einladen" longdescription="Leute in diese Gruppe mit der Schaltfläche „Einladen“ im Abschnitt „Rollen“ > Registerkarte „Mitglieder“ in die Gruppe einladen." name="member invite"/> + <action description="Mitglieder aus dieser Gruppe werfen" longdescription="Leute aus dieser Gruppe mit der Schaltfläche „Hinauswerfen“ im Abschnitt „Rollen“ > Registerkarte „Mitglieder“ aus der Gruppe werfen. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann aus der Gruppe werfen, wenn es die Rolle Jeder inne hat, jedoch KEINE andere Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen." name="member eject"/> + <action description="„Registrierung offen“ aktivieren/deaktivieren und „Beitrittsgebühr“ ändern." longdescription="„Registrierung offen“ aktivieren, um damit neue Mitglieder ohne Einladung beitreten können, und die „Beitrittsgebühr“ im Abschnitt „Allgemein“ ändern." name="member options"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." - name="Roles"> - <action description="Neue Rollen erstellen" - longdescription="Neue Rollen erstellen Sie unter „Mitglieder und Rollen“ > „Rollen“." - name="role create" /> - <action description="Rollen löschen" - longdescription="Rollen löschen können Sie unter „Mitglieder und Rollen“ > „Rollen“." - name="role delete" /> - <action description="Rollennamen, Titel und Beschreibung ändern" - longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte „Mitglieder und Rollen“ > „Rollen“ ändern." - name="role properties" /> - <action description="Mitgliedern nur eigene Rollen zuweisen" - longdescription="Mitgliedern nur eigene Rollen zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." - name="role assign member limited" /> - <action description="Mitgliedern beliebige Rolle zuweisen" - longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="role assign member" /> - <action description="Mitgliedern Rollen entziehen" - longdescription="Mitgliedern Rollen entziehen können Sie im Bereich „Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. Eigentümer können nicht entfernt werden." - name="role remove member" /> - <action description="Rollenfähigkeiten zuweisen und entfernen" - longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich „Zulässige Fähigkeiten“ auf der Registerkarte „Mitglieder und Rollen“ > „Rollen“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="role change actions" /> + <action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." name="Roles"> + <action description="Neue Rollen erstellen" longdescription="Neue Rollen im Abschnitt „Rollen“ > Registerkarte „Rollen“ erstellen." name="role create"/> + <action description="Rollen löschen" longdescription="Neue Rollen im Abschnitt „Rollen“ > Registerkarte „Rollen“ löschen." name="role delete"/> + <action description="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern." longdescription="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern. Dies wird im unteren Bereich des Abschnitts „Rollen“ > Registerkarte „Rollen“ eingestellt, nachdem eine Rolle ausgewählt wurde." name="role properties"/> + <action description="Mitgliedern nur eigene Rollen zuweisen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) können Mitgliedern Rollen zugewiesen werden. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." name="role assign member limited"/> + <action description="Mitgliedern beliebige Rolle zuweisen" longdescription="Sie können Mitglieder jede beliebige Rolle der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) zuweisen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role assign member"/> + <action description="Mitgliedern Rollen entziehen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) können Mitgliedern Rollen abgenommen werden. Eigentümer können nicht entfernt werden." name="role remove member"/> + <action description="Rollenfähigkeiten zuweisen und entfernen" longdescription="Fähigkeiten für jede Rolle können in der Liste „Zulässige Fähigkeiten" (Abschnitt „Rollen" > Registerkarte „Rollen“) zugewiesen und auch entzogen werden. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role change actions"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." - name="Group Identity"> - <action - description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." - longdescription="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte „Allgemein“." - name="group change identity" /> + <action_set description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." name="Group Identity"> + <action description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." longdescription="Charta, Insignien und „In Suche anzeigen" ändern. Diese Einstellungen werden im Abschnitt „Allgemein" vorgenommen." name="group change identity"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Menüleiste auf den Parzellennamen." - name="Parcel Management"> - <action description="Land übertragen und für Gruppe kaufen" - longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ > „Allgemein“." - name="land deed" /> - <action description="Land Governor Linden überlassen" - longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ > „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="land release" /> - <action description="Land.zu.verkaufen-Info einstellen" - longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ > „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="land set sale info" /> - <action description="Parzellen teilen und zusammenlegen" - longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen...“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen...“." - name="land divide join" /> + <action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Navigationsleiste auf das Symbol „i"." name="Parcel Management"> + <action description="Land übertragen und für Gruppe kaufen" longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ > „Allgemein“." name="land deed"/> + <action description="Land Governor Linden überlassen" longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ > „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land release"/> + <action description="Land.zu.verkaufen-Info einstellen" longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ > „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land set sale info"/> + <action description="Parzellen teilen und zusammenlegen" longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen“." name="land divide join"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." - name="Parcel Identity"> - <action - description="„In Orte suchen anzeigen“ ein-/ausschalten und Kategorie festlegen" - longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „In Orte suchen anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." - name="land find places" /> - <action - description="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern" - longdescription="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." - name="land change identity" /> - <action description="Landepunkt und Teleport-Route festlegen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." - name="land set landing point" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." name="Parcel Identity"> + <action description="„Ort in Suche anzeigen" ein-/ausschalten und Kategorie festlegen." longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Ort in Suche anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." name="land find places"/> + <action description="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern" longdescription="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern Diese Einstellungen finden Sie unter „Land-Info“ > Registerkarte „Optionen“." name="land change identity"/> + <action description="Landepunkt und Teleport-Route festlegen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." name="land set landing point"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." - name="Parcel Settings"> - <action description="Musik- und Medieneinstellungen ändern" - longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ > „Medien“." - name="land change media" /> - <action description="„Terrain bearbeiten“ ein/aus" - longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ > „Optionen“ > „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ > „Optionen“." - name="land edit" /> - <action description="„Land-Info“-Optionen einstellen" - longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen auf gruppeneigenem Land erlauben: „Objekte erstellen“, „Terrain bearbeiten“, „Landmarken erstellen“ und „Skripts ausführen“." - name="land options" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." name="Parcel Settings"> + <action description="Musik- und Medieneinstellungen ändern" longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ > „Medien“." name="land change media"/> + <action description="„Terrain bearbeiten“ ein/aus" longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ > „Optionen“ > „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ > „Optionen“." name="land edit"/> + <action description="„Land-Info“-Optionen einstellen" longdescription="„Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen erlauben: „Terrain bearbeiten“, „Bauen“, „Landmarken erstellen“ und „Skripts ausführen“ auf gruppeneigenem Land in „Land-Info“ > Registerkarte „Optionen“." name="land options"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." - name="Parcel Powers"> - <action description="„Terrain bearbeiten“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow edit land" /> - <action description="„Fliegen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow fly" /> - <action description="„Objekte erstellen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow create" /> - <action description="„Landmarke erstellen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow landmark" /> - <action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ > „Hier als Zuhause wählen“ verwenden." - name="land allow set home" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." name="Parcel Powers"> + <action description="„Terrain bearbeiten“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow edit land"/> + <action description="„Fliegen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow fly"/> + <action description="„Objekte erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow create"/> + <action description="„Landmarke erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow landmark"/> + <action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ > „Landmarken“ > „Hier als Zuhause wählen“ verwenden." name="land allow set home"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." - name="Parcel Access"> - <action description="Parzellen-Zugangslisten verwalten" - longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ > „Zugang“." - name="land manage allowed" /> - <action description="Parzellen-Bannlisten verwalten" - longdescription="Parzellen-Bannlisten bearbeiten Sie unter „Land-Info“ > „Verbannen“." - name="land manage banned" /> - <action - description="Parzelleneinstellungen für „Pässe verkaufen...“ ändern" - longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen...“ ändern Sie unter „Land-Info“ > „Zugang“." - name="land manage passes" /> - <action description="Einwohner aus Parzellen werfen und einfrieren" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Personen auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie die Person mit rechts an und wählen Sie „Mehr“ >, dann „Ausschließen...“ oder „Einfrieren...“." - name="land admin" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." name="Parcel Access"> + <action description="Parzellen-Zugangslisten verwalten" longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ > „Zugang“." name="land manage allowed"/> + <action description="Parzellen-Bannlisten verwalten" longdescription="Bannlisten für Parzellen bearbeiten Sie unter „Land-Info“ > Registerkarte „Zugang“." name="land manage banned"/> + <action description="Parzelleneinstellungen für „Pässe verkaufen“ ändern" longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen“ ändern Sie unter „Land-Info“ > Registerkarte „Zugang“." name="land manage passes"/> + <action description="Einwohner aus Parzellen werfen und einfrieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Einwohner auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie den Einwohner mit rechts an und wählen Sie „Hinauswerfen“ oder „Einfrieren“." name="land admin"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." - name="Parcel Content"> - <action description="Gruppeneigene Objekte zurückgeben" - longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return group owned" /> - <action description="Gruppenobjekte zurückgeben" - longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return group set" /> - <action description="Gruppenfremde Objekte zurückgeben" - longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return non group" /> - <action description="Landschaftsgestaltung mit Linden-Pflanzen" - longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter „Objekte“. Sie lassen sich auch mit der Schaltfläche „Erstellen“ erzeugen." - name="land gardening" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." name="Parcel Content"> + <action description="Gruppeneigene Objekte zurückgeben" longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return group owned"/> + <action description="Gruppenobjekte zurückgeben" longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return group set"/> + <action description="Gruppenfremde Objekte zurückgeben" longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return non group"/> + <action description="Landschaftsgestaltung mit Linden-Pflanzen" longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter Objekte. Sie lassen sich auch mit der Menü Erstellen erzeugen." name="land gardening"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“ vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie „Bearbeiten“, um seine Einstellungen anzuzeigen." - name="Object Management"> - <action description="Objekte an Gruppe übertragen" - longdescription="Objekte an eine Gruppe übertragen können Sie unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“." - name="object deed" /> - <action - description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" - longdescription="Gruppeneigene Objekte lassen sich unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)." - name="object manipulate" /> - <action description="Gruppeneigene Objekte zum Verkauf freigeben" - longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“." - name="object set sale" /> + <action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden im Werkzeug Bearbeiten auf der Registerkarte Allgemein vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie 'Bearbeiten ', um seine Einstellungen anzuzeigen." name="Object Management"> + <action description="Objekte an Gruppe übertragen" longdescription="Objekte an eine Gruppe übertragen können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object deed"/> + <action description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" longdescription="Gruppeneigene Objekte lassen sich im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)." name="object manipulate"/> + <action description="Gruppeneigene Objekte zum Verkauf freigeben" longdescription="Gruppeneigene Objekte zum Verkauf freigeben, können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object set sale"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken." - name="Accounting"> - <action description="Gruppenschulden zahlen und Gruppendividende erhalten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren." - name="accounting accountable" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken." name="Accounting"> + <action description="Gruppenschulden zahlen und Gruppendividende erhalten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren." name="accounting accountable"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." - name="Notices"> - <action description="Mitteilungen senden" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Mitteilungen“ Mitteilungen senden." - name="notices send" /> - <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und in der Gruppeninfo unter „Mitteilungen“ ältere Mitteilungen einsehen." - name="notices receive" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." name="Notices"> + <action description="Mitteilungen senden" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen im Abschnitt Gruppe > Mitteilungen senden." name="notices send"/> + <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und im Abschnitt Gruppe > Mitteilungen ältere Mitteilungen anzeigen." name="notices receive"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." - name="Proposals"> - <action description="Neue Anfragen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann." - name="proposal start" /> - <action description="Über Anfragen abstimmen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen." - name="proposal vote" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." name="Proposals"> + <action description="Neue Anfragen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann." name="proposal start"/> + <action description="Über Anfragen abstimmen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen." name="proposal vote"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern." - name="Chat"> - <action description="Gruppen-Chat beitreten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." - name="join group chat" /> - <action description="Gruppen-Voice-Chat beitreten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." - name="join voice chat" /> - <action description="Gruppen-Chat moderieren" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." - name="moderate group chat" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern." name="Chat"> + <action description="Gruppen-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." name="join group chat"/> + <action description="Gruppen-Voice-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." name="join voice chat"/> + <action description="Gruppen-Chat moderieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml index 07d35f30e45..7a280bd7ffc 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Aussehen" name="appearance panel"> +<panel label="Outfits" name="appearance panel"> <string name="No Outfit" value="Kein Outfit"/> <panel name="panel_currentlook"> <button label="Bearbeiten" name="editappearance_btn"/> <text name="currentlook_title"> - Aktuelles Outfit: + (nicht gespeichert) </text> <text name="currentlook_name"> - Mein Outfit + MyOutfit With a really Long Name like MOOSE </text> </panel> - <filter_editor label="Filter" name="Filter"/> + <filter_editor label="Outfits filtern" name="Filter"/> <button label="Anziehen" name="wear_btn"/> <button label="Neues Outfit" name="newlook_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 d40e2f33981..f6cf911bb32 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -2,7 +2,7 @@ <panel label="Sonstiges" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Info" name="info_btn"/> + <button label="Profil" name="info_btn"/> <button label="Anziehen" name="wear_btn"/> <button label="Wiedergeben" name="play_btn"/> <button label="Teleportieren" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml index 947ffbf1862..09935019ab8 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="Inventarobjekt-Eigenschaften"> +<panel name="item properties" title="Objektprofil"> <panel.string name="unknown"> (unbekannt) </panel.string> @@ -15,6 +15,8 @@ <panel.string name="acquiredDate"> [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </panel.string> + <text name="title" value="Objektprofil"/> + <text name="where" value="(Inventar)"/> <panel label=""> <text name="LabelItemNameTitle"> Name: @@ -28,53 +30,50 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="Profil..." name="BtnCreator"/> + <button label="Profil" name="BtnCreator"/> <text name="LabelOwnerTitle"> Eigentümer: </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="Profil..." name="BtnOwner"/> + <button label="Profil" name="BtnOwner"/> <text name="LabelAcquiredTitle"> Erworben: </text> <text name="LabelAcquiredDate"> Mittwoch, 24. Mai 2006, 12:50:46 </text> - <text name="OwnerLabel"> - Sie: - </text> - <check_box label="Bearbeiten" name="CheckOwnerModify"/> - <check_box label="Kopieren" name="CheckOwnerCopy"/> - <check_box label="Wiederverkaufen" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Jeder: - </text> - <check_box label="Kopieren" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppe: - </text> - <check_box label="Teilen" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Nächster Eigentümer: - </text> - <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> - <check_box label="Kopieren" name="CheckNextOwnerCopy"/> - <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/> + <panel name="perms_inv"> + <text name="perm_modify"> + Sie können: + </text> + <check_box label="Bearbeiten" name="CheckOwnerModify"/> + <check_box label="Kopieren" name="CheckOwnerCopy"/> + <check_box label="Transferieren" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Jeder: + </text> + <check_box label="Kopieren" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Teilen" name="CheckShareWithGroup" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> + <text name="NextOwnerLabel"> + Nächster Eigentümer: + </text> + <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> + <check_box label="Kopieren" name="CheckNextOwnerCopy"/> + <check_box label="Transferieren" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> + </panel> <check_box label="Zum Verkauf" name="CheckPurchase"/> <combo_box name="combobox sale copy"> <combo_box.item label="Kopieren" name="Copy"/> <combo_box.item label="Original" name="Original"/> </combo_box> - <spinner label="Preis:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <spinner label="Preis: L$" name="Edit Cost"/> </panel> <panel name="button_panel"> - <button label="Bearbeiten" name="edit_btn"/> <button label="Abbrechen" name="cancel_btn"/> - <button label="Speichern" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml index b0ce47e3ae3..9f8fdc085a3 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="Objekteigenschaften"> +<panel name="object properties" title="Objektprofil"> <panel.string name="text deed continued"> Übertragung </panel.string> @@ -36,6 +36,8 @@ <panel.string name="Sale Mixed"> Mischverkauf </panel.string> + <text name="title" value="Objektprofil"/> + <text name="where" value="(Inworld)"/> <panel label=""> <text name="Name:"> Name: @@ -43,11 +45,11 @@ <text name="Description:"> Beschreibung: </text> - <text name="Creator:"> + <text name="CreatorNameLabel"> Ersteller: </text> <text name="Creator Name"> - Esbee Linden + Erica Linden </text> <text name="Owner:"> Eigentümer: @@ -55,13 +57,12 @@ <text name="Owner Name"> Erica Linden </text> - <text name="Group:"> + <text name="Group_label"> Gruppe: </text> <button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/> <name_box initial_value="Wird geladen..." name="Group Name Proxy"/> <button label="Übertragung" label_selected="Übertragung" name="button deed" tool_tip="Eine Übertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/> - <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> <text name="label click action"> Bei Linksklick: </text> @@ -72,55 +73,56 @@ <combo_box.item label="Objekt bezahlen" name="Payobject"/> <combo_box.item label="Öffnen" name="Open"/> </combo_box> - <check_box label="Zum Verkauf:" name="checkbox for sale"/> - <combo_box name="sale type"> - <combo_box.item label="Kopieren" name="Copy"/> - <combo_box.item label="Inhalte" name="Contents"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Preis: L$" name="Edit Cost"/> - <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> - <panel name="perms_build"> + <panel name="perms_inv"> <text name="perm_modify"> Sie können dieses Objekt bearbeiten. </text> <text name="Anyone can:"> Jeder: </text> - <check_box label="Bewegen" name="checkbox allow everyone move"/> <check_box label="Kopieren" name="checkbox allow everyone copy"/> - <text name="Next owner can:"> + <check_box label="Bewegen" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> + <text name="NextOwnerLabel"> Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="checkbox next owner can modify"/> <check_box label="Kopieren" name="checkbox next owner can copy"/> <check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> </panel> + <check_box label="Zum Verkauf" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Kopieren" name="Copy"/> + <combo_box.item label="Inhalte" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preis: L$" name="Edit Cost"/> + <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> </panel> <panel name="button_panel"> - <button label="Bearbeiten" name="edit_btn"/> <button label="Öffnen" name="open_btn"/> <button label="Zahlen" name="pay_btn"/> <button label="Kaufen" name="buy_btn"/> - <button label="Abbrechen" name="cancel_btn"/> - <button label="Speichern" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 1488f615a32..29c07f9f660 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -10,6 +10,9 @@ <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life-Grid: </string> @@ -49,6 +52,9 @@ <string name="LoginInitializingMultimedia"> Multimedia wird initialisiert... </string> + <string name="LoginInitializingFonts"> + Schriftarten werden geladen... + </string> <string name="LoginVerifyingCache"> Cache-Dateien werden überprüft (dauert 60-90 Sekunden)... </string> @@ -79,6 +85,9 @@ <string name="LoginDownloadingClothing"> Kleidung wird geladen... </string> + <string name="LoginFailedNoNetwork"> + Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. + </string> <string name="Quit"> Beenden </string> @@ -174,7 +183,7 @@ Karte anzeigen für </string> <string name="BUTTON_CLOSE_DARWIN"> - Schließen (⌘W) + Schließen (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> Schließen (Strg+W) @@ -191,9 +200,6 @@ <string name="BUTTON_DOCK"> Andocken </string> - <string name="BUTTON_UNDOCK"> - Abkoppeln - </string> <string name="BUTTON_HELP"> Hilfe anzeigen </string> @@ -626,11 +632,14 @@ <string name="ControlYourCamera"> Kamerasteuerung </string> + <string name="NotConnected"> + Nicht verbunden + </string> <string name="SIM_ACCESS_PG"> - PG + Allgemein </string> <string name="SIM_ACCESS_MATURE"> - Mature + Moderat </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -818,6 +827,9 @@ <string name="InventoryNoMatchingItems"> Im Inventar wurden keine passenden Artikel gefunden. </string> + <string name="FavoritesNoMatchingItems"> + Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen. + </string> <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> @@ -1288,6 +1300,156 @@ <string name="RegionInfoAllowedGroups"> Zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS]) </string> + <string name="ScriptLimitsParcelScriptMemory"> + Parzellenskript-Speicher + </string> + <string name="ScriptLimitsParcelsOwned"> + Aufgeführte Parzellen: [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + Verwendeter Speicher: [COUNT] KB von [MAX] KB; [AVAILABLE] KB verfügbar + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + Verwendeter Speicher: [COUNT] KB + </string> + <string name="ScriptLimitsParcelScriptURLs"> + Parzelleskript-URLs + </string> + <string name="ScriptLimitsURLsUsed"> + Verwendete URLs: [COUNT] von [MAX]; [AVAILABLE] verfügbar + </string> + <string name="ScriptLimitsURLsUsedSimple"> + Verwendete URLs: [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + Fehler bei Informationsabruf + </string> + <string name="ScriptLimitsRequestWrongRegion"> + Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar + </string> + <string name="ScriptLimitsRequestWaiting"> + Informationen werden abgerufen... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + Sie sind nicht berechtigt, diese Parzelle zu untersuchen. + </string> + <string name="SITTING_ON"> + sitzt auf + </string> + <string name="ATTACH_CHEST"> + Brust + </string> + <string name="ATTACH_HEAD"> + Kopf + </string> + <string name="ATTACH_LSHOULDER"> + Linke Schulter + </string> + <string name="ATTACH_RSHOULDER"> + Rechte Schulter + </string> + <string name="ATTACH_LHAND"> + Linke Hand + </string> + <string name="ATTACH_RHAND"> + Rechte Hand + </string> + <string name="ATTACH_LFOOT"> + Linker Fuß + </string> + <string name="ATTACH_RFOOT"> + Rechter Fuß + </string> + <string name="ATTACH_BACK"> + Hinten + </string> + <string name="ATTACH_PELVIS"> + Becken + </string> + <string name="ATTACH_MOUTH"> + Mund + </string> + <string name="ATTACH_CHIN"> + Kinn + </string> + <string name="ATTACH_LEAR"> + Linkes Ohr + </string> + <string name="ATTACH_REAR"> + Rechtes Ohr + </string> + <string name="ATTACH_LEYE"> + Linkes Auge + </string> + <string name="ATTACH_REYE"> + Rechtes Auge + </string> + <string name="ATTACH_NOSE"> + Nase + </string> + <string name="ATTACH_RUARM"> + Rechter Oberarm + </string> + <string name="ATTACH_RLARM"> + Rechter Unterarm + </string> + <string name="ATTACH_LUARM"> + Linker Oberarm + </string> + <string name="ATTACH_LLARM"> + Linker Unterarm + </string> + <string name="ATTACH_RHIP"> + Rechte Hüfte + </string> + <string name="ATTACH_RULEG"> + Rechter Oberschenkel + </string> + <string name="ATTACH_RLLEG"> + Rechter Unterschenkel + </string> + <string name="ATTACH_LHIP"> + Linke Hüfte + </string> + <string name="ATTACH_LULEG"> + Linker Oberschenkel + </string> + <string name="ATTACH_LLLEG"> + Linker Unterschenkel + </string> + <string name="ATTACH_BELLY"> + Bauch + </string> + <string name="ATTACH_RPEC"> + Rechts + </string> + <string name="ATTACH_LPEC"> + Linke Brust + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD Mitte 2 + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUD oben rechts + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD oben Mitte + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD oben links + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD Mitte 1 + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD unten links + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD unten + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD unten rechts + </string> <string name="CursorPos"> Zeile [LINE], Spalte [COLUMN] </string> @@ -1338,6 +1500,12 @@ <string name="ClassifiedUpdateAfterPublish"> (wird nach Veröffentlichung aktualisiert) </string> + <string name="NoPicksClassifiedsText"> + Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt + </string> + <string name="PicksClassifiedsLoadingText"> + Wird geladen... + </string> <string name="MultiPreviewTitle"> Vorschau </string> @@ -1414,23 +1582,35 @@ Unbekanntes Dateiformat .%s Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh </string> + <string name="MuteObject2"> + Ignorieren + </string> + <string name="MuteAvatar"> + Ignorieren + </string> + <string name="UnmuteObject"> + Freischalten + </string> + <string name="UnmuteAvatar"> + Freischalten + </string> <string name="AddLandmarkNavBarMenu"> - Landmarke hinzufügen... + Zu meinen Landmarken hinzufügen... </string> <string name="EditLandmarkNavBarMenu"> - Landmarke bearbeiten... + Meine Landmarken bearbeiten... </string> <string name="accel-mac-control"> - ⌃ + ⌃ </string> <string name="accel-mac-command"> - ⌘ + ⌘ </string> <string name="accel-mac-option"> - ⌥ + ⌥ </string> <string name="accel-mac-shift"> - ⇧ + ⇧ </string> <string name="accel-win-control"> Strg+ @@ -1616,7 +1796,7 @@ Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem Syste Unbehebbarer Fehler </string> <string name="MBRequiresAltiVec"> - [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später). + [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später). </string> <string name="MBAlreadyRunning"> [APP_NAME] läuft bereits. @@ -1628,7 +1808,7 @@ Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte ne Möchten Sie einen Absturz-Bericht einschicken? </string> <string name="MBAlert"> - Alarm + Benachrichtigung </string> <string name="MBNoDirectX"> [APP_NAME] kann DirectX 9.0b oder höher nicht feststellen. @@ -2010,12 +2190,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Eyes Bugged"> Glubschaugen </string> - <string name="Eyes Shear Left Up"> - Augen Verzerrung links hoch - </string> - <string name="Eyes Shear Right Up"> - Augen Verzerrung rechts hoch - </string> <string name="Face Shear"> Gesichtsverzerrung </string> @@ -3018,6 +3192,27 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="LocationCtrlComboBtnTooltip"> Mein Reiseverlauf </string> + <string name="LocationCtrlForSaleTooltip"> + Dieses Land kaufen + </string> + <string name="LocationCtrlVoiceTooltip"> + Voice hier nicht möglich + </string> + <string name="LocationCtrlFlyTooltip"> + Fliegen ist unzulässig + </string> + <string name="LocationCtrlPushTooltip"> + Kein Stoßen + </string> + <string name="LocationCtrlBuildTooltip"> + Bauen/Fallen lassen von Objekten ist verboten + </string> + <string name="LocationCtrlScriptsTooltip"> + Skripte sind unzulässig + </string> + <string name="LocationCtrlDamageTooltip"> + Gesundheit + </string> <string name="UpdaterWindowTitle"> [APP_NAME] Aktualisierung </string> @@ -3075,6 +3270,33 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="IM_moderator_label"> (Moderator) </string> + <string name="started_call"> + haben/hat einen Anruf initiiert + </string> + <string name="joined_call"> + ist dem Gespräch beigetreten + </string> + <string name="ringing-im"> + Verbindung wird hergestellt... + </string> + <string name="connected-im"> + Verbunden. Klicken Sie auf Anruf beenden, um die Verbindung zu trennen + </string> + <string name="hang_up-im"> + Anruf wurde beendet + </string> + <string name="answering-im"> + Wird verbunden... + </string> + <string name="conference-title"> + Ad-hoc-Konferenz + </string> + <string name="inventory_item_offered-im"> + Inventarobjekt angeboten + </string> + <string name="share_alert"> + Objekte aus dem Inventar hier her ziehen + </string> <string name="only_user_message"> Sie sind der einzige Benutzer in dieser Sitzung. </string> @@ -3084,6 +3306,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="invite_message"> Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen. </string> + <string name="muted_message"> + Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet. + </string> + <string name="generic"> + Fehler bei Anfrage, bitte versuchen Sie es später. + </string> <string name="generic_request_error"> Fehler bei Anfrage, bitte versuchen Sie es später. </string> @@ -3102,19 +3330,37 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="not_a_mod_error"> Sie sind kein Sitzungsmoderator. </string> + <string name="muted"> + Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert. + </string> <string name="muted_error"> Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert. </string> <string name="add_session_event"> Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden. </string> + <string name="message"> + Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden. + </string> <string name="message_session_event"> Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden. </string> + <string name="mute"> + Fehler während Moderation. + </string> + <string name="removed"> + Sie wurden von der Gruppe ausgeschlossen. + </string> <string name="removed_from_group"> Sie wurden von der Gruppe ausgeschlossen. </string> <string name="close_on_no_ability"> Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen. </string> + <string name="unread_chat_single"> + [SOURCES] hat etwas Neues gesagt + </string> + <string name="unread_chat_multiple"> + [SOURCES] haben etwas Neues gesagt + </string> </strings> -- GitLab From 25ddb4f261ebedd8d4ab5b0c26bd3af24ffaef03 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Tue, 26 Jan 2010 15:03:41 -0800 Subject: [PATCH 131/521] DEV-43688 cycle3 for JA --- .../default/xui/ja/floater_about_land.xml | 130 +++--- .../xui/ja/floater_animation_preview.xml | 5 +- .../xui/ja/floater_avatar_textures.xml | 62 +-- .../default/xui/ja/floater_bulk_perms.xml | 2 +- .../default/xui/ja/floater_buy_currency.xml | 388 +++++++++++++++--- .../default/xui/ja/floater_color_picker.xml | 2 +- .../default/xui/ja/floater_customize.xml | 58 ++- .../default/xui/ja/floater_god_tools.xml | 2 +- .../default/xui/ja/floater_im_container.xml | 2 +- .../default/xui/ja/floater_incoming_call.xml | 6 + .../default/xui/ja/floater_lsl_guide.xml | 2 +- .../default/xui/ja/floater_media_browser.xml | 2 +- .../default/xui/ja/floater_outfit_save_as.xml | 11 + .../default/xui/ja/floater_outgoing_call.xml | 9 + .../default/xui/ja/floater_preferences.xml | 2 +- .../xui/ja/floater_preview_gesture.xml | 3 + .../xui/ja/floater_preview_notecard.xml | 4 +- .../xui/ja/floater_preview_texture.xml | 5 +- .../default/xui/ja/floater_report_abuse.xml | 6 +- .../default/xui/ja/floater_script_limits.xml | 2 + .../skins/default/xui/ja/floater_search.xml | 7 + .../default/xui/ja/floater_select_key.xml | 6 +- .../default/xui/ja/floater_sell_land.xml | 2 +- .../skins/default/xui/ja/floater_snapshot.xml | 18 +- .../skins/default/xui/ja/floater_sys_well.xml | 9 +- .../skins/default/xui/ja/floater_telehub.xml | 8 +- .../default/xui/ja/floater_texture_ctrl.xml | 2 +- .../skins/default/xui/ja/floater_tools.xml | 13 +- .../default/xui/ja/floater_top_objects.xml | 69 ++-- .../default/xui/ja/floater_voice_controls.xml | 30 +- .../xui/ja/floater_whitelist_entry.xml | 2 +- .../default/xui/ja/floater_window_size.xml | 17 + .../default/xui/ja/floater_world_map.xml | 129 +++--- .../skins/default/xui/ja/inspect_avatar.xml | 10 +- .../skins/default/xui/ja/inspect_group.xml | 1 + .../default/xui/ja/menu_attachment_other.xml | 17 + .../default/xui/ja/menu_attachment_self.xml | 12 + .../skins/default/xui/ja/menu_avatar_icon.xml | 2 +- .../default/xui/ja/menu_avatar_other.xml | 16 + .../skins/default/xui/ja/menu_avatar_self.xml | 27 ++ .../skins/default/xui/ja/menu_bottomtray.xml | 5 + .../default/xui/ja/menu_im_well_button.xml | 4 + .../default/xui/ja/menu_imchiclet_adhoc.xml | 4 + .../default/xui/ja/menu_imchiclet_p2p.xml | 2 +- .../xui/ja/menu_inspect_avatar_gear.xml | 1 + .../skins/default/xui/ja/menu_inventory.xml | 10 +- .../default/xui/ja/menu_inventory_add.xml | 2 +- .../xui/ja/menu_inventory_gear_default.xml | 2 + .../skins/default/xui/ja/menu_land.xml | 9 + .../skins/default/xui/ja/menu_login.xml | 6 +- .../xui/ja/menu_notification_well_button.xml | 4 + .../skins/default/xui/ja/menu_object.xml | 25 ++ .../default/xui/ja/menu_participant_list.xml | 19 +- .../default/xui/ja/menu_people_groups.xml | 8 + .../default/xui/ja/menu_people_nearby.xml | 1 + .../default/xui/ja/menu_profile_overflow.xml | 4 + .../skins/default/xui/ja/menu_viewer.xml | 44 +- .../skins/default/xui/ja/mime_types_linux.xml | 217 ++++++++++ .../skins/default/xui/ja/mime_types_mac.xml | 217 ++++++++++ .../skins/default/xui/ja/notifications.xml | 187 ++++----- .../xui/ja/panel_active_object_row.xml | 9 + .../xui/ja/panel_adhoc_control_panel.xml | 16 +- .../default/xui/ja/panel_avatar_list_item.xml | 1 + .../xui/ja/panel_block_list_sidetray.xml | 2 +- .../skins/default/xui/ja/panel_bottomtray.xml | 12 +- .../default/xui/ja/panel_classified_info.xml | 4 +- .../default/xui/ja/panel_edit_classified.xml | 4 +- .../default/xui/ja/panel_edit_profile.xml | 5 +- .../skins/default/xui/ja/panel_friends.xml | 59 +-- .../xui/ja/panel_group_control_panel.xml | 20 +- .../default/xui/ja/panel_group_general.xml | 8 +- .../xui/ja/panel_group_info_sidetray.xml | 2 + .../default/xui/ja/panel_group_invite.xml | 7 +- .../default/xui/ja/panel_group_list_item.xml | 1 + .../default/xui/ja/panel_group_notices.xml | 14 +- .../default/xui/ja/panel_group_notify.xml | 2 +- .../default/xui/ja/panel_im_control_panel.xml | 32 +- .../default/xui/ja/panel_landmark_info.xml | 1 + .../skins/default/xui/ja/panel_login.xml | 68 +-- .../default/xui/ja/panel_main_inventory.xml | 8 +- .../xui/ja/panel_media_settings_general.xml | 22 +- .../ja/panel_media_settings_permissions.xml | 25 +- .../xui/ja/panel_media_settings_security.xml | 8 +- .../skins/default/xui/ja/panel_my_profile.xml | 80 ++-- .../default/xui/ja/panel_navigation_bar.xml | 3 + .../skins/default/xui/ja/panel_notes.xml | 18 +- .../xui/ja/panel_outfits_inventory.xml | 15 +- .../panel_outfits_inventory_gear_default.xml | 6 +- .../skins/default/xui/ja/panel_people.xml | 1 + .../skins/default/xui/ja/panel_picks.xml | 12 +- .../default/xui/ja/panel_place_profile.xml | 3 +- .../skins/default/xui/ja/panel_places.xml | 7 +- .../xui/ja/panel_preferences_alerts.xml | 4 +- .../default/xui/ja/panel_preferences_chat.xml | 10 +- .../xui/ja/panel_preferences_general.xml | 26 +- .../xui/ja/panel_preferences_privacy.xml | 6 +- .../xui/ja/panel_preferences_setup.xml | 8 +- .../xui/ja/panel_preferences_sound.xml | 2 +- .../xui/ja/panel_prim_media_controls.xml | 52 ++- .../skins/default/xui/ja/panel_profile.xml | 77 ++-- .../default/xui/ja/panel_region_estate.xml | 9 +- .../default/xui/ja/panel_region_general.xml | 6 +- .../xui/ja/panel_region_general_layout.xml | 43 ++ .../default/xui/ja/panel_region_texture.xml | 5 +- .../xui/ja/panel_script_limits_my_avatar.xml | 13 + .../ja/panel_script_limits_region_memory.xml | 24 ++ .../skins/default/xui/ja/panel_side_tray.xml | 11 +- .../skins/default/xui/ja/panel_status_bar.xml | 3 +- .../default/xui/ja/panel_teleport_history.xml | 4 +- .../xui/ja/panel_teleport_history_item.xml | 1 + .../skins/default/xui/ja/role_actions.xml | 249 +++-------- .../default/xui/ja/sidepanel_appearance.xml | 8 +- .../default/xui/ja/sidepanel_inventory.xml | 2 +- .../default/xui/ja/sidepanel_item_info.xml | 57 ++- .../default/xui/ja/sidepanel_task_info.xml | 78 ++-- .../newview/skins/default/xui/ja/strings.xml | 286 ++++++++++++- 116 files changed, 2248 insertions(+), 1082 deletions(-) create mode 100644 indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_script_limits.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_window_size.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_im_well_button.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_land.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_notification_well_button.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_object.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_people_groups.xml create mode 100644 indra/newview/skins/default/xui/ja/mime_types_linux.xml create mode 100644 indra/newview/skins/default/xui/ja/mime_types_mac.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_active_object_row.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_region_general_layout.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index 4b134526e07..71a38391cd4 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -36,10 +36,10 @@ (グループ所有) </panel.string> <panel.string name="profile_text"> - プãƒãƒ•ィール... + プãƒãƒ•ィール </panel.string> <panel.string name="info_text"> - æƒ…å ±... + æƒ…å ± </panel.string> <panel.string name="public_text"> (公共) @@ -51,8 +51,7 @@ (購入審査ä¸) </panel.string> <panel.string name="no_selection_text"> - 区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 -「世界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ï¼žã€ŒåœŸåœ°æƒ…å ±ã€ã«é€²ã‚€ã‹ã€åˆ¥ã®åŒºç”»ã‚’é¸æŠžã—ã¦ã€è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ + 区画ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。 </panel.string> <text name="Name:"> åå‰ï¼š @@ -79,13 +78,15 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="プãƒãƒ•ィール..." label_selected="プãƒãƒ•ィール..." name="Profile..."/> <text name="Group:"> グループ: </text> - <button label="è¨å®š..." label_selected="è¨å®š..." name="Set..."/> + <text name="GroupText"> + Leyla Linden + </text> + <button label="è¨å®š" label_selected="è¨å®š..." name="Set..."/> <check_box label="グループã¸ã®è²æ¸¡ã‚’許å¯" name="check deed" tool_tip="グループã®ã‚ªãƒ•ィサーã¯ã“ã®åœŸåœ°ã‚’グループã«è²æ¸¡ã§ãã¾ã™ã€‚ãã†ã™ã‚‹ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã®åœŸåœ°å‰²ã‚Šå½“ã¦ã«ã‚ˆã£ã¦ã‚µãƒãƒ¼ãƒˆã•れã¾ã™ã€‚"/> - <button label="è²æ¸¡..." label_selected="è²æ¸¡..." name="Deed..." tool_tip="é¸æŠžã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ィサーã§ã‚ã‚‹ã¨ãã®ã¿ã€åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã™ã€‚"/> + <button label="è²æ¸¡" label_selected="è²æ¸¡..." name="Deed..." tool_tip="é¸æŠžã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ィサーã§ã‚ã‚‹ã¨ãã®ã¿ã€åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã™ã€‚"/> <check_box label="オーナーãŒè²æ¸¡ã¨å…±ã«å¯„付" name="check contrib" tool_tip="土地ãŒã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れるã¨ãã€å‰ã®æ‰€æœ‰è€…ã¯è²æ¸¡ãŒæˆç«‹ã™ã‚‹ã‚ˆã†ã€å分ãªåœŸåœ°ã‚’寄付ã—ã¾ã™ã€‚"/> <text name="For Sale:"> è²©å£²ã®æœ‰ç„¡ï¼š @@ -96,15 +97,15 @@ <text name="For Sale: Price L$[PRICE]."> ä¾¡æ ¼ï¼š L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル) </text> - <button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/> + <button label="土地を売る" label_selected="土地を販売..." name="Sell Land..."/> <text name="For sale to"> 販売先:[BUYER] </text> <text name="Sell with landowners objects in parcel."> - ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚‚è²©å£²ä¾¡æ ¼ã«å«ã¾ã‚Œã¾ã™ + オブジェクトを一緒ã«è²©å£² </text> <text name="Selling with no objects in parcel."> - オブジェクトã¯è²©å£²å¯¾è±¡å¤–ã§ã™ + オブジェクトã¯è²©å£²ã—ãªã„ </text> <button label="土地販売ã®å–り消ã—" label_selected="土地販売ã®å–り消ã—" name="Cancel Land Sale"/> <text name="Claimed:"> @@ -125,12 +126,13 @@ <text name="DwellText"> 誤 </text> - <button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/> - <button label="グループ用ã«è³¼å…¥..." label_selected="グループ用ã«è³¼å…¥..." name="Buy For Group..."/> - <button label="å…¥å ´è¨±å¯ã‚’購入..." label_selected="å…¥å ´è¨±å¯ã‚’購入..." left="130" name="Buy Pass..." tool_tip="ã“ã®åœŸåœ°ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã€‚" width="125"/> - <button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/> - <button label="土地ã®è¿”é‚„ã‚’è¦æ±‚..." label_selected="土地ã®è¿”é‚„ã‚’è¦æ±‚..." name="Reclaim Land..."/> - <button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="åœŸåœ°ãŒæ‰€æœ‰ã•れã¦ãŠã‚Šã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¨å®šã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚オークションã®å¯¾è±¡ã«ãªã£ã¦ã„ãªã„ã“ã¨ã‚‚å¿…è¦æ¡ä»¶ã§ã™ã€‚"/> + <button label="土地ã®è³¼å…¥" label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/> + <button label="ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±" name="Scripts..."/> + <button label="グループã«è³¼å…¥" label_selected="グループ用ã«è³¼å…¥..." name="Buy For Group..."/> + <button label="å…¥å ´è¨±å¯ã‚’購入" label_selected="å…¥å ´è¨±å¯ã‚’購入..." left="130" name="Buy Pass..." tool_tip="ã“ã®åœŸåœ°ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã€‚" width="125"/> + <button label="åœŸåœ°ã®æ”¾æ£„" label_selected="土地を放棄..." name="Abandon Land..."/> + <button label="土地をå–り戻ã™" label_selected="土地ã®è¿”é‚„ã‚’è¦æ±‚..." name="Reclaim Land..."/> + <button label="リンデンセール" label_selected="Lindenセール..." name="Linden Sale..." tool_tip="åœŸåœ°ãŒæ‰€æœ‰ã•れã¦ãŠã‚Šã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¨å®šã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚オークションã®å¯¾è±¡ã«ãªã£ã¦ã„ãªã„ã“ã¨ã‚‚å¿…è¦æ¡ä»¶ã§ã™ã€‚"/> </panel> <panel label="約款" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -149,9 +151,6 @@ <text font="SansSerifLarge" name="estate_section_lbl"> ä¸å‹•産: </text> - <text name="estate_name_lbl"> - åå‰ï¼š - </text> <text name="estate_name_text"> メインランド </text> @@ -170,11 +169,8 @@ <text font="SansSerifLarge" name="region_section_lbl"> 地域: </text> - <text name="region_name_lbl"> - åå‰ï¼š - </text> <text name="region_name_text"> - Leyla + EricaVille </text> <text name="region_landtype_lbl"> 種類: @@ -213,7 +209,7 @@ 地域オブジェクトボーナスè¦å› : [BONUS] </text> <text name="Simulator primitive usage:" width="500"> - 地域全体ã®ãƒ—リム使用状æ³ï¼š + プリム使用状æ³ï¼š </text> <text left="200" name="objects_available"> [MAX]ã®å†…[COUNT]([AVAILABLE]利用å¯èƒ½ï¼‰ @@ -237,7 +233,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowOwner" right="-145"/> - <button label="è¿”å´..." label_selected="è¿”å´..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> + <button label="è¿”å´" label_selected="è¿”å´..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> <text name="Set to group:"> グループã«è¨å®šï¼š </text> @@ -245,7 +241,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowGroup" right="-145"/> - <button label="è¿”å´..." label_selected="è¿”å´..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> + <button label="è¿”å´" label_selected="è¿”å´..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> <text name="Owned by others:"> 他人ã«ã‚ˆã‚‹æ‰€æœ‰ï¼š </text> @@ -253,7 +249,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowOther" right="-145"/> - <button label="è¿”å´..." label_selected="è¿”å´..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> + <button label="è¿”å´" label_selected="è¿”å´..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーã«è¿”å´ã—ã¾ã™"/> <text name="Selected / sat upon:"> é¸æŠžæ¸ˆã¿ï¼æ±ºå®šæ¸ˆã¿ï¼š </text> @@ -261,14 +257,14 @@ [COUNT] </text> <text name="Autoreturn" width="500"> - ä»–ã®ä½äººã®ã‚ªãƒ–ジェクトã®è‡ªå‹•è¿”å´(分ã€0ã§è‡ªå‹•è¿”å´ãªã—) + 他人ã®ã‚ªãƒ–ジェクトを自動返å´ï¼ˆåˆ†å˜ä½ã€0ã§è‡ªå‹•è¿”å´ãªã—): </text> <line_editor left_delta="5" name="clean other time" right="-80"/> <text name="Object Owners:" width="150"> オブジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ï¼š </text> - <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List"/> - <button label="オブジェクトã®è¿”å´..." label_selected="オブジェクトã®è¿”å´..." left="256" name="Return objects..."/> + <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトã®ãƒªã‚¹ãƒˆã‚’æ›´æ–°"/> + <button label="オブジェクトを返å´ã™ã‚‹" label_selected="オブジェクトã®è¿”å´..." left="256" name="Return objects..."/> <name_list label="カウント" name="owner list"> <name_list.columns label="タイプ" name="type"/> <name_list.columns name="online_status"/> @@ -289,13 +285,13 @@ ã‚ãªãŸã¯ã“ã®åŒºç”»ã®è¨å®šç·¨é›†ãŒã§ããªã„ãŸã‚ã€ã“ã®ã‚ªãƒ—ションã¯ç„¡åйã§ã™ã€‚ </panel.string> <panel.string name="mature_check_mature"> - Matureコンテンツ + 控ãˆã‚コンテンツ </panel.string> <panel.string name="mature_check_adult"> Adultコンテンツ </panel.string> <panel.string name="mature_check_mature_tooltip"> - ã‚ãªãŸã®åŒºç”»æƒ…å ±åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯Matureã¨ã•れã¦ã„ã¾ã™ã€‚ + ã‚ãªãŸã®åŒºç”»æƒ…å ±åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯æŽ§ãˆã‚ã¨ã•れã¦ã„ã¾ã™ã€‚ </panel.string> <panel.string name="mature_check_adult_tooltip"> ã‚ãªãŸã®åŒºç”»æƒ…å ±åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯Adultã¨ã•れã¦ã„ã¾ã™ã€‚ @@ -310,31 +306,31 @@ ãƒ—ãƒƒã‚·ãƒ³ã‚°ã‚’åˆ¶é™ (地域優先) </panel.string> <text name="allow_label"> - ä»–ã®ä½äººã«ä»¥ä¸‹ã‚’許å¯ï¼š + ä»–ã®ä½äººã¸ã®è¨±å¯ï¼š </text> <check_box label="地形を編集" name="edit land check" tool_tip="ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã€ä»–人ãŒã‚ãªãŸã®åœŸåœ°ã®åœ°å½¢ç·¨é›†ã‚’行ã†ã“ã¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã¦ãŠãã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚外ã—ãŸçŠ¶æ…‹ã§ã‚ãªãŸã®åœŸåœ°ã®åœ°å½¢ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚"/> <check_box label="飛行" name="check fly" tool_tip="ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã“ã®åœŸåœ°ã§ã®é£›è¡ŒãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ãƒã‚§ãƒƒã‚¯ã‚’外ã™ã¨åœŸåœ°ã«å…¥ã‚‹éš›ã¨é€šã‚ŠéŽãŽã‚‹ã¨ãã®ã¿é£›è¡Œå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚"/> <text left="138" name="allow_label2" width="144"> - オブジェクトã®ä½œæˆï¼š + 制作: </text> - <check_box label="ã™ã¹ã¦ã®ä½äºº" left="280" name="edit objects check"/> + <check_box label="全員" left="280" name="edit objects check"/> <check_box label="グループ" left="380" name="edit group objects check"/> <text left="138" name="allow_label3" width="144"> オブジェクトã®é€²å…¥ï¼š </text> - <check_box label="ã™ã¹ã¦ã®ä½äºº" left="280" name="all object entry check"/> + <check_box label="全員" left="280" name="all object entry check"/> <check_box label="グループ" left="380" name="group object entry check"/> <text left="138" name="allow_label4" width="144"> スクリプトã®å®Ÿè¡Œï¼š </text> - <check_box label="ã™ã¹ã¦ã®ä½äºº" left="280" name="check other scripts"/> + <check_box label="全員" left="280" name="check other scripts"/> <check_box label="グループ" left="380" name="check group scripts"/> <text name="land_options_label"> 土地オプション: </text> <check_box label="安全(ダメージãªã—)" name="check safe" tool_tip="ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã“ã®åœŸåœ°ã§ã®ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚³ãƒ³ãƒãƒƒãƒˆãŒç„¡åйã«ãªã‚Šã€ã€Œå®‰å…¨ã€ã«è¨å®šã•れã¾ã™ã€‚ ãƒã‚§ãƒƒã‚¯ã‚’外ã™ã¨ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚³ãƒ³ãƒãƒƒãƒˆãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚"/> <check_box label="プッシングを制é™" name="PushRestrictCheck" tool_tip="スクリプトã«ã‚ˆã‚‹ãƒ—ッシングを制é™ã—ã¾ã™ã€‚ ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚ãªãŸã®åœŸåœ°ã§ã®ç ´å£Šçš„行動を妨ã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> - <check_box label="検索ã«è¡¨ç¤ºï¼žï¼ˆé€±L$30)以下ã®å ´æ‰€" name="ShowDirectoryCheck" tool_tip="æ¤œç´¢çµæžœã§ã“ã®åŒºç”»ã‚’表示ã•ã›ã‚‹"/> + <check_box label="検索ã«åŒºç”»ã‚’表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="æ¤œç´¢çµæžœã§ã“ã®åŒºç”»ã‚’表示ã•ã›ã‚‹"/> <combo_box name="land category with adult"> <combo_box.item label="全カテゴリ" name="item0"/> <combo_box.item label="Linden所在地" name="item1"/> @@ -364,7 +360,7 @@ <combo_box.item label="ショッピング" name="item11"/> <combo_box.item label="ãã®ä»–" name="item12"/> </combo_box> - <check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/> + <check_box label="控ãˆã‚コンテンツ" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> スナップショット: </text> @@ -389,27 +385,24 @@ </text> <combo_box name="media type" tool_tip="URL ãŒå‹•ç”»ã€ã‚¦ã‚§ãƒ–・ページã€ãã®ä»–ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã®å ´åˆã«æŒ‡å®šã—ã¾ã™"/> <text name="at URL:"> - ホームURL: + ホームページ: </text> - <button label="è¨å®š..." label_selected="è¨å®š..." name="set_media_url"/> + <button label="è¨å®š" label_selected="è¨å®š..." name="set_media_url"/> <text name="CurrentURL:"> - ç¾åœ¨ã® URL: + ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ï¼š </text> - <button label="リセット..." label_selected="リセット..." name="reset_media_url"/> + <button label="リセット..." label_selected="リセット..." name="reset_media_url" tool_tip="URLã‚’æ›´æ–°"/> <check_box label="URL ã‚’éžè¡¨ç¤º" name="hide_media_url" tool_tip="ã“ã®ã‚ªãƒ—ションをオンã«ã™ã‚‹ã¨ã€è¨±å¯ãªã—ã§ã“ã®åŒºç”»æƒ…å ±ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„るユーザーã«ã¯ãƒ¡ãƒ‡ã‚£ã‚¢ URL ãŒè¡¨ç¤ºã•れã¾ã›ã‚“。 ã“れ㯠HTML タイプã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ã®ã§ã”注æ„ãã ã•ã„。"/> <text name="Description:"> 説明: </text> <line_editor name="url_description" tool_tip="ï¼»å†ç”Ÿï¼½/ï¼»ãƒãƒ¼ãƒ‰ï¼½ãƒœã‚¿ãƒ³ã®éš£ã«è¡¨ç¤ºã•れるテã‚スト"/> <text name="Media texture:"> - テクスム-ãƒ£å–æ›¿ï¼š + テクスãƒãƒ£ã®ç½®ãæ›ãˆï¼š </text> <texture_picker label="" name="media texture" tool_tip="写真をクリックã—ã¦é¸æŠž"/> <text name="replace_texture_help" width="290"> - ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’使用ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒ—レイをクリックã™ã‚‹ã¨ã€ãƒ ービーや Web ページを表示ã—ã¾ã™ã€‚ - -テクスãƒãƒ£ã‚’変更ã™ã‚‹ã«ã¯ã‚µãƒ ãƒã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’使用ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒ—レイをクリックã™ã‚‹ã¨ã€ãƒ ービーや Web ページを表示ã—ã¾ã™ã€‚ テクスãƒãƒ£ã‚’変更ã™ã‚‹ã«ã¯ã‚µãƒ ãƒã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。 </text> <check_box label="スケールを自動è¨å®š" name="media_auto_scale" tool_tip="ã“ã®ã‚ªãƒ—ションをãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€ã“ã®åŒºç”»ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ã‚¹ã‚±ãƒ¼ãƒ«ãŒè‡ªå‹•çš„ã«è¨å®šã•れã¾ã™ã€‚ 動作速度ã¨ç”»è³ªãŒå°‘ã—低下ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ãŒã€ä»–ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ã®ã‚¹ã‚±ãƒ¼ãƒªãƒ³ã‚°ã‚„整列ãŒå¿…è¦ã«ãªã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。"/> <text name="media_size" tool_tip="レンダリングã™ã‚‹ã‚¦ã‚§ãƒ–・メディアã®ã‚µã‚¤ã‚ºã€‚デフォルト㮠0 ã®ã¾ã¾ã«ã—ã¾ã™ã€‚"> @@ -425,7 +418,7 @@ </text> <check_box label="ループ" name="media_loop" tool_tip="メディアをループå†ç”Ÿã—ã¾ã™ã€‚ メディアã®å†ç”ŸãŒçµ‚ã‚ã£ãŸã‚‰ã€æœ€åˆã‹ã‚‰å†ç”Ÿã—ç›´ã—ã¾ã™ã€‚"/> </panel> - <panel label="オーディオ" name="land_audio_panel"> + <panel label="サウンド" name="land_audio_panel"> <text name="MusicURL:"> 音楽 URL: </text> @@ -441,18 +434,21 @@ <check_box label="ã“ã®åŒºç”»ã§ã®ãƒœã‚¤ã‚¹ä½¿ç”¨ã‚’制é™" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="アクセス" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (エステートã«é™å®šï¼‰ + </panel.string> <panel.string name="estate_override"> 1ã¤ä»¥ä¸Šã®ã‚ªãƒ—ションãŒã€ä¸å‹•産レベルã§è¨å®šã•れã¦ã„ã¾ã™ã€‚ </panel.string> <text name="Limit access to this parcel to:"> ã“ã®åŒºç”»ã«ã‚¢ã‚¯ã‚»ã‚¹ </text> - <check_box label="パブリック・アクセスを許å¯" name="public_access"/> + <check_box label="ãƒ‘ãƒ–ãƒªãƒƒã‚¯ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¨±å¯ [MATURITY]" name="public_access"/> <text name="Only Allow"> - 次ã®ä½äººã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’ブãƒãƒƒã‚¯ï¼š + 次ã®ä½äººã®ã‚¢ã‚¯ã‚»ã‚¹ç¦æ¢ï¼š </text> - <check_box label="Linden Labã«æ”¯æ‰•ã„æƒ…å ±ã‚’ç™»éŒ²ã—ã¦ã„ãªã„ä½äºº" name="limit_payment" tool_tip="æ”¯æ‰•ã„æƒ…å ±æœªç¢ºèªã®ä½äººã‚’排除ã™ã‚‹"/> - <check_box label="年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„æˆäººã®ä½äºº" name="limit_age_verified" tool_tip="年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„ä½äººã‚’ç«‹å…¥ç¦æ¢ã«ã—ã¾ã™ã€‚ 詳ã—ã„æƒ…å ±ã¯ [SUPPORT_SITE] ã‚’ã”覧下ã•ã„。"/> + <check_box label="æ”¯æ‰•æƒ…å ±ç™»éŒ²æ¸ˆ [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="未確èªã®ä½äººã®ç«‹å…¥ã‚’ç¦æ¢ã—ã¾ã™ã€‚"/> + <check_box label="å¹´é½¢ç¢ºèª [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„ä½äººã®ç«‹å…¥ã‚’ç¦æ¢ã—ã¾ã™ã€‚ 詳ã—ã„æƒ…å ±ã¯ [SUPPORT_SITE] ã‚’ã”覧下ã•ã„。"/> <check_box label="グループ・アクセスを許å¯ï¼š[GROUP]" name="GroupCheck" tool_tip="[一般]タブã§ã€ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã¦ãã ã•ã„。"/> <check_box label="å…¥å ´è¨±å¯ã‚’販売:" name="PassCheck" tool_tip="ã“ã®åŒºç”»ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯"/> <combo_box name="pass_combo"> @@ -461,18 +457,22 @@ </combo_box> <spinner label="ä¾¡æ ¼ï¼ˆL$):" name="PriceSpin"/> <spinner label="アクセス時間:" name="HoursSpin"/> - <text label="常ã«è¨±å¯" name="AllowedText"> - 許å¯ã•れãŸä½äºº - </text> - <name_list name="AccessList" tool_tip="([LISTED]リスト入りã€[MAX]最大)"/> - <button label="è¿½åŠ ..." label_selected="è¿½åŠ ..." name="add_allowed"/> - <button label="削除" label_selected="削除" name="remove_allowed"/> - <text label="ç¦æ¢" name="BanCheck"> - ç¦æ¢ã•れãŸä½äºº - </text> - <name_list name="BannedList" tool_tip="([LISTED]リスト入りã€[MAX]最大)"/> - <button label="è¿½åŠ ..." label_selected="è¿½åŠ ..." name="add_banned"/> - <button label="削除" label_selected="削除" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <text label="常ã«è¨±å¯" name="AllowedText"> + 立入を許å¯ã•れãŸä½äºº + </text> + <name_list name="AccessList" tool_tip="(åˆè¨ˆ[LISTED] äººã€æœ€å¤§ [MAX] 人)"/> + <button label="è¿½åŠ " name="add_allowed"/> + <button label="削除" label_selected="削除" name="remove_allowed"/> + </panel> + <panel name="Banned_layout_panel"> + <text label="ç¦æ¢" name="BanCheck"> + ç«‹å…¥ç¦æ¢ã•れãŸä½äºº + </text> + <name_list name="BannedList" tool_tip="(åˆè¨ˆ [LISTED] äººã€æœ€å¤§ [MAX] 人)"/> + <button label="è¿½åŠ " name="add_banned"/> + <button label="削除" label_selected="削除" name="remove_banned"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml index 9ec4bfc4e78..c355924f33a 100644 --- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml @@ -170,7 +170,8 @@ </combo_box> <spinner label="フェーズイï¾(ç§’)" name="ease_in_time" tool_tip="アニメーションã®ãƒ–レンドイン時間(秒)"/> <spinner label="フェーズアウト(ç§’)" name="ease_out_time" tool_tip="アニメーションã®ãƒ–レンドアウト時間(秒)"/> - <button label="" name="play_btn" tool_tip="アニメーションã®å†ç”Ÿãƒ»ä¸€æ™‚åœæ¢"/> + <button label="" name="play_btn" tool_tip="アニメーションをå†ç”Ÿã™ã‚‹"/> + <button name="pause_btn" tool_tip="ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ä¸€æ™‚åœæ¢ã™ã‚‹"/> <button label="" name="stop_btn" tool_tip="アニメーションã®å†ç”Ÿã‚’åœæ¢"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -178,6 +179,6 @@ Poser 4ã‹ã‚‰ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れãŸBVHファイルを推奨ã—ã¾ã™ã€‚ </text> - <button label="å–り消ã—" name="cancel_btn"/> <button label="アップロードL$[AMOUNT]" name="ok_btn"/> + <button label="å–り消ã—" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml index 4a20c58181f..a199a10823e 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml @@ -10,33 +10,37 @@ åˆæˆãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ </text> <button label="テクスãƒãƒ£IDä¸€è¦§ã‚’ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã«æ›¸ã込む" label_selected="æ¨ã¦ã‚‹" name="Dump"/> - <texture_picker label="髪型" name="hair-baked"/> - <texture_picker label="髪" name="hair_grain"/> - <texture_picker label="髪ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="hair_alpha"/> - <texture_picker label="é " name="head-baked"/> - <texture_picker label="メイクアップ" name="head_bodypaint"/> - <texture_picker label="é 部ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="head_alpha"/> - <texture_picker label="é 部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="head_tattoo"/> - <texture_picker label="ç›®" name="eyes-baked"/> - <texture_picker label="ç›®" name="eyes_iris"/> - <texture_picker label="ç›®ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="eyes_alpha"/> - <texture_picker label="上åŠèº«" name="upper-baked"/> - <texture_picker label="上åŠèº«ã®ãƒœãƒ‡ã‚£ãƒšã‚¤ãƒ³ãƒˆ" name="upper_bodypaint"/> - <texture_picker label="下ç€ã‚·ãƒ£ãƒ„" name="upper_undershirt"/> - <texture_picker label="手袋" name="upper_gloves"/> - <texture_picker label="シャツ" name="upper_shirt"/> - <texture_picker label="上ç€" name="upper_jacket"/> - <texture_picker label="アルファ(上)" name="upper_alpha"/> - <texture_picker label="上部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="upper_tattoo"/> - <texture_picker label="下åŠèº«" name="lower-baked"/> - <texture_picker label="下åŠèº«ã®ãƒœãƒ‡ã‚£ãƒšã‚¤ãƒ³ãƒˆ" name="lower_bodypaint"/> - <texture_picker label="下ç€ãƒ‘ンツ" name="lower_underpants"/> - <texture_picker label="é´ä¸‹" name="lower_socks"/> - <texture_picker label="é´" name="lower_shoes"/> - <texture_picker label="パンツ" name="lower_pants"/> - <texture_picker label="ジャケット" name="lower_jacket"/> - <texture_picker label="アルファ(下)" name="lower_alpha"/> - <texture_picker label="下部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="lower_tattoo"/> - <texture_picker label="スカート" name="skirt-baked"/> - <texture_picker label="スカート" name="skirt"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="髪" name="hair-baked"/> + <texture_picker label="髪" name="hair_grain"/> + <texture_picker label="髪ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="hair_alpha"/> + <texture_picker label="é " name="head-baked"/> + <texture_picker label="メイクアップ" name="head_bodypaint"/> + <texture_picker label="é 部ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="head_alpha"/> + <texture_picker label="é 部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="head_tattoo"/> + <texture_picker label="ç›®" name="eyes-baked"/> + <texture_picker label="ç›®" name="eyes_iris"/> + <texture_picker label="ç›®ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="eyes_alpha"/> + <texture_picker label="上åŠèº«" name="upper-baked"/> + <texture_picker label="上åŠèº«ã®ãƒœãƒ‡ã‚£ãƒšã‚¤ãƒ³ãƒˆ" name="upper_bodypaint"/> + <texture_picker label="下ç€ã‚·ãƒ£ãƒ„" name="upper_undershirt"/> + <texture_picker label="手袋" name="upper_gloves"/> + <texture_picker label="シャツ" name="upper_shirt"/> + <texture_picker label="上ç€" name="upper_jacket"/> + <texture_picker label="アルファ(上)" name="upper_alpha"/> + <texture_picker label="上部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="upper_tattoo"/> + <texture_picker label="下åŠèº«" name="lower-baked"/> + <texture_picker label="下åŠèº«ã®ãƒœãƒ‡ã‚£ãƒšã‚¤ãƒ³ãƒˆ" name="lower_bodypaint"/> + <texture_picker label="下ç€ãƒ‘ンツ" name="lower_underpants"/> + <texture_picker label="é´ä¸‹" name="lower_socks"/> + <texture_picker label="é´" name="lower_shoes"/> + <texture_picker label="パンツ" name="lower_pants"/> + <texture_picker label="ジャケット" name="lower_jacket"/> + <texture_picker label="アルファ(下)" name="lower_alpha"/> + <texture_picker label="下部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="lower_tattoo"/> + <texture_picker label="スカート" name="skirt-baked"/> + <texture_picker label="スカート" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml index 7afe70f4d70..fbbbd85890a 100644 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml @@ -49,6 +49,6 @@ <check_box label="ä¿®æ£" name="next_owner_modify"/> <check_box label="コピー" name="next_owner_copy"/> <check_box initial_value="true" label="å†è²©ãƒ»ãƒ—レゼント" name="next_owner_transfer" tool_tip="æ¬¡ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™"/> - <button label="Ok" name="apply"/> + <button label="OK" name="apply"/> <button label="ã‚ャンセル" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index ffdcf838d3f..d202bf1b9f1 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -1,66 +1,324 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="L$ ã®è³¼å…¥"> - <floater.string name="buy_currency"> - ç´„ [LOCALAMOUNT] ã§ L$ [LINDENS] を購入 - </floater.string> - <text name="info_need_more"> - L$ ãŒè¶³ã‚Šã¾ã›ã‚“ - </text> - <text name="contacting"> - LindeXã¨ã‚³ãƒ³ã‚¿ã‚¯ãƒˆä¸â€¦ - </text> - <text name="info_buying"> - L$ ã®è³¼å…¥ - </text> - <text name="balance_label"> - 残高 - </text> - <text name="balance_amount"> - L$ [AMT] - </text> - <text name="currency_action"> - è³¼å…¥å¸Œæœ›é¡ - </text> - <text name="currency_label"> - L$ - </text> - <line_editor label="L$" name="currency_amt"> - 1234 - </line_editor> - <text name="buying_label"> - ä¾¡æ ¼ - </text> - <text name="currency_est"> - ç´„ [LOCALAMOUNT] - </text> - <text left_delta="3" name="getting_data"> - 見ç©ã‚‚りä¸... - </text> - <text name="buy_action"> - [NAME] L$ [PRICE] - </text> - <text name="total_label"> - æ–°ã—ã„æ®‹é«˜ - </text> - <text name="total_amount"> - L$ [AMT] - </text> - <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate] - </text> - <text name="exchange_rate_note"> - 金é¡ã‚’å†å…¥åŠ›ã—ã¦æœ€æ–°æ›ç®—レートを確èªã—ã¾ã™ã€‚ - </text> - <text name="purchase_warning_repurchase"> - ã“ã®å–引を決定ã™ã‚‹ã¨ã€L$ を購入ã—ã¾ã™ã€‚オブジェクトã¯è³¼å…¥ã—ã¾ã›ã‚“。 - </text> - <text name="purchase_warning_notenough"> - 購入ã—よã†ã¨ã—ã¦ã„ã‚‹ L$ ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚ 金é¡ã‚’上ã’ã¦ãã ã•ã„。 - </text> - <button label="購入ã™ã‚‹" name="buy_btn"/> - <button label="å–り消ã—" name="cancel_btn"/> - <text name="info_cannot_buy"> - 購入ã§ãã¾ã›ã‚“ - </text> - <button label="Web サイトã«ç§»å‹•" name="error_web" width="140"/> +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<floater + legacy_header_height="18" + can_minimize="false" + height="275" + layout="topleft" + title="BUY L$" + name="buy currency" + help_topic="buy_linden_dollars" + single_instance="true" + width="350"> + <floater.string + name="buy_currency"> + Buy L$ [LINDENS] for approx. [LOCALAMOUNT] + </floater.string> + <icon + height="215" + image_name="Linden_Dollar_Background" + layout="topleft" + left="0" + name="normal_background" + top="17" + width="350" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + layout="topleft" + left="20" + height="30" + top="25" + width="300" + name="info_need_more"> + You need more L$ + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + top="246" + left="15" + width="300" + name="contacting"> + Contacting LindeX... + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + layout="topleft" + left="20" + height="30" + top="25" + width="200" + name="info_buying"> + Buy L$ + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + layout="topleft" + left="20" + name="balance_label" + top="65" + width="210"> + I have + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left="200" + name="balance_amount" + top_delta="0" + width="120"> + L$ [AMT] + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + top="95" + layout="topleft" + left="20" + name="currency_action" + width="210"> + I want to buy + </text> + <text + font="SansSerifMedium" + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + top_delta="0" + left="217" + name="currency_label" + width="15"> + L$ + </text> + <line_editor + type="string" + halign="right" + font="SansSerifMedium" + select_on_focus="true" + follows="top|left" + top_delta="-7" + height="22" + label="L$" + left_pad="3" + name="currency_amt" + width="85"> + 1234 + </line_editor> + <text + type="string" + font="SansSerifMedium" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="20" + top="125" + name="buying_label" + width="210"> + For the price + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + text_color="EmphasisColor" + follows="top|left" + halign="right" + height="16" + top_delta="0" + layout="topleft" + left="150" + name="currency_est" + width="170"> + approx. [LOCALAMOUNT] + </text> + <text + type="string" + font="SansSerifSmall" + text_color="EmphasisColor" + length="1" + follows="top|left" + height="16" + layout="topleft" + top="125" + left="170" + width="150" + halign="right" + name="getting_data"> + Estimating... + </text> + <text + type="string" + font="SansSerifSmall" + top="145" + length="1" + follows="top|left" + height="16" + halign="right" + left="150" + width="170" + layout="topleft" + name="buy_action"> + [NAME] L$ [PRICE] + </text> + <text + type="string" + font="SansSerifMedium" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="20" + name="total_label" + top="165" + width="210"> + My new balance will be + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + top_delta="0" + height="16" + layout="topleft" + left="200" + halign="right" + name="total_amount" + width="120"> + L$ [AMT] + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="189" + left="20" + width="300" + height="30" + name="currency_links"> + [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="202" + left="20" + width="300" + height="30" + name="exchange_rate_note"> +Re-enter amount to see the latest exchange rate. + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="213" + left="10" + width="310" + height="30" + name="purchase_warning_repurchase"> + Confirming this purchase only buys L$, not the object. + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="213" + left="20" + width="300" + height="30" + name="purchase_warning_notenough"> + You aren't buying enough L$. Please increase the amount. + </text> + + <button + follows="bottom|left" + height="20" + label="Buy Now" + layout="topleft" + left="151" + name="buy_btn" + top="242" + width="90"/> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left_pad="10" + name="cancel_btn" + width="90"/> + <icon + height="215" + image_name="Linden_Dollar_Alert" + layout="topleft" + left="0" + name="error_background" + top="15" + width="350"/> + <text + type="string" + font="SansSerifHuge" + left="165" + width="170" + height="25" + top="25" + name="info_cannot_buy"> + Unable to Buy + </text> + <text + type="string" + width="175" + height="125" + top="60" + left="165" + word_wrap="true" + follows="bottom|right" + name="cannot_buy_message"> + </text> + <button + follows="bottom|left" + height="20" + label="Continue to the Web" + layout="topleft" + left="170" + name="error_web" + top="200" + width="160"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml index f6739d59e8a..a98da4b8bae 100644 --- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml @@ -21,7 +21,7 @@ <check_box label="今ã™ãé©ç”¨" name="apply_immediate"/> <button label="" label_selected="" name="color_pipette"/> <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel_btn"/> - <button label="Ok" label_selected="Ok" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text name="Current color:"> ç¾åœ¨ã®è‰²ï¼š </text> diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml index 61423fcf05b..7d1809f1ed2 100644 --- a/indra/newview/skins/default/xui/ja/floater_customize.xml +++ b/indra/newview/skins/default/xui/ja/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="容姿"> <tab_container name="customize tab container"> - <placeholder label="身体部ä½" name="body_parts_placeholder"/> + <text label="身体部ä½" name="body_parts_placeholder"> + èº«ä½“éƒ¨ä½ + </text> <panel label="シェイプ" name="Shape"> <button label="戻ã™" label_selected="戻ã™" name="Revert"/> <button label="身体" label_selected="身体" name="Body"/> @@ -14,8 +16,8 @@ <button label="胴体" label_selected="胴体" name="Torso"/> <button label="両脚" label_selected="両脚" name="Legs"/> <radio_group name="sex radio"> - <radio_item label="女性" name="radio"/> - <radio_item label="男性" name="radio2"/> + <radio_item label="女性" name="radio" value="0"/> + <radio_item label="男性" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,8 +35,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„シェイプ(体型)ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ -ã—ょã†ã€‚å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„シェイプをã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -67,8 +68,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„スã‚ンをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„スã‚ンをã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -105,8 +105,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„髪型をæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„髪をã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -137,8 +136,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„眼をæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„目をã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -152,7 +150,9 @@ <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> - <placeholder label="æœ" name="clothes_placeholder"/> + <text label="æœ" name="clothes_placeholder"> + 衣類 + </text> <panel label="シャツ" name="Shirt"> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="クリックã—ã¦ã‚«ãƒ©ãƒ¼ãƒ”ッカーを開ãã¾ã™"/> @@ -177,8 +177,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„シャツをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„シャツをç€ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -211,8 +210,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„ズボンをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„パンツを履ãã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -238,8 +236,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„é´ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„é´ã‚’å±¥ãã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -272,8 +269,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„é´ä¸‹ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„é´ä¸‹ã‚’å±¥ãã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -306,8 +302,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„上ç€ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„ジャケットをç€ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -341,8 +336,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„æ‰‹è¢‹ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„æ‰‹è¢‹ã‚’ã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -375,8 +369,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„下ç€ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„下ç€ï¼ˆä¸Šï¼‰ã‚’ç€ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -409,8 +402,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„パンツをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„下ç€ï¼ˆä¸‹ï¼‰ã‚’å±¥ãã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -443,8 +435,7 @@ [PATH] ã«æ‰€åœ¨ </text> <text name="not worn instructions"> - æ–°ã—ã„スカートをæŒç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ - å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„スカートを履ãã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 @@ -477,8 +468,7 @@ å‚ç…§ [PATH] </text> <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„アルファマスクをã¤ã‘ã¾ã™ã€‚ -代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„アルファマスクをã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã“ã®ç€ç”¨ç‰©ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 @@ -514,8 +504,7 @@ å‚ç…§ [PATH] </text> <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„タトゥをã¤ã‘ã¾ã™ã€‚ -代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã§ãã¾ã™ã€‚ + ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„タトゥをã¤ã‘ã¾ã™ã€‚ 代ã‚りã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> <text name="no modify instructions"> ã“ã®ç€ç”¨ç‰©ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 @@ -533,6 +522,7 @@ <button label="å…ƒã«æˆ»ã™" label_selected="å…ƒã«æˆ»ã™" name="Revert"/> </panel> </tab_container> + <button label="ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±" label_selected="ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±" name="script_info"/> <button label="アウトフィット作æˆ" label_selected="アウトフィット作æˆ" name="make_outfit_btn"/> <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml index 25de45c0944..18380bddc25 100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml @@ -11,7 +11,7 @@ </text> <check_box label="準備" name="check prelude" tool_tip="ã“ã®è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœ°åŸŸã®æº–備をã—ã¾ã™ã€‚"/> <check_box label="太陽固定" name="check fixed sun" tool_tip="太陽ä½ç½®ã‚’固定([地域ï¼ä¸å‹•産]>[地形]ã®å ´åˆã¨åŒæ§˜ï¼‰"/> - <check_box label="テレãƒãƒ¼ãƒˆã®ãƒ›ãƒ¼ãƒ をリセット" name="check reset home" tool_tip="ä½äººãŒãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§åŽ»ã£ãŸã¨ãã€å½¼ã‚‰ã®ãƒ›ãƒ¼ãƒ を目的地ã«ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã€‚"/> + <check_box label="テレãƒãƒ¼ãƒˆã®ãƒ›ãƒ¼ãƒ をリセット" name="check reset home" tool_tip="ä½äººãŒãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§å¤–ã«å‡ºãŸã‚‰ã€ãƒ›ãƒ¼ãƒ を目的地ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã€‚"/> <check_box label="å¯è¦–" name="check visible" tool_tip="ã“ã®è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœ°åŸŸã‚’ゴッド・モード以外ã§ã‚‚å¯è¦–ã«ã—ã¾ã™ã€‚"/> <check_box label="ダメージ" name="check damage" tool_tip="ã“ã®è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœ°åŸŸå†…ã§ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’有効化ã—ã¾ã™ã€‚"/> <check_box label="トラフィック・トラッã‚ングをブãƒãƒƒã‚¯" name="block dwell" tool_tip="ã“ã®è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœ°åŸŸå†…ã®ãƒˆãƒ©ãƒ•ィック計算をオフã«ã—ã¾ã™ã€‚"/> diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml index 24cef14ee00..1d028258ecc 100644 --- a/indra/newview/skins/default/xui/ja/floater_im_container.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="インスタントメッセージ"/> +<multi_floater name="floater_im_box" title="æ›ç®—"/> diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml index 32793faa6d6..04013799ec1 100644 --- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="incoming call" title="䏿˜Žã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ã‚³ãƒ¼ãƒ«"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> è¿‘ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆ </floater.string> @@ -12,6 +15,9 @@ <floater.string name="VoiceInviteAdHoc"> ãŒã‚³ãƒ³ãƒ•ァレンスãƒãƒ£ãƒƒãƒˆã§ã€ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã—ã¾ã—ãŸã€‚ </floater.string> + <floater.string name="VoiceInviteGroup"> + 㯠[GROUP]. ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚ + </floater.string> <text name="question"> [CURRENT_CHAT] を退å¸ã—ã¦ã€ã“ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã—ã¾ã™ã‹ï¼Ÿ </text> diff --git a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml index 2af693be648..5773752788a 100644 --- a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL WIKI"> +<floater name="script ed float" title="LSL レファレンス"> <check_box label="カーソルを追ã†" name="lock_check"/> <combo_box label="ãƒãƒƒã‚¯" name="history_combo"/> <button label="戻る" name="back_btn"/> diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml index 5a6f2121f81..4f67523eec9 100644 --- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml @@ -19,7 +19,7 @@ <button label="æ—©é€ã‚Š" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="ç¾åœ¨ã® URL を区画ã«é€ä¿¡" name="assign"/> + <button label="ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ã‚’区画ã«é€ã‚‹" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="外部ウェブ・ブラウザã§é–‹ã" name="open_browser"/> diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml new file mode 100644 index 00000000000..a869b106cee --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container"> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> + <text name="Save item as:"> + アウトフィットを別åã§ä¿å˜ï¼š + </text> + <line_editor name="name ed"> + [DESC] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml index 416d1045866..8d67108b77a 100644 --- a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="outgoing call" title="コールä¸"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> è¿‘ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆ </floater.string> @@ -21,6 +24,12 @@ <text name="noanswer"> 繋ãŒã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ ã‚ã¨ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 </text> + <text name="nearby"> + [VOICE_CHANNEL_NAME] ã¸ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </text> + <text name="nearby_P2P"> + [VOICE_CHANNEL_NAME] ãŒã‚³ãƒ¼ãƒ«ã‚’終了ã—ã¾ã—ãŸã€‚ 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </text> <text name="leaving"> [CURRENT_CHAT] を終了ã—ã¾ã™ã€‚ </text> diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml index 7c9a8b61bd1..1493219b833 100644 --- a/indra/newview/skins/default/xui/ja/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml @@ -8,7 +8,7 @@ <panel label="プライãƒã‚·ãƒ¼" name="im"/> <panel label="サウンド" name="audio"/> <panel label="ãƒãƒ£ãƒƒãƒˆ" name="chat"/> - <panel label="è¦å‘Š" name="msgs"/> + <panel label="通知" name="msgs"/> <panel label="セットアップ" name="input"/> <panel label="詳細" name="advanced1"/> </tab_container> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml index 4b4df983488..a378700d155 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml @@ -24,6 +24,9 @@ <floater.string name="Title"> ジェスãƒãƒ£ãƒ¼ï¼š [NAME] </floater.string> + <text name="name_text"> + åå‰ï¼š + </text> <text name="desc_label"> 説明: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml index 0ab1efd127d..6e6e04c7d82 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="メモ:"> +<floater name="preview notecard" title="ノートカード:"> <floater.string name="no_object"> - ã“ã®ãƒŽãƒ¼ãƒˆã‚’å«ã‚“ã オブジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 + ã“ã®ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ãŒå«ã¾ã‚ŒãŸã‚ªãƒ–ジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 </floater.string> <floater.string name="not_allowed"> ã“ã®ãƒŽãƒ¼ãƒˆã‚’見る権é™ãŒã‚りã¾ã›ã‚“。 diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml index 3313ae84b93..c3225381274 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml @@ -9,8 +9,6 @@ <text name="desc txt"> 説明: </text> - <button label="OK" name="Keep"/> - <button label="ã‚ャンセル" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> @@ -43,4 +41,7 @@ 2:1 </combo_item> </combo_box> + <button label="OK" name="Keep"/> + <button label="ã‚ャンセル" name="Discard"/> + <button label="別åã§ä¿å˜" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml index 599cd5d98d8..ca6faf59c20 100644 --- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml @@ -41,8 +41,8 @@ <combo_box name="category_combo" tool_tip="カテゴリー -- ã“ã®å ±å‘Šã«æœ€ã‚‚é©ã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"> <combo_box.item label="ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’é¸æŠž" name="Select_category"/> <combo_box.item label="年齢>年齢å½è¨¼" name="Age__Age_play"/> - <combo_box.item label="年齢>æˆäººã®ä½äººãŒTeen Second Life上ã«ã„ã‚‹" name="Age__Adult_resident_on_Teen_Second_Life"/> - <combo_box.item label="年齢>未æˆå¹´ãªä½äººãŒTeen Second Lifeã®å¤–ã«ã„ã‚‹" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="å¹´é½¢ > æˆäººã®ä½äººãŒ Teen Second Life ã«ã„ã‚‹" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="å¹´é½¢ > 未æˆå¹´ã®ä½äººãŒTeen Second Life ã®å¤–ã«ã„ã‚‹" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> <combo_box.item label="攻撃>コンãƒãƒƒãƒˆãƒ»ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹/å±é™ºãªã‚¨ãƒªã‚¢" name="Assault__Combat_sandbox___unsafe_area"/> <combo_box.item label="攻撃>安全ãªã‚¨ãƒªã‚¢" name="Assault__Safe_area"/> <combo_box.item label="攻撃>æ¦å™¨ãƒ†ã‚¹ãƒˆç”¨ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹" name="Assault__Weapons_testing_sandbox"/> @@ -68,7 +68,7 @@ <combo_box.item label="ã‚ã„ã›ã¤ï¼žè‘—ã—ãä¸å¿«ã§ã‚ã‚‹ã¨è¦‹ãªã•れるコンテンツã¾ãŸã¯è¡Œç‚º" name="Indecency__Broadly_offensive_content_or_conduct"/> <combo_box.item label="ã‚ã„ã›ã¤ï¼žä¸é©åˆ‡ãªã‚¢ãƒã‚¿ãƒ¼å" name="Indecency__Inappropriate_avatar_name"/> <combo_box.item label="ã‚ã„ã›ã¤ï¼žPG地域ã§ã®ä¸é©åˆ‡ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¾ãŸã¯è¡Œç‚º" name="Indecency__Mature_content_in_PG_region"/> - <combo_box.item label="ã‚ã„ã›ã¤ï¼žMature地域ã§ã®ä¸é©åˆ‡ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¾ãŸã¯è¡Œç‚º" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="ã‚ã„ã›ã¤ > 控ãˆã‚指定ã®åœ°åŸŸã§ã®ä¸é©åˆ‡ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¾ãŸã¯è¡Œç‚º" name="Indecency__Inappropriate_content_in_Mature_region"/> <combo_box.item label="知的財産ã®ä¾µå®³ï¼žã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ»" name="Intellectual_property_infringement_Content_Removal"/> <combo_box.item label="知的財産ã®ä¾µå®³ï¼žã‚³ãƒ”ーBotåŠã³æ¨©é™ã®æ‚ªç”¨" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> <combo_box.item label="ä¸å¯›å®¹" name="Intolerance"/> diff --git a/indra/newview/skins/default/xui/ja/floater_script_limits.xml b/indra/newview/skins/default/xui/ja/floater_script_limits.xml new file mode 100644 index 00000000000..7ccd858af77 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±"/> diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml index 9d65e840727..289098a3435 100644 --- a/indra/newview/skins/default/xui/ja/floater_search.xml +++ b/indra/newview/skins/default/xui/ja/floater_search.xml @@ -6,4 +6,11 @@ <floater.string name="done_text"> 完了 </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + ç¾åœ¨ã®ã‚´ãƒƒãƒ‰ãƒ¬ãƒ™ãƒ«ã«åæ˜ ã•ã›ã‚‹ãŸã‚検索をやり直ã—ã¦ãã ã•ã„ + </text> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_select_key.xml b/indra/newview/skins/default/xui/ja/floater_select_key.xml index 09c98add471..d41be868738 100644 --- a/indra/newview/skins/default/xui/ja/floater_select_key.xml +++ b/indra/newview/skins/default/xui/ja/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container"> - <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel" /> + <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> <text name="Save item as:"> - ã‚ーを押ã—ã¦é¸æŠž + ã‚ーを押ã—ã¦ã‚¹ãƒ”ーカーボタンã®ãƒˆãƒªã‚¬ãƒ¼ã‚’è¨å®šã—ã¾ã™ã€‚ </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml index 951499d0e37..b06b16bbb33 100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml @@ -39,7 +39,7 @@ è²©å£²å…ˆã®æŒ‡å®šãªã—ã‹ã€ç‰¹å®šã®äººã«è²©å£²ã™ã‚‹ã‹é¸æŠžã—ã¦ãã ã•ã„。 </text> <combo_box name="sell_to"> - <combo_box.item label="-- 1ã¤é¸æŠž --" name="--selectone--"/> + <combo_box.item label="- 1ã¤é¸æŠž -" name="--selectone--"/> <combo_box.item label="指定ãªã—・誰ã«ã§ã‚‚販売" name="Anyone"/> <combo_box.item label="特定ã®äººï¼š" name="Specificuser:"/> </combo_box> diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index 22f21b0b167..6c84de9b194 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -4,12 +4,12 @@ スナップショットã®é€ã‚Šå…ˆ </text> <radio_group label="スナップショット・タイプ" name="snapshot_type_radio"> - <radio_item label="Eメールã§é€ä¿¡" name="postcard"/> - <radio_item label="æŒã¡ç‰©ã«ä¿å˜ï¼ˆL$[AMOUNT])" name="texture"/> - <radio_item label="ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã«ä¿å˜" name="local"/> + <radio_item label="メール" name="postcard"/> + <radio_item label="ç§ã®æŒã¡ç‰©ï¼ˆL$[AMOUNT])" name="texture"/> + <radio_item label="コンピューターã«ä¿å˜" name="local"/> </radio_group> <text name="file_size_label"> - ファイル・サイズ: [SIZE] KB + [SIZE] KB </text> <button label="スナップショットを更新" name="new_snapshot_btn"/> <button label="é€ä¿¡" name="send_btn"/> @@ -19,8 +19,8 @@ <flyout_button.item label="åå‰ã‚’付ã‘ã¦ä¿å˜" name="saveas_item"/> </flyout_button> <button label="ã‚ャンセル" name="discard_btn"/> - <button label="全表示 >>" name="more_btn" tool_tip="詳ã—ã„è¨å®š"/> - <button label="<< 簡易" name="less_btn" tool_tip="詳ã—ã„è¨å®š"/> + <button label="全表示" name="more_btn" tool_tip="詳ã—ã„è¨å®š"/> + <button label="簡易" name="less_btn" tool_tip="詳ã—ã„è¨å®š"/> <text name="type_label2"> サイズ </text> @@ -68,10 +68,10 @@ <combo_box.item label="æ·±ã•" name="Depth"/> <combo_box.item label="オグジェクトã®ã¤ã‚„消ã—" name="ObjectMattes"/> </combo_box> - <check_box label="インタフェースを表示" name="ui_check"/> - <check_box label="HUD オブジェクトを表示" name="hud_check"/> + <check_box label="インターフェース" name="ui_check"/> + <check_box label="HUD" name="hud_check"/> <check_box label="ä¿å˜å¾Œã‚‚é–‹ã„ãŸçŠ¶æ…‹ã‚’ä¿æŒ" name="keep_open_check"/> - <check_box label="ç”»é¢å…¨ä½“ã‚’é™æ¢ã•ã›ã‚‹" name="freeze_frame_check"/> + <check_box label="ç”»é¢å…¨ä½“ã‚’é™æ¢" name="freeze_frame_check"/> <check_box label="自動更新" name="auto_snapshot_check"/> <string name="unknown"> 未知 diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml index 91e29fd595a..a7c0a2b391e 100644 --- a/indra/newview/skins/default/xui/ja/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml @@ -1,2 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="通知"/> +<floater name="notification_chiclet" title="通知"> + <string name="title_im_well_window"> + IMセッション + </string> + <string name="title_notification_well_window"> + 通知 + </string> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml index fea497b6226..bdb92c8e305 100644 --- a/indra/newview/skins/default/xui/ja/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml @@ -20,9 +20,9 @@ <button label="出ç¾ä½ç½®ã‚’è¿½åŠ " name="add_spawn_point_btn"/> <button label="出ç¾åœ°ç‚¹ã‚’削除" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - ç‰©ä½“ã‚’é¸æŠžã—ã€Œè¿½åŠ ã€ã‚’クリックã—ä½ç½®ã‚’指定。 -物体を移動ã¾ãŸã¯å‰Šé™¤ã§ãる。 -ä½ç½®ã¯ãƒ†ãƒ¬ãƒãƒ–・センターãŒåŸºæº–ã®ç›¸å¯¾ä½ç½®ã€‚ -リスト内å“ç›®ã‚’é¸æŠžã—ワールド内ä½ç½®ã‚’示ã™ã€‚ + オブジェクトをé¸ã³ã€ã€Œå‡ºç¾åœ°ç‚¹ã‚’è¿½åŠ ã€ã‚’クリックã—ã¦ä½ç½®ã‚’指定ã—ã¾ã™ã€‚ +ãã†ã™ã‚‹ã¨ãã®ã‚ªãƒ–ジェクトを移動ã•ã›ãŸã‚Šå‰Šé™¤ã§ãã¾ã™ã€‚ +ä½ç½®ã¯ãƒ†ãƒ¬ãƒãƒ–センターã«é–¢é€£ã—ã¾ã™ã€‚ +リストã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã§ãƒã‚¤ãƒ©ã‚¤ãƒˆã•ã›ã¾ã™ã€‚ </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml index c93f3156286..1500808e60e 100644 --- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml @@ -17,7 +17,7 @@ <check_box label="今ã™ãé©ç”¨" name="apply_immediate_check"/> <button label="" label_selected="" name="Pipette"/> <button label="å–り消ã—" label_selected="å–り消ã—" name="Cancel"/> - <button label="Ok" label_selected="Ok" name="Select"/> + <button label="OK" label_selected="OK" name="Select"/> <text name="pick title"> ピック: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index cbb062dea35..52d3537d9a3 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -451,12 +451,12 @@ <spinner label="垂直(V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - メディア URL + メディア </text> <button name="add_media" tool_tip="ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’è¿½åŠ "/> <button name="delete_media" tool_tip="ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’削除"/> <button name="edit_media" tool_tip="ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’編集"/> - <button label="æƒãˆã‚‹" label_selected="ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’ä¸€åˆ—ã«æƒãˆã‚‹" name="button align"/> + <button label="æƒãˆã‚‹" label_selected="ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’ä¸€åˆ—ã«æƒãˆã‚‹" name="button align" tool_tip="メディアテクスãƒãƒ£ã‚’ä¸€åˆ—ã«æƒãˆã‚‹ï¼ˆæœ€åˆã«èªã¿è¾¼ã‚€å¿…è¦ãŒã‚りã¾ã™ï¼‰"/> </panel> </panel> <panel label="ä¸èº«" name="Contents"> @@ -475,14 +475,7 @@ é¢ç©ï¼š [AREA] 平方メートル </text> <button label="åœŸåœ°æƒ…å ±" label_selected="åœŸåœ°æƒ…å ±" name="button about land"/> - <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者ã®ç¨®é¡žåˆ¥ã«åŒºç”»ã‚’色ã¥ã‘: - -ç·‘ = ã‚ãªãŸã®åœŸåœ° -アクア = ã‚ãªãŸã®ã‚°ãƒ«ãƒ¼ãƒ—所有地 -赤 = ä»–äººãŒæ‰€æœ‰ã™ã‚‹åœŸåœ° -黄色 = 売り出ã—ä¸ -ç´« = オークション -グレー = パブリック"/> + <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者ã®ç¨®é¡žåˆ¥ã«åŒºç”»ã‚’色ã¥ã‘: ç·‘ = ã‚ãªãŸã®åœŸåœ° アクア = ã‚ãªãŸã®ã‚°ãƒ«ãƒ¼ãƒ—所有地 赤 = ä»–äººãŒæ‰€æœ‰ã™ã‚‹åœŸåœ° 黄色 = 売り出ã—ä¸ ç´« = オークション グレー = パブリック"/> <text name="label_parcel_modify"> 区画ã®ç·¨é›† </text> diff --git a/indra/newview/skins/default/xui/ja/floater_top_objects.xml b/indra/newview/skins/default/xui/ja/floater_top_objects.xml index e5d1fc5f038..bfc93e56245 100644 --- a/indra/newview/skins/default/xui/ja/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/ja/floater_top_objects.xml @@ -1,55 +1,56 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°..."> +<floater name="top_objects" title="トップオブジェクト"> + <floater.string name="top_scripts_title"> + トップ・スクリプト + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT]スクリプト全体ã®å®Ÿè¡Œæ™‚é–“ã¯[TIME]ミリ秒。 + </floater.string> + <floater.string name="scripts_score_label"> + 時間 + </floater.string> + <floater.string name="scripts_mono_time_label"> + Monoタイム+ </floater.string> + <floater.string name="top_colliders_title"> + 上部コライダー + </floater.string> + <floater.string name="top_colliders_text"> + 上ä½[COUNT]個ã®ç‰©ä½“ã¯å¤šãã®è¡çªå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + </floater.string> + <floater.string name="colliders_score_label"> + æ•° + </floater.string> + <floater.string name="none_descriptor"> + 何も見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </floater.string> <text name="title_text"> ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> <scroll_list name="objects_list"> - <column label="æ•°" name="score"/> - <column label="åå‰" name="name"/> - <column label="所有者" name="owner"/> - <column label="ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³" name="location"/> - <column label="時間" name="time"/> - <column label="Monoタイム" name="mono_time"/> + <scroll_list.columns label="æ•°" name="score"/> + <scroll_list.columns label="åå‰" name="name"/> + <scroll_list.columns label="所有者" name="owner"/> + <scroll_list.columns label="ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³" name="location"/> + <scroll_list.columns label="時間" name="time"/> + <scroll_list.columns label="Monoタイム" name="mono_time"/> + <scroll_list.columns label="URL" name="URLs"/> </scroll_list> <text name="id_text"> 物体ID: </text> <button label="標è˜ã‚’表示" name="show_beacon_btn"/> <text name="obj_name_text"> - 物体å: + オブジェクトå: </text> <button label="フィルタ" name="filter_object_btn"/> <text name="owner_name_text"> - 所有者å: + 所有者: </text> <button label="フィルタ" name="filter_owner_btn"/> + <button label="æ›´æ–°" name="refresh_btn"/> <button label="é¸æŠžå†…å®¹ã‚’è¿”å´" name="return_selected_btn"/> <button label="ã™ã¹ã¦è¿”å´" name="return_all_btn"/> <button label="é¸æŠžå†…å®¹ã‚’ç„¡åŠ¹åŒ–" name="disable_selected_btn"/> <button label="ã™ã¹ã¦ç„¡åŠ¹åŒ–" name="disable_all_btn"/> - <button label="æ›´æ–°" name="refresh_btn"/> - <string name="top_scripts_title"> - トップ・スクリプト - </string> - <string name="top_scripts_text"> - [COUNT]スクリプト全体ã®å®Ÿè¡Œæ™‚é–“ã¯[TIME]ミリ秒。 - </string> - <string name="scripts_score_label"> - 時間 - </string> - <string name="scripts_mono_time_label"> - Monoタイム- </string> - <string name="top_colliders_title"> - 上部コライダー - </string> - <string name="top_colliders_text"> - 上ä½[COUNT]個ã®ç‰©ä½“ã¯å¤šãã®è¡çªå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - </string> - <string name="colliders_score_label"> - æ•° - </string> - <string name="none_descriptor"> - 何も見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ - </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml index 5d52144265c..5a0694e5c5e 100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml @@ -1,13 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_voice_controls" title="ボイスコントãƒãƒ¼ãƒ«"> - <panel name="control_panel"> - <panel name="my_panel"> - <text name="user_text" value="Mya Avatar:"/> - </panel> - <layout_stack> - <layout_panel> - <slider_bar name="volume_slider_bar" tool_tip="音é‡"/> - </layout_panel> - </layout_stack> - </panel> + <string name="title_nearby"> + è¿‘ãã®ãƒœã‚¤ã‚¹ + </string> + <string name="title_group"> + [GROUP] ã¨ã‚°ãƒ«ãƒ¼ãƒ—コール + </string> + <string name="title_adhoc"> + コンファレンスコール + </string> + <string name="title_peer_2_peer"> + [NAME] ã§ã‚³ãƒ¼ãƒ« + </string> + <string name="no_one_near"> + è¿‘ãã«ãƒœã‚¤ã‚¹ã‚’有効ã«ã—ã¦ã„る人ã¯ã„ã¾ã›ã‚“。 + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="コール終了" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml index b518d874775..34aba9d485a 100644 --- a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="whitelist_entry"> +<floater name="whitelist_entry" title="ホワイトリストã®å…¥åŠ›"> <text name="media_label"> URL ã‹ URL パターンを入力ã—ã¦ã€è¨±å¯ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’リストã«è¿½åŠ ã—ã¾ã™ã€‚ </text> diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml new file mode 100644 index 00000000000..a31336c0f8f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="ウィンドウサイズ"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + ウィンドウã®ã‚µã‚¤ã‚ºã®è¨å®šï¼š + </text> + <combo_box name="window_size_combo" tool_tip="横幅 x 高ã•"> + <combo_box.item label="1000 x 700 (標準)" name="item0"/> + <combo_box.item label="1024 x 768" name="item1"/> + <combo_box.item label="1280 x 720 (720p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> + </combo_box> + <button label="è¨å®š" name="set_btn"/> + <button label="ã‚ャンセル" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml index 370c95530ab..a0f2d98adf9 100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml @@ -1,54 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="世界地図"> - <text name="you_label"> - ã‚ãªãŸ - </text> - <text name="home_label"> - ホーム- </text> - <text name="auction_label"> - オークション - </text> - <icon left="1123" name="square"/> - <text left_delta="20" name="land_for_sale_label"> - 売出ã—ä¸ã®åœŸåœ° - </text> - <button label="ホームã¸" label_selected="ホームã¸" name="Go Home" tool_tip="自分ã®ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> - <check_box label="ä½äºº" name="people_chk"/> - <check_box label="インフォãƒãƒ–" name="infohub_chk"/> - <check_box label="テレãƒãƒ–" name="telehub_chk"/> - <check_box label="売り地" name="land_for_sale_chk"/> - <text name="events_label"> - イベント: - </text> - <check_box label="PG" name="event_chk"/> - <check_box initial_value="true" label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <combo_box label="オンラインã®ãƒ•レンド" name="friend combo" tool_tip="地図ã«è¡¨ç¤ºã™ã‚‹ãƒ•レンド"> - <combo_box.item label="オンラインã®ãƒ•レンド" name="item1"/> - </combo_box> - <combo_box label="ランドマーク" name="landmark combo" tool_tip="地図ã«è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯"> - <combo_box.item label="ランドマーク" name="item1"/> - </combo_box> - <line_editor label="地域åã§æ¤œç´¢" name="location" tool_tip="地域åを入力ã—ã¦ãã ã•ã„。"/> - <button label="検索" name="DoSearch" tool_tip="地域検索"/> - <text name="search_label"> - æ¤œç´¢çµæžœï¼š - </text> - <scroll_list name="search_results"> - <scroll_list.columns label="" name="icon"/> - <scroll_list.columns label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - ä½ç½®ï¼š - </text> - <spinner name="spin x" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®X座標"/> - <spinner name="spin y" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Y座標"/> - <spinner name="spin z" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Z座標"/> - <button label="テレãƒãƒ¼ãƒˆ" label_selected="テレãƒãƒ¼ãƒˆ" name="Teleport" tool_tip="é¸æŠžã•れãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> - <button label="目的地を表示" label_selected="目的地を表示" name="Show Destination" tool_tip="é¸æŠžã—ãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹"/> - <button label="クリア" label_selected="クリア" name="Clear" tool_tip="トラッã‚ãƒ³ã‚°ã‚’åœæ¢"/> - <button label="ç¾åœ¨åœ°ã‚’表示" label_selected="ç¾åœ¨åœ°ã‚’表示" name="Show My Location" tool_tip="ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹"/> - <button label="SLurl をクリップボードã«ã‚³ãƒ”ー" name="copy_slurl" tool_tip="ç¾åœ¨åœ°ã‚’ SLurl ã¨ã—ã¦ã‚³ãƒ”ーã—ã¦ã€Webã§ä½¿ç”¨ã—ã¾ã™ã€‚"/> - <slider label="ズーム" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + レジェンド + </text> + </panel> + <panel> + <button label="ç¾åœ¨åœ°ã‚’表示" label_selected="ç¾åœ¨åœ°ã‚’表示" name="Show My Location" tool_tip="マップをä¸å¤®ã«è¡¨ç¤ºã™ã‚‹"/> + <text name="me_label"> + ミー + </text> + <check_box label="ä½äºº" name="people_chk"/> + <text name="person_label"> + ä½äºº + </text> + <check_box label="インフォãƒãƒ–" name="infohub_chk"/> + <text name="infohub_label"> + インフォãƒãƒ– + </text> + <check_box label="売り地" name="land_for_sale_chk"/> + <text name="land_sale_label"> + 土地販売 + </text> + <text name="by_owner_label"> + by owner + </text> + <text name="auction_label"> + 土地オークション + </text> + <button label="ホームã¸" label_selected="ホームã¸" name="Go Home" tool_tip="「ホームã€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> + <text name="Home_label"> + ホーム+ </text> + <text name="events_label"> + イベント: + </text> + <check_box label="PG" name="event_chk"/> + <text name="pg_label"> + 一般 + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + 控ãˆã‚ + </text> + <check_box label="Adult" name="event_adult_chk"/> + <text name="adult_label"> + アダルト + </text> + </panel> + <panel> + <text name="find_on_map_label"> + åœ°å›³ã§æŽ¢ã™ + </text> + </panel> + <panel> + <combo_box label="オンラインã®ãƒ•レンド" name="friend combo" tool_tip="フレンドを地図ã«è¡¨ç¤º"> + <combo_box.item label="オンラインã®ãƒ•レンド" name="item1"/> + </combo_box> + <combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図ã«è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯"> + <combo_box.item label="マイ ランドマーク" name="item1"/> + </combo_box> + <search_editor label="リージョンå" name="location" tool_tip="地域åを入力ã—ã¦ãã ã•ã„。"/> + <button label="検索" name="DoSearch" tool_tip="地域検索"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="テレãƒãƒ¼ãƒˆ" label_selected="テレãƒãƒ¼ãƒˆ" name="Teleport" tool_tip="é¸æŠžã•れãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> + <button label="SLurl をコピー" name="copy_slurl" tool_tip="ç¾åœ¨åœ°ã‚’ SLurl ã¨ã—ã¦ã‚³ãƒ”ーã—ã¦ã€Webã§ä½¿ç”¨ã—ã¾ã™ã€‚"/> + <button label="é¸æŠžã—ãŸãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹" label_selected="目的地を表示" name="Show Destination" tool_tip="é¸æŠžã—ãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹"/> + </panel> + <panel> + <text name="zoom_label"> + ズーム+ </text> + </panel> + <panel> + <slider label="ズーム" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml index df3f6d0cd04..9371b80af55 100644 --- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml @@ -10,19 +10,17 @@ <string name="Details"> [SL_PROFILE] </string> - <string name="Partner"> - パートナー: [PARTNER] - </string> <text name="user_name" value="Grumpity ProductEngine"/> <text name="user_subtitle" value="11 Months, 3 days old"/> <text name="user_details"> This is my second life description and I really think it is great. </text> - <text name="user_partner"> - Erica Linden - </text> <slider name="volume_slider" tool_tip="ボイス音é‡" value="0.5"/> <button label="フレンド登録" name="add_friend_btn"/> <button label="IM" name="im_btn"/> <button label="詳細" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="ボイスを無効ã«ã™ã‚‹" name="disable_voice"/> + <button label="ボイスを有効ã«ã™ã‚‹" name="enable_voice"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml index b292d4b5258..b461b93f650 100644 --- a/indra/newview/skins/default/xui/ja/inspect_group.xml +++ b/indra/newview/skins/default/xui/ja/inspect_group.xml @@ -31,4 +31,5 @@ Fear the moose! Fear it! And the mongoose too! </text> <button label="å‚åŠ " name="join_btn"/> <button label="脱退" name="leave_btn"/> + <button label="プãƒãƒ•ィールã®è¡¨ç¤º" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml new file mode 100644 index 00000000000..f163c2cf4fe --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="プãƒãƒ•ィールã®è¡¨ç¤º" name="Profile..."/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‹›å¾…" name="Invite..."/> + <menu_item_call label="ブãƒãƒƒã‚¯" name="Avatar Mute"/> + <menu_item_call label="å ±å‘Š" name="abuse"/> + <menu_item_call label="フリーズ" name="Freeze..."/> + <menu_item_call label="追放" name="Eject..."/> + <menu_item_call label="デãƒãƒƒã‚°" name="Debug..."/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="支払ã†" name="Pay..."/> + <menu_item_call label="オブジェクトã®ãƒ—ãƒãƒ•ィール" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml new file mode 100644 index 00000000000..209edd80ba9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="触る" name="Attachment Object Touch"/> + <menu_item_call label="編集" name="Edit..."/> + <menu_item_call label="å–り外ã™" name="Detach"/> + <menu_item_call label="下ã«è½ã¨ã™" name="Drop"/> + <menu_item_call label="ç«‹ã¡ä¸ŠãŒã‚‹" name="Stand Up"/> + <menu_item_call label="容姿" name="Appearance..."/> + <menu_item_call label="フレンド" name="Friends..."/> + <menu_item_call label="グループ" name="Groups..."/> + <menu_item_call label="プãƒãƒ•ィール" name="Profile..."/> +</context_menu> 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 ef63f3f4e09..b04f602134d 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="プãƒãƒ•ィールを表示..." name="Show Profile"/> + <menu_item_call label="プãƒãƒ•ィールã®è¡¨ç¤º" name="Show Profile"/> <menu_item_call label="IMã‚’é€ä¿¡..." name="Send IM"/> <menu_item_call label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ ..." name="Add Friend"/> <menu_item_call label="フレンドを削除..." name="Remove Friend"/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml new file mode 100644 index 00000000000..74d877cddad --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="プãƒãƒ•ィールã®è¡¨ç¤º" name="Profile..."/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‹›å¾…" name="Invite..."/> + <menu_item_call label="ブãƒãƒƒã‚¯" name="Avatar Mute"/> + <menu_item_call label="å ±å‘Š" name="abuse"/> + <menu_item_call label="フリーズ" name="Freeze..."/> + <menu_item_call label="追放" name="Eject..."/> + <menu_item_call label="デãƒãƒƒã‚°" name="Debug..."/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="支払ã†" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml new file mode 100644 index 00000000000..1bfadf8d45b --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="ç«‹ã¡ä¸ŠãŒã‚‹" name="Stand Up"/> + <context_menu label="脱ã>" name="Take Off >"> + <context_menu label="衣類 >" name="Clothes >"> + <menu_item_call label="シャツ" name="Shirt"/> + <menu_item_call label="パンツ" name="Pants"/> + <menu_item_call label="スカート" name="Skirt"/> + <menu_item_call label="é´" name="Shoes"/> + <menu_item_call label="é´ä¸‹" name="Socks"/> + <menu_item_call label="ジャケット" name="Jacket"/> + <menu_item_call label="手袋" name="Gloves"/> + <menu_item_call label="下ç€ã‚·ãƒ£ãƒ„" name="Self Undershirt"/> + <menu_item_call label="下ç€ãƒ‘ンツ" name="Self Underpants"/> + <menu_item_call label="タトゥ" name="Self Tattoo"/> + <menu_item_call label="アルファ" name="Self Alpha"/> + <menu_item_call label="ã™ã¹ã¦ã®è¡£é¡ž" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="å–り外㙠>" name="Object Detach"/> + <menu_item_call label="ã™ã¹ã¦å–り外ã™" name="Detach All"/> + </context_menu> + <menu_item_call label="容姿" name="Appearance..."/> + <menu_item_call label="フレンド" name="Friends..."/> + <menu_item_call label="グループ" name="Groups..."/> + <menu_item_call label="マイ プãƒãƒ•ィール" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml index 3ca2de247e7..ea7ba1b7412 100644 --- a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml @@ -4,4 +4,9 @@ <menu_item_check label="移動ボタン" name="ShowMoveButton"/> <menu_item_check label="視界ボタン" name="ShowCameraButton"/> <menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/> + <menu_item_call label="切りå–り" name="NearbyChatBar_Cut"/> + <menu_item_call label="コピー" name="NearbyChatBar_Copy"/> + <menu_item_call label="貼り付ã‘" name="NearbyChatBar_Paste"/> + <menu_item_call label="削除" name="NearbyChatBar_Delete"/> + <menu_item_call label="ã™ã¹ã¦é¸æŠž" name="NearbyChatBar_Select_All"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_im_well_button.xml b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml new file mode 100644 index 00000000000..3397004bd70 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="ã™ã¹ã¦é–‰ã˜ã‚‹" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..8cd6fa4a27d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="セッション終了" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 0887001992b..5453f998fa0 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet P2P Menu"> - <menu_item_call label="プãƒãƒ•ィールを表示" name="Show Profile"/> + <menu_item_call label="プãƒãƒ•ィールã®è¡¨ç¤º" name="Show Profile"/> <menu_item_call label="フレンド登録" name="Add Friend"/> <menu_item_call label="セッションを表示" name="Send IM"/> <menu_item_call label="セッション終了" name="End Session"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml index 64e1505440e..3d5086c52a0 100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@ <menu_item_call label="テレãƒãƒ¼ãƒˆ" name="teleport"/> <menu_item_call label="ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‹›å¾…" name="invite_to_group"/> <menu_item_call label="ブãƒãƒƒã‚¯" name="block"/> + <menu_item_call label="ブãƒãƒƒã‚¯è§£é™¤" name="unblock"/> <menu_item_call label="å ±å‘Š" name="report"/> <menu_item_call label="フリーズ" name="freeze"/> <menu_item_call label="追放" name="eject"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 623a0cdb066..78c0dd0a78c 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -10,7 +10,7 @@ <menu_item_call label="éºå¤±ç‰©ãƒ•ォルダを空ã«ã™ã‚‹" name="Empty Lost And Found"/> <menu_item_call label="æ–°ã—ã„フォルダ" name="New Folder"/> <menu_item_call label="æ–°ã—ã„スクリプト" name="New Script"/> - <menu_item_call label="æ–°ã—ã„ノート" name="New Note"/> + <menu_item_call label="æ–°ã—ã„ノートカード" name="New Note"/> <menu_item_call label="æ–°ã—ã„ジェスãƒãƒ£ãƒ¼" name="New Gesture"/> <menu label="æ–°ã—ã„衣類" name="New Clothes"> <menu_item_call label="æ–°ã—ã„シャツ" name="New Shirt"/> @@ -46,6 +46,9 @@ <menu_item_call label="テレãƒãƒ¼ãƒˆ" name="Landmark Open"/> <menu_item_call label="é–‹ã" name="Animation Open"/> <menu_item_call label="é–‹ã" name="Sound Open"/> + <menu_item_call label="ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットを入れ替ãˆã‚‹" name="Replace Outfit"/> + <menu_item_call label="ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットã«è¿½åŠ ã™ã‚‹" name="Add To Outfit"/> + <menu_item_call label="ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットã‹ã‚‰å–り除ã" name="Remove From Outfit"/> <menu_item_call label="アイテムを除外" name="Purge Item"/> <menu_item_call label="アイテムを復元" name="Restore Item"/> <menu_item_call label="オリジナルを探ã™" name="Find Original"/> @@ -56,10 +59,9 @@ <menu_item_call label="コピー" name="Copy"/> <menu_item_call label="貼り付ã‘" name="Paste"/> <menu_item_call label="リンクã®è²¼ã‚Šä»˜ã‘" name="Paste As Link"/> + <menu_item_call label="リンクを外ã™" name="Remove Link"/> <menu_item_call label="削除" name="Delete"/> - <menu_item_call label="アウトフィットã‹ã‚‰å–り除ã" name="Remove From Outfit"/> - <menu_item_call label="æœè£…ã«è¿½åŠ " name="Add To Outfit"/> - <menu_item_call label="æœè£…ã‚’ç½®æ›" name="Replace Outfit"/> + <menu_item_call label="システムフォルダを削除ã™ã‚‹" name="Delete System Folder"/> <menu_item_call label="会è°ãƒãƒ£ãƒƒãƒˆé–‹å§‹" name="Conference Chat Folder"/> <menu_item_call label="å†ç”Ÿ" name="Sound Play"/> <menu_item_call label="ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®æƒ…å ±" name="About Landmark"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index 8b18f6bfe80..14ad7900e1a 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -8,7 +8,7 @@ </menu> <menu_item_call label="æ–°è¦ãƒ•ォルダ" name="New Folder"/> <menu_item_call label="æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト" name="New Script"/> - <menu_item_call label="æ–°è¦ãƒŽãƒ¼ãƒˆ" name="New Note"/> + <menu_item_call label="æ–°ã—ã„ノートカード" name="New Note"/> <menu_item_call label="æ–°è¦ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼" name="New Gesture"/> <menu label="æ–°ã—ã„衣類" name="New Clothes"> <menu_item_call label="æ–°ã—ã„シャツ" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index 2bac5ebaa69..e3114327a0a 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -9,4 +9,6 @@ <menu_item_call label="ã”ã¿ç®±ã‚’空ã«ã™ã‚‹" name="empty_trash"/> <menu_item_call label="紛失物を空ã«ã™ã‚‹" name="empty_lostnfound"/> <menu_item_call label="別åã§ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å˜" name="Save Texture As"/> + <menu_item_call label="オリジナルを表示" name="Find Original"/> + <menu_item_call label="ã™ã¹ã¦ã®ãƒªãƒ³ã‚¯ã‚’表示" name="Find All Links"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml new file mode 100644 index 00000000000..89c122f14fd --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="åœŸåœ°æƒ…å ±" name="Place Information..."/> + <menu_item_call label="ã“ã“ã«åº§ã‚‹" name="Sit Here"/> + <menu_item_call label="ã“ã®åœŸåœ°ã‚’購入" name="Land Buy"/> + <menu_item_call label="å…¥å ´è¨±å¯ã‚’購入" name="Land Buy Pass"/> + <menu_item_call label="制作" name="Create"/> + <menu_item_call label="地形を編集" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 5db56ae76bb..42a95ac3d3f 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -23,10 +23,8 @@ <menu_item_call label="デãƒãƒƒã‚°è¨å®šã‚’表示" name="Debug Settings"/> <menu_item_call label="UI/色ã®è¨å®š" name="UI/Color Settings"/> <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/> - <menu_item_call label="サイドトレイを表示" name="Show Side Tray"/> - <menu_item_call label="ウィジェットテスト" name="Widget Test"/> - <menu_item_call label="インスペクターテスト" name="Inspectors Test"/> - <menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"/> + <menu label="UI テスト" name="UI Tests"/> + <menu_item_call label="ウィンドウã®ã‚µã‚¤ã‚ºã®è¨å®š..." name="Set Window Size..."/> <menu_item_call label="利用è¦ç´„を表示" name="TOS"/> <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> <menu_item_call label="Web ブラウザã®ãƒ†ã‚¹ãƒˆ" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml new file mode 100644 index 00000000000..913bae89586 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="ã™ã¹ã¦é–‰ã˜ã‚‹" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml new file mode 100644 index 00000000000..a161c015145 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="触る" name="Object Touch"/> + <menu_item_call label="編集" name="Edit..."/> + <menu_item_call label="制作" name="Build"/> + <menu_item_call label="é–‹ã" name="Open"/> + <menu_item_call label="ã“ã“ã«åº§ã‚‹" name="Object Sit"/> + <menu_item_call label="オブジェクトã®ãƒ—ãƒãƒ•ィール" name="Object Inspect"/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <context_menu label="è£…ç€ >" name="Put On"> + <menu_item_call label="装ç€" name="Wear"/> + <context_menu label="å–り付㑠>" name="Object Attach"/> + <context_menu label="HUD ã‚’å–り付㑠>" name="Object Attach HUD"/> + </context_menu> + <context_menu label="削除 >" name="Remove"> + <menu_item_call label="å–ã‚‹" name="Pie Object Take"/> + <menu_item_call label="嫌ãŒã‚‰ã›ã®å ±å‘Š" name="Report Abuse..."/> + <menu_item_call label="ブãƒãƒƒã‚¯" name="Object Mute"/> + <menu_item_call label="è¿”å´" name="Return..."/> + <menu_item_call label="削除" name="Delete"/> + </context_menu> + <menu_item_call label="コピーをå–ã‚‹" name="Take Copy"/> + <menu_item_call label="支払ã†" name="Pay..."/> + <menu_item_call label="è²·ã†" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 0bc51ecde1f..398a78bb614 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Participant List Context Menu"> - <menu_item_check label="æ–‡å—をミュート" name="MuteText"/> - <menu_item_check label="æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚’許å¯" name="AllowTextChat"/> + <menu_item_check label="åå‰ã§ä¸¦ã¹æ›¿ãˆ" name="SortByName"/> + <menu_item_check label="最近ã®ç™ºè¨€è€…ã§ä¸¦ã¹æ›¿ãˆ" name="SortByRecentSpeakers"/> + <menu_item_call label="プãƒãƒ•ィールã®è¡¨ç¤º" name="View Profile"/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="共有" name="Share"/> + <menu_item_call label="支払ã†" name="Pay"/> + <menu_item_check label="ボイスをブãƒãƒƒã‚¯" name="Block/Unblock"/> + <menu_item_check label="æ–‡å—をブãƒãƒƒã‚¯ã™ã‚‹" name="MuteText"/> + <context_menu label="モデレーターã®ã‚ªãƒ—ション >" name="Moderator Options"> + <menu_item_check label="æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚’許å¯" name="AllowTextChat"/> + <menu_item_call label="ã“ã®å‚åŠ è€…ã‚’ãƒŸãƒ¥ãƒ¼ãƒˆã™ã‚‹" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="ä»–ã®äººå…¨å“¡ã‚’ミュートã™ã‚‹" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="ã“ã®å‚åŠ è€…ã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除ã™ã‚‹" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="ä»–ã®äººå…¨å“¡ã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除ã™ã‚‹" name="ModerateVoiceUnMuteOthers"/> + </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml new file mode 100644 index 00000000000..4e5dc60a3dc --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="æƒ…å ±ã‚’è¡¨ç¤º" name="View Info"/> + <menu_item_call label="ãƒãƒ£ãƒƒãƒˆ" name="Chat"/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="有効化" name="Activate"/> + <menu_item_call label="脱退" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index a577523754b..2c8a346d1a1 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -7,4 +7,5 @@ <menu_item_call label="共有" name="Share"/> <menu_item_call label="支払ã†" name="Pay"/> <menu_item_check label="ブãƒãƒƒã‚¯ãƒ»ãƒ–ãƒãƒƒã‚¯è§£é™¤" name="Block/Unblock"/> + <menu_item_call label="テレãƒãƒ¼ãƒˆã‚’é€ã‚‹" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index a34086bdbf1..bb93990efe9 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -2,4 +2,8 @@ <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="支払ã†" name="pay"/> <menu_item_call label="共有" name="share"/> + <menu_item_call label="追放" name="kick"/> + <menu_item_call label="フリーズ" name="freeze"/> + <menu_item_call label="フリーズ解除" name="unfreeze"/> + <menu_item_call label="CSR" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index fc0a5592ddc..db8583ca15d 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -9,7 +9,7 @@ <menu_item_call label="マイ プãƒãƒ•ィール" name="Profile"/> <menu_item_call label="マイ 容姿" name="Appearance"/> <menu_item_check label="マイ æŒã¡ç‰©" name="Inventory"/> - <menu_item_call label="ã‚µã‚¤ãƒ‰ãƒˆãƒ¬ã‚¤ã§æŒã¡ç‰©ã‚’表示" name="ShowSidetrayInventory"/> + <menu_item_call label="æŒã¡ç‰©ã‚’サイドトレイã«è¡¨ç¤º" name="ShowSidetrayInventory"/> <menu_item_call label="マイ ジェスãƒãƒ£ãƒ¼" name="Gestures"/> <menu label="マイ ãƒã‚°ã‚¤ãƒ³çŠ¶æ…‹" name="Status"> <menu_item_call label="一時退å¸ä¸" name="Set Away"/> @@ -25,36 +25,30 @@ <menu_item_check label="è¿‘ãã®ãƒãƒ£ãƒƒãƒˆ" name="Nearby Chat"/> <menu_item_call label="è¿‘ãã«ã„る人" name="Active Speakers"/> <menu_item_check label="è¿‘ãã®ãƒ¡ãƒ‡ã‚£ã‚¢" name="Nearby Media"/> - <menu_item_check label="(レガシー) コミュニケーション" name="Instant Message"/> - <menu_item_call label="(一時)メディアリモコン" name="Preferences"/> </menu> <menu label="世界" name="World"> - <menu_item_check label="移動" name="Movement Controls"/> - <menu_item_check label="視界" name="Camera Controls"/> - <menu_item_call label="土地ã«ã¤ã„ã¦" name="About Land"/> - <menu_item_call label="地域 / ä¸å‹•産" name="Region/Estate"/> - <menu_item_call label="土地ã®è³¼å…¥" name="Buy Land"/> - <menu_item_call label="自分ã®åœŸåœ°" name="My Land"/> - <menu label="表示" name="Land"> - <menu_item_check label="ç«‹å…¥ç¦æ¢ãƒ©ã‚¤ãƒ³" name="Ban Lines"/> - <menu_item_check label="ビーコン(標è˜ï¼‰" name="beacons"/> - <menu_item_check label="敷地境界線" name="Property Lines"/> - <menu_item_check label="土地所有者" name="Land Owners"/> - </menu> - <menu label="ランドマーク" name="Landmarks"> - <menu_item_call label="ã“ã“ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆ" name="Create Landmark Here"/> - <menu_item_call label="ç¾åœ¨åœ°ã‚’ホームã«è¨å®š" name="Set Home to Here"/> - </menu> - <menu_item_call label="ホーム" name="Teleport Home"/> <menu_item_check label="ミニマップ" name="Mini-Map"/> <menu_item_check label="世界地図" name="World Map"/> <menu_item_call label="スナップショット" name="Take Snapshot"/> + <menu_item_call label="ç¾åœ¨åœ°ã‚’ランドマーク" name="Create Landmark Here"/> + <menu label="å ´æ‰€ã®ãƒ—ãƒãƒ•ィール" name="Land"> + <menu_item_call label="åœŸåœ°æƒ…å ±" name="About Land"/> + <menu_item_call label="地域 / ä¸å‹•産" name="Region/Estate"/> + </menu> + <menu_item_call label="ã“ã®åœŸåœ°ã‚’購入" name="Buy Land"/> + <menu_item_call label="自分ã®åœŸåœ°" name="My Land"/> + <menu label="表示" name="LandShow"> + <menu_item_check label="移動コントãƒãƒ¼ãƒ«" name="Movement Controls"/> + <menu_item_check label="コントãƒãƒ¼ãƒ«ã‚’表示" name="Camera Controls"/> + </menu> + <menu_item_call label="ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ" name="Teleport Home"/> + <menu_item_call label="ç¾åœ¨åœ°ã‚’ホームã«è¨å®š" name="Set Home to Here"/> <menu label="太陽" name="Environment Settings"> <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="Revert to Region Default"/> + <menu_item_call label="エステートタイム" name="Revert to Region Default"/> <menu_item_call label="環境編集" name="Environment Editor"/> </menu> </menu> @@ -125,21 +119,20 @@ </menu> <menu label="ヘルプ" name="Help"> <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> - <menu_item_call label="ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«" name="Tutorial"/> <menu_item_call label="嫌ãŒã‚‰ã›ã‚’å ±å‘Š" name="Report Abuse"/> + <menu_item_call label="ãƒã‚°å ±å‘Š" name="Report Bug"/> <menu_item_call label="[APP_NAME] ã«ã¤ã„ã¦" name="About Second Life"/> </menu> <menu label="アドãƒãƒ³ã‚¹" name="Advanced"> - <menu_item_check label="30分経éŽã§ AFK ã«è¨å®š" name="Go Away/AFK When Idle"/> <menu_item_call label="ç§ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’åœæ¢ã™ã‚‹" name="Stop Animating My Avatar"/> <menu_item_call label="テクスãƒãƒ£ã®ãƒªãƒ™ãƒ¼ã‚¯" name="Rebake Texture"/> <menu_item_call label="UI ã®ã‚µã‚¤ã‚ºã‚’デフォルトã«è¨å®šã™ã‚‹" name="Set UI Size to Default"/> + <menu_item_call label="ウィンドウã®ã‚µã‚¤ã‚ºã®è¨å®šï¼š" name="Set Window Size..."/> <menu_item_check label="é ãã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ãªã„" name="Limit Select Distance"/> <menu_item_check label="カメラã®è·é›¢ç§»å‹•を制é™ã—ãªã„" name="Disable Camera Distance"/> <menu_item_check label="高解åƒåº¦ã‚¹ãƒŠãƒƒãƒ—ショット" name="HighResSnapshot"/> <menu_item_check label="シャッター音ã¨ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãªã—ã§ã‚¹ãƒŠãƒƒãƒ—ショットをディスクã«ä¿å˜" name="QuietSnapshotsToDisk"/> <menu_item_check label="圧縮ã—ã¦ã‚¹ãƒŠãƒƒãƒ—ショットをディスクã«ä¿å˜ã™ã‚‹" name="CompressSnapshotsToDisk"/> - <menu_item_call label="別åã§ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å˜" name="Save Texture As"/> <menu label="パフォーマンスツール" name="Performance Tools"> <menu_item_call label="ラグ計測器" name="Lag Meter"/> <menu_item_check label="統計ãƒãƒ¼" name="Statistics Bar"/> @@ -333,7 +326,6 @@ <menu_item_call label="XML ã§ä¿å˜" name="Save to XML"/> <menu_item_check label="XUI ãƒãƒ¼ãƒ を表示" name="Show XUI Names"/> <menu_item_call label="テスト用 IM ã‚’é€ä¿¡" name="Send Test IMs"/> - <menu_item_call label="インスペクターテスト" name="Test Inspectors"/> </menu> <menu label="ã‚¢ãƒã‚¿ãƒ¼" name="Character"> <menu label="ベークドテクスãƒãƒ£ã‚’å–å¾—" name="Grab Baked Texture"> @@ -366,6 +358,7 @@ <menu_item_call label="ã‚¢ãƒã‚¿ãƒ¼ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’デãƒãƒƒã‚°" name="Debug Avatar Textures"/> <menu_item_call label="ãƒãƒ¼ã‚«ãƒ«ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ダンプ" name="Dump Local Textures"/> </menu> + <menu_item_check label="HTTP Texture" name="HTTP Textures"/> <menu_item_call label="圧縮画åƒ" name="Compress Images"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="次回ã®èµ·å‹•時ã«ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示" name="Console Window"/> @@ -410,7 +403,6 @@ <menu_item_call label="タトゥ" name="Tattoo"/> <menu_item_call label="ã™ã¹ã¦ã®è¡£é¡ž" name="All Clothes"/> </menu> - <menu_item_check label="ツールãƒãƒ¼ã‚’表示" name="Show Toolbar"/> <menu label="ヘルプ" name="Help"> <menu_item_call label="リンデン公å¼ãƒ–ãƒã‚°" name="Official Linden Blog"/> <menu_item_call label="スクリプトãƒãƒ¼ã‚¿ãƒ«" name="Scripting Portal"/> diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml new file mode 100644 index 00000000000..0ec1030113a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web コンテンツ + </label> + <tooltip name="web_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ Web コンテンツãŒå«ã¾ã‚Œã¦ã„ã¾ã™ + </tooltip> + <playtip name="web_playtip"> + Web コンテンツを表示ã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + ムービー + </label> + <tooltip name="movie_tooltip"> + ã“ã“ã«ã¯ãƒ ービーãŒã‚りã¾ã™ + </tooltip> + <playtip name="movie_playtip"> + ムービーをå†ç”Ÿã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + ç”»åƒ + </label> + <tooltip name="image_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ç”»åƒãŒã‚りã¾ã™ + </tooltip> + <playtip name="image_playtip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®ç”»åƒã‚’表示ã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + オーディオ + </label> + <tooltip name="audio_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãŒã‚りã¾ã™ + </tooltip> + <playtip name="audio_playtip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’å†ç”Ÿã™ã‚‹ + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + リアルタイム・ストリーミング + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - ãªã— - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - ãªã— - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + オーディオ + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + ビデオ + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + ç”»åƒ + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg オーディオ・ビデオ + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF ドã‚ュメント + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript ドã‚ュメント + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + リッãƒãƒ†ã‚スト(RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web ページ(XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + マクãƒãƒ¡ãƒ‡ã‚£ã‚¢ãƒ‡ã‚£ãƒ¬ã‚¯ã‚¿ãƒ¼ + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + オーディオ(MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + オーディオ(MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + オーディオ(AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + オーディオ(WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + ç”»åƒï¼ˆBMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + ç”»åƒï¼ˆGIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + ç”»åƒï¼ˆJPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + ç”»åƒï¼ˆPNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + ç”»åƒï¼ˆSVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + ç”»åƒï¼ˆTIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web ページ + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + テã‚スト + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + ムービー(MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + ムービー(MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + ムービー(Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + ムービー(Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + ムービー(AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml new file mode 100644 index 00000000000..0ec1030113a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web コンテンツ + </label> + <tooltip name="web_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ Web コンテンツãŒå«ã¾ã‚Œã¦ã„ã¾ã™ + </tooltip> + <playtip name="web_playtip"> + Web コンテンツを表示ã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + ムービー + </label> + <tooltip name="movie_tooltip"> + ã“ã“ã«ã¯ãƒ ービーãŒã‚りã¾ã™ + </tooltip> + <playtip name="movie_playtip"> + ムービーをå†ç”Ÿã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + ç”»åƒ + </label> + <tooltip name="image_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ç”»åƒãŒã‚りã¾ã™ + </tooltip> + <playtip name="image_playtip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®ç”»åƒã‚’表示ã™ã‚‹ + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + オーディオ + </label> + <tooltip name="audio_tooltip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãŒã‚りã¾ã™ + </tooltip> + <playtip name="audio_playtip"> + ã“ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’å†ç”Ÿã™ã‚‹ + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + リアルタイム・ストリーミング + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - ãªã— - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - ãªã— - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + オーディオ + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + ビデオ + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + ç”»åƒ + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg オーディオ・ビデオ + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF ドã‚ュメント + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript ドã‚ュメント + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + リッãƒãƒ†ã‚スト(RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web ページ(XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + マクãƒãƒ¡ãƒ‡ã‚£ã‚¢ãƒ‡ã‚£ãƒ¬ã‚¯ã‚¿ãƒ¼ + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + オーディオ(MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + オーディオ(MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + オーディオ(AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + オーディオ(WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + ç”»åƒï¼ˆBMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + ç”»åƒï¼ˆGIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + ç”»åƒï¼ˆJPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + ç”»åƒï¼ˆPNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + ç”»åƒï¼ˆSVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + ç”»åƒï¼ˆTIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web ページ + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + テã‚スト + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + ムービー(MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + ムービー(MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + ムービー(Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + ムービー(Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + ムービー(AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 33ccc579a72..b502fb2e6e2 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -32,10 +32,10 @@ <button name="No" text="$notext"/> </form> </template> - <notification functor="GenericAcknowledge" label="䏿˜Žãªè¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" name="MissingAlert"> - ã‚ãªãŸã® [APP_NAME] ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ä»Šå—ã‘å–ã£ãŸè¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã”確èªãã ã•ã„。 + <notification functor="GenericAcknowledge" label="䏿˜Žã®é€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" name="MissingAlert"> + ã‚ãªãŸã® [APP_NAME] ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ä»Šå—ã‘å–ã£ãŸé€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã”確èªãã ã•ã„。 -エラー詳細: 「[_NAME]ã€ã¨ã„ã†è¦å‘Šã¯ notifications.xml ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ +エラー詳細: 「[_NAME]ã€ã¨ã„ã†é€šçŸ¥ã¯ notifications.xml ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -93,15 +93,13 @@ <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ã™ã¹ã¦ä¿å˜"/> </notification> <notification name="GrantModifyRights"> - ä»–ã®ä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒæ‰€æœ‰ã—ã¦ã„ã‚‹ -ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。 -[FIRST_NAME] [LAST_NAME]ã«å¯¾ã—ã¦å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ + 他人ã«ä¿®æ£æ¨©é™ã‚’与ãˆã‚‹ã¨ã€æ¨©é™ã‚’与ãˆã‚‰ã‚ŒãŸäººã¯ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€æŒã¡å¸°ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ¨©é™ã‚’与ãˆã‚‹éš›ã«ã¯ååˆ†ã«æ³¨æ„ã—ã¦ãã ã•ã„。 +[FIRST_NAME] [LAST_NAME] ã«ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> <notification name="GrantModifyRightsMultiple"> - 変更権é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒä½œæˆã—ãŸå…¨ã¦ã®ã‚ªãƒ–ジェクトを変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã«ã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。 -é¸æŠžã—ãŸä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ + 他人ã«ä¿®æ£æ¨©é™ã‚’与ãˆã‚‹ã¨ã€æ¨©é™ã‚’与ãˆã‚‰ã‚ŒãŸäººã¯ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ–ジェクトを変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ¨©é™ã‚’与ãˆã‚‹éš›ã«ã¯ååˆ†ã«æ³¨æ„ã—ã¦ãã ã•ã„。 +é¸æŠžã—ãŸä½äººã«ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> <notification name="RevokeModifyRights"> @@ -159,6 +157,11 @@ ã“ã®èƒ½åŠ›ã‚’[ROLE_NAME]ã«å‰²ã‚Šå½“ã¦ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> + <notification name="AttachmentDrop"> + アタッãƒãƒ¡ãƒ³ãƒˆã‚’下ã«ç½®ã“ã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="アタッãƒãƒ¡ãƒ³ãƒˆã‚’下ã«è½ã¨ã™å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> <notification name="ClickUnimplemented"> 申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã¾ã 未実装ã§ã™ã€‚ </notification> @@ -267,16 +270,10 @@ L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ </notification> <notification name="MultipleFacesSelected"> ç¾åœ¨è¤‡æ•°ã®é¢ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ -ã“ã®ã¾ã¾ç¶šã‘ãŸå ´åˆã€ãƒ¡ãƒ‡ã‚£ã‚¢ã®åˆ¥ã€…ã®æ®µéšŽãŒã‚ªãƒ–ジェクトã®è¤‡æ•°ã®é¢ã«è¨å®šã•れã¾ã™ã€‚ -メディアを 1 ã¤ã®é¢ã ã‘ã«å–り付ã‘ã‚‹ã«ã¯ã€ã€Œãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’é¸æŠžã€ã‚’é¸ã³ã€ã‚ªãƒ–ジェクトã®å¸Œæœ›ã™ã‚‹é¢ã‚’クリックã€ãれã‹ã‚‰ã€Œè¿½åŠ ã€ã‚’クリックã—ã¦ãã ã•ã„。 +ã“ã®ã¾ã¾ç¶šã‘ãŸå ´åˆã€ãƒ¡ãƒ‡ã‚£ã‚¢ã®åˆ¥ã€…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚ªãƒ–ジェクトã®è¤‡æ•°ã®é¢ã«è¨å®šã•れã¾ã™ã€‚ +メディアを 1 ã¤ã®é¢ã ã‘ã«å–り付ã‘ã‚‹ã«ã¯ã€ã€Œé¢ã‚’é¸æŠžã€ã‚’é¸ã‚“ã§ã‚ªãƒ–ジェクトã®å¸Œæœ›ã™ã‚‹é¢ã‚’クリックã€ãれã‹ã‚‰ã€Œè¿½åŠ ã€ã‚’クリックã—ã¦ãã ã•ã„。 <usetemplate ignoretext="メディアã¯é¸æŠžã—ãŸè¤‡æ•°ã®é¢ã«ã‚»ãƒƒãƒˆã•れã¾ã™ã€‚" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> </notification> - <notification name="WhiteListInvalidatesHomeUrl"> - ã“ã®å…¥åŠ›ã‚’ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã«è¿½åŠ ã™ã‚‹ã¨ã€ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢å‘ã‘ã«ç‰¹å®šã—㟠-ホームURL を無効ã¨ã—ã¾ã™ã€‚ ã‚ãªãŸã«ã¯ã“れを実行ã™ã‚‹è¨±å¯ãŒãªã„ã®ã§ã€ -入力ã¯ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã«ã¯è¿½åŠ ã•れã¾ã›ã‚“。 - <usetemplate name="okbutton" yestext="Ok"/> - </notification> <notification name="MustBeInParcel"> ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã«ã¯ã€ã“ã®åŒºç”»ã®å†…å´ã« ç«‹ã£ã¦ãã ã•ã„。 @@ -368,14 +365,6 @@ L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ <notification name="SelectHistoryItemToView"> 表示ã™ã‚‹å±¥æ´ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦ãã ã•ã„。 </notification> - <notification name="ResetShowNextTimeDialogs"> - ã“れらã®ãƒãƒƒãƒ—アップ全ã¦ã‚’å†åº¦æœ‰åŠ¹åŒ–ã—ã¾ã™ã‹ï¼Ÿï¼ˆä»¥å‰ã€Œä»Šå¾Œã¯è¡¨ç¤ºã—ãªã„ã€ã¨æŒ‡å®šã—ã¦ã„ã¾ã™ï¼‰ - <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - スã‚ップå¯èƒ½ãªãƒãƒƒãƒ—アップ全ã¦ã‚’無効化ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> - </notification> <notification name="CacheWillClear"> [APP_NAME] ã‚’å†èµ·å‹•後ã«ã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚ </notification> @@ -648,6 +637,10 @@ L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ <notification name="LandmarkCreated"> 「 [LANDMARK_NAME] ã€ã‚’「 [FOLDER_NAME] ã€ãƒ•ォルダã«è¿½åŠ ã—ã¾ã—ãŸã€‚ </notification> + <notification name="LandmarkAlreadyExists"> + ã“ã®ä½ç½®ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’æ—¢ã«æŒã£ã¦ã„ã¾ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> åœŸåœ°ã®æ‰€æœ‰è€…ãŒè¨±å¯ã—ã¦ã„ãªã„ãŸã‚〠ランドマークを作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @@ -753,10 +746,8 @@ L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 </notification> <notification name="ForceOwnerAuctionWarning"> - ã“ã®åŒºç”»ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‡ºå“ã•れã¦ã„ã¾ã™ã€‚ -åŒºç”»ã®æ‰€æœ‰æ¨©ã‚’å–å¾—ã™ã‚‹ã¨ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ãŒç„¡åйã«ãªã‚Šã€ -å…¥æœãŒé–‹å§‹ã—ã¦ã„ãŸã‚‰ä¸æº€ã«æ€ã†ä½äººãŒå‡ºã¦ãã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 -所有権をå–å¾—ã—ã¾ã™ã‹ï¼Ÿ + ã“ã®åŒºç”»ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‡ºã•れã¦ã„ã¾ã™ã€‚ 所有権を変更ã™ã‚‹ã¨ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã¯ã‚ャンセルã¨ãªã‚Šã€æ—¢ã«ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‚åŠ ã—ã¦ã„ã‚‹ä½äººãŒã„れã°ãã®äººã«è¿·æƒ‘ã‚’ã‹ã‘ã¦ã—ã¾ã„ã¾ã™ã€‚ +所有権を変更ã—ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -805,11 +796,11 @@ L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ ã“れより1ã¤ã®åŒºç”»ã‚’é¸æŠžã—ã¦ãã ã•ã„。 </notification> <notification name="ParcelCanPlayMedia"> - ã“ã“ã§ã¯ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãƒ»ãƒ¡ãƒ‡ã‚£ã‚¢å†ç”ŸãŒå¯èƒ½ã§ã™ã€‚ -メディアã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã«ã¯ã€é«˜é€Ÿãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šç’°å¢ƒãŒå¿…è¦ã§ã™ã€‚ + ã“ã®å ´æ‰€ã§ã¯ã€ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãƒ¡ãƒ‡ã‚£ã‚¢ã®å†ç”ŸãŒå¯èƒ½ã§ã™ã€‚ +ストリーミングメディアã«ã¯ã€é«˜é€Ÿã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã‚’è¦ã—ã¾ã™ã€‚ -利用å¯èƒ½ã«ãªã£ãŸã‚‰å†ç”Ÿã—ã¾ã™ã‹ï¼Ÿ -(ã“ã®ã‚ªãƒ—ションã¯ã€ã€Œç’°å¢ƒè¨å®šã€ï¼žã€ŒéŸ³å£°ã¨ãƒ“デオã€ã§å¾Œã‹ã‚‰ã§ã‚‚変更ã§ãã¾ã™ï¼‰ +利用å¯èƒ½ãªã¨ãã«ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å†ç”Ÿã—ã¾ã™ã‹ï¼Ÿ +(ã“ã®ã‚ªãƒ—ションã¯ã€ã€Œç’°å¢ƒè¨å®šã€ > 「プライãƒã‚·ãƒ¼ã€ã§ã‚ã¨ã‹ã‚‰ã§ã‚‚変更ã§ãã¾ã™ã€‚) <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアをå†ç”Ÿ"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -1394,6 +1385,10 @@ F1ã‚ーを押ã—ã¦ãã ã•ã„。 [INVITE] <usetemplate name="okcancelbuttons" notext="辞退" yestext="å‚åŠ "/> </notification> + <notification name="JoinedTooManyGroups"> + åŠ å…¥ã§ãã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã®æœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚ æ–°ã—ãグループã«å‚åŠ ã€ã¾ãŸã¯ä½œæˆã™ã‚‹å‰ã«ã€ã©ã‚Œã‹ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰æŠœã‘ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ <form name="form"> @@ -1641,11 +1636,11 @@ L$[AMOUNT]ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - ã“ã®åºƒå‘Šã«Matureコンテンツã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ + ã“ã®åºƒå‘Šã«ã€ŒæŽ§ãˆã‚ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> <notification name="SetGroupMature"> - ã“ã®åºƒå‘Šã«Matureコンテンツã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ + ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã€ŒæŽ§ãˆã‚ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> <notification label="å†èµ·å‹•を確èª" name="ConfirmRestart"> @@ -1663,8 +1658,10 @@ L$[AMOUNT]ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ </form> </notification> <notification label="地域ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†æŒ‡å®šå¤‰æ›´æ¸ˆã¿" name="RegionMaturityChange"> - ã“ã®åœ°åŸŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†æŒ‡å®šãŒã‚¢ãƒƒãƒ—デートã•れã¾ã—ãŸã€‚ -ã“ã®å¤‰æ›´ãŒåœ°å›³ã«åæ˜ ã•れるã¾ã§ã«ã¯ã—ã°ã‚‰ã時間ãŒã‹ã‹ã‚Šã¾ã™ã€‚ + ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ãŒã‚¢ãƒƒãƒ—デートã•れã¾ã—ãŸã€‚ +地図ã«å¤‰æ›´ãŒåæ˜ ã•れるã¾ã§æ•°åˆ†ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ + +アダルト専用リージョンã«å…¥ã‚‹ã«ã¯ã€ä½äººã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¹´é½¢ç¢ºèªã‹æ”¯æ‰•方法ã®ã„ãšã‚Œã‹ã§ã€Œç¢ºèªæ¸ˆã¿ã€ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 </notification> <notification label="ボイスãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸ä¸€è‡´" name="VoiceVersionMismatch"> [APP_NAME] ã®ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ãŠã‘るボイスãƒãƒ£ãƒƒãƒˆã®äº’æ›æ€§ãŒã‚りã¾ã›ã‚“。 ボイスãƒãƒ£ãƒƒãƒˆã‚’æ£å¸¸ã«è¡Œã†ãŸã‚ã«ã¯ã€[APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãŒå¿…è¦ã§ã™ã€‚ @@ -1784,16 +1781,6 @@ L$[AMOUNT]ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ ã“ã®ãƒ„ールを利用ã—㦠[http://secondlife.com/corporate/tos.php 利用è¦ç´„] ã‚„ [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] ã®é•åã‚’å ±å‘Šã—ã¦ãã ã•ã„。 å ±å‘Šã•れãŸå«ŒãŒã‚‰ã›ã¯ã™ã¹ã¦èª¿æŸ»ãƒ»è§£æ±ºã•れã¾ã™ã€‚ 解決ã•れãŸã‚‚ã®ã¯ [http://secondlife.com/support/incidentreport.php Incident Report] ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - <notification name="HelpReportAbuseEmailEO"> - é‡è¦ï¼š ã“ã®å ±å‘Šã¯ Linden Lab ã«ã¯é€ä¿¡ã•れãšã€ç¾åœ¨ã‚ãªãŸãŒã„ã‚‹ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®æ‰€æœ‰è€…ã«é€ä¿¡ã•れã¾ã™ã€‚ - -ä½äººã‚„訪å•者ã¸ã®ã‚µãƒ¼ãƒ“スã®ä¸€ç’°ã¨ã—ã¦ã€ç¾åœ¨ã„ã‚‹ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®æ‰€æœ‰è€…ã¯ã€ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³å†…ã®ã™ã¹ã¦ã®å ±å‘Šã‚’自らå—ã‘å–りã€è§£æ±ºã™ã‚‹ã‚ˆã†è¨å®šã—ã¦ã„ã¾ã™ã€‚ Linden Lab ã¯ã“ã“ã‹ã‚‰é€ä¿¡ã•れãŸå ±å‘Šã®èª¿æŸ»ã‚’行ã„ã¾ã›ã‚“。 - -ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®æ‰€æœ‰è€…ã¯ã€ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸å‹•産約款ã«è¨˜è¼‰ã•れãŸãƒãƒ¼ã‚«ãƒ«ãƒ«ãƒ¼ãƒ«ã«å‰‡ã£ã¦å ±å‘Šã«å¯¾å¿œã—ã¾ã™ã€‚ -(「世界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®ã€ŒåœŸåœ°æƒ…å ±ã€ã§ç´„款を確èªã§ãã¾ã™ã€‚) - -ã“ã®å ±å‘Šã¸ã®è§£æ±ºç–ã¯ã€ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ã®ã¿é©ç”¨ã•れã¾ã™ã€‚ [SECOND_LIFE] ã®ãã®ä»–ã®ã‚¨ãƒªã‚¢ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ä½äººã«ã¯ã€ã“ã®å ±å‘Šã®çµæžœã«ã¯å½±éŸ¿ãŒã‚りã¾ã›ã‚“。 [SECOND_LIFE] ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制é™ã§ãã‚‹ã®ã¯ã€Linden Lab ã ã‘ã§ã™ã€‚ </notification> <notification name="HelpReportAbuseSelectCategory"> 嫌ãŒã‚‰ã›å ±å‘Šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。 @@ -2034,8 +2021,7 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« ジェスãƒãƒ£ãƒ¼ã® [NAME] ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 </notification> <notification name="UnableToLoadGesture"> - ジェスãƒãƒ£ãƒ¼[NAME] ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 -å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。 + [NAME] ã¨ã„ã†ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ </notification> <notification name="LandmarkMissing"> データベースã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ãŒã‚りã¾ã›ã‚“。 @@ -2139,7 +2125,7 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ã«æ˜Žè¨˜ã•れã¦ã„るコンテンツ制é™ã«ã‚ˆã‚Šã€ã‚ãªãŸã®æ¤œç´¢èªžã®ä¸€éƒ¨ãŒé™¤å¤–ã•れã¾ã—ãŸã€‚ </notification> <notification name="NoContentToSearch"> - å°‘ãªãã¨ã‚‚ã©ã‚Œã‹ä¸€ã¤ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ç¨®é¡žã‚’é¸æŠžã—ã¦æ¤œç´¢ã‚’行ã£ã¦ãã ã•ã„。(PG, Mature, Adult) + å°‘ãªãã¨ã‚‚ã©ã‚Œã‹ä¸€ã¤ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ç¨®é¡žã‚’é¸æŠžã—ã¦æ¤œç´¢ã‚’行ã£ã¦ãã ã•ã„ã€‚ï¼ˆä¸€èˆ¬ã€æŽ§ãˆã‚ã€ã‚¢ãƒ€ãƒ«ãƒˆï¼‰ </notification> <notification name="GroupVote"> [NAME] ã¯æŠ•ç¥¨ã®ç”³è«‹ã‚’ã—ã¦ã„ã¾ã™ï¼š @@ -2152,6 +2138,9 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> イベント通知: @@ -2201,8 +2190,7 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクトã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ </notification> <notification name="OtherObjectsReturned2"> - é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚り〠-ä½äººã®[NAME]ã®æ‰€æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ + 「[NAME]ã€ã¨ã„ã†åå‰ã®ä½äººãŒæ‰€æœ‰ã™ã‚‹ã€é¸æŠžã—ãŸåŒºç”»ã«ã‚るオブジェクトã¯ã€æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã—ãŸã€‚ </notification> <notification name="GroupObjectsReturned"> é¸æŠžã•れã¦ã„る区画上ã«ã‚りã€[GROUPNAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã¨å…±æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ @@ -2215,7 +2203,6 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« <notification name="ServerObjectMessage"> [NAME] ã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼š [MSG] - <usetemplate name="okcancelbuttons" notext="OK" yestext="調ã¹ã‚‹"/> </notification> <notification name="NotSafe"> ã“ã®åœŸåœ°ã§ã¯ãƒ€ãƒ¡ãƒ¼ã‚¸ãŒæœ‰åйã§ã™ã€‚ @@ -2327,8 +2314,8 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« 有効ãªåŒºç”»ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ </notification> <notification name="ObjectGiveItem"> - [NAME_SLURL] ãŒæ‰€æœ‰ã™ã‚‹ [OBJECTFROMNAME] ãŒã€ã‚ãªãŸã« [OBJECTTYPE] : -[ITEM_SLURL] を渡ã—ã¾ã—㟠+ [NAME_SLURL] ãŒæ‰€æœ‰ã™ã‚‹ [OBJECTFROMNAME] ã¨ã„ã†åå‰ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã«ã“ã® [OBJECTTYPE] を渡ã—ã¾ã—ãŸï¼š +[ITEM_SLURL] <form name="form"> <button name="Keep" text="å—ã‘å–ã‚‹"/> <button name="Discard" text="ç ´æ£„"/> @@ -2336,8 +2323,8 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - ï¼ˆä¸æ˜Žã®ä½äººï¼‰ãŒæ‰€æœ‰ã™ã‚‹ [OBJECTFROMNAME] ãŒã€ã‚ãªãŸã« [OBJECTTYPE] : -[ITEM_SLURL] を渡ã—ã¾ã—㟠+ ï¼ˆä¸æ˜Žã®ä½äººï¼‰ãŒæ‰€æœ‰ã™ã‚‹ [OBJECTFROMNAME] ã¨ã„ã†åå‰ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã«ã“ã® [OBJECTTYPE] を渡ã—ã¾ã—ãŸï¼š +[ITEM_SLURL] <form name="form"> <button name="Keep" text="å—ã‘å–ã‚‹"/> <button name="Discard" text="ç ´æ£„"/> @@ -2345,12 +2332,12 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« </form> </notification> <notification name="UserGiveItem"> - [NAME_SLURL] ãŒã‚ãªãŸã« [OBJECTTYPE]: -[ITEM_SLURL] を渡ã—ã¾ã—㟠+ [NAME_SLURL] ãŒã‚ãªãŸã«ã“ã® [OBJECTTYPE] を渡ã—ã¾ã—ãŸï¼š +[ITEM_SLURL] <form name="form"> - <button name="Keep" text="å—ã‘å–ã‚‹"/> <button name="Show" text="表示"/> <button name="Discard" text="ç ´æ£„"/> + <button name="Mute" text="ブãƒãƒƒã‚¯"/> </form> </notification> <notification name="GodMessage"> @@ -2375,6 +2362,9 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« <button name="Cancel" text="å–り消ã—"/> </form> </notification> + <notification name="TeleportOfferSent"> + [TO_NAME] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã—ãŸã€‚ + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2393,8 +2383,12 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« <form name="form"> <button name="Accept" text="å—ã‘入れる"/> <button name="Decline" text="辞退"/> + <button name="Send IM" text="IMã‚’é€ä¿¡"/> </form> </notification> + <notification name="FriendshipOffered"> + [TO_NAME] ã«ãƒ•レンド登録を申ã—出ã¾ã—ãŸã€‚ + </notification> <notification name="OfferFriendshipNoMessage"> [NAME]ã¯ã€ フレンド登録を申ã—込んã§ã„ã¾ã™ã€‚ @@ -2412,9 +2406,8 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« [NAME]ã¯ã€ãƒ•レンド 登録をæ–りã¾ã—ãŸã€‚ </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST]㌠-ã‚ãªãŸã«ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é€ã£ã¦ãã¾ã—ãŸã€‚ -ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸã®æŒã¡ç‰©ã«ãƒ–ックマークãŒè¿½åŠ ã•れã€ã“ã®ä½äººã«ã™ã°ã‚„ãIMã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + [FIRST] [LAST] ãŒã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’渡ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +ã‚ãªãŸã®æŒã¡ç‰©ã«ãƒ–ックマークãŒè¿½åŠ ã•れã€ã“ã®ä½äººã«ç´ æ—©ã IM ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ <form name="form"> <button name="Accept" text="å—ã‘入れる"/> <button name="Decline" text="辞退"/> @@ -2494,14 +2487,6 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« <button name="Block" text="ブãƒãƒƒã‚¯"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - L$ [AMOUNT] ã‚’å—ã‘å–りã¾ã—ãŸã€‚ -ã‚ãªãŸã® L$ 残高ã¯ç”»é¢å³ä¸Šã«è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚ - </notification> - <notification name="FirstBalanceDecrease"> - L$ [AMOUNT] を支払ã„ã¾ã—ãŸã€‚ -ã‚ãªãŸã® L$ 残高ã¯ç”»é¢å³ä¸Šã«è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚ - </notification> <notification name="BuyLindenDollarSuccess"> ãŠæ”¯æ‰•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ @@ -2509,58 +2494,17 @@ Webページã«ã“れをリンクã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã« [http://secondlife.com/account/ マイアカウント] ã®å–引履æ´ãƒšãƒ¼ã‚¸ã§ã€æ”¯æ‰•状æ³ã‚’確èªã§ãã¾ã™ã€‚ </notification> - <notification name="FirstSit"> - ç€å¸ä¸ã§ã™ã€‚ -周囲を見るã«ã¯çŸ¢å°ã‚ー㋠AWSD ã‚ーを使ã£ã¦ãã ã•ã„。 -ç«‹ã¤ã¨ãã«ã¯ã€Œç«‹ã¡ä¸ŠãŒã‚‹ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。 - </notification> - <notification name="FirstMap"> - 地図をクリック・ドラッグã—ã¦å‘¨å›²ã‚’見ã¦ãã ã•ã„。 -ダブルクリックã™ã‚‹ã¨ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ -å³å´ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã§å ´æ‰€ã‚’探ã—ãŸã‚ŠèƒŒæ™¯ã‚’変更ã—ã¦ãã ã•ã„。 - </notification> - <notification name="FirstBuild"> - 制作ツールを開ãã¾ã—ãŸã€‚ 見るもã®ã™ã¹ã¦ãŒã“ã®ãƒ„ールã§ä½œæˆã•れãŸã‚‚ã®ã§ã™ã€‚ - </notification> - <notification name="FirstTeleport"> - ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ç‰¹å®šã®ã‚¨ãƒªã‚¢ã«ã®ã¿ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚ 矢å°ãŒç›®çš„地を指ã—ã¦ã„ã¾ã™ã€‚ 矢å°ã‚’クリックã™ã‚‹ã¨æ¶ˆãˆã¾ã™ã€‚ - </notification> <notification name="FirstOverrideKeys"> ã‚ãªãŸã®ç§»å‹•ã‚ãƒ¼ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ“作ã—ã¦ã„ã¾ã™ã€‚ 矢å°ã‹AWSDã®ã‚ーã§å‹•作を確èªã—ã¦ãã ã•ã„。 銃ãªã©ã®ã‚ªãƒ–ジェクトã ã¨ã€ä¸€äººç§°è¦–点(マウスルック)ã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ Mã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ - </notification> - <notification name="FirstAppearance"> - 容姿を編集ä¸ã§ã™ã€‚ -周囲を見るã«ã¯çŸ¢å°ã‚ーを使ã£ã¦ãã ã•ã„。 -終ã‚ã£ãŸã‚‰ã€Œã™ã¹ã¦ä¿å˜ã€ã‚’押ã—ã¦ãã ã•ã„。 - </notification> - <notification name="FirstInventory"> - ã“れã¯ã‚ãªãŸã®æŒã¡ç‰©ã§ã™ã€‚所有ã—ã¦ã„るアイテムãŒå…¥ã£ã¦ã„ã¾ã™ã€‚ - -* アイテムを自分ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¦ãã ã•ã„。 -* アイテムを地é¢ã«ãƒ‰ãƒ©ãƒƒã‚°ã—㦠Rez ã—ã¦ãã ã•ã„。 -* ノートカードをダブルクリックã—ã¦é–‹ã„ã¦ãã ã•ã„。 </notification> <notification name="FirstSandbox"> ã“ã“ã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚¨ãƒªã‚¢ã§ã™ã€‚ä½äººãŒåˆ¶ä½œã‚’å¦ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã“ã§åˆ¶ä½œã•れãŸã‚‚ã®ã¯æ™‚é–“ãŒçµŒã¤ã¨å‰Šé™¤ã•れã¾ã™ã€‚制作ã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œå–ã‚‹ã€ã‚’é¸ã³ã€æŒã¡ç‰©ã«å…¥ã‚Œã¦ãŠæŒã¡å¸°ã‚Šã™ã‚‹ã®ã‚’ãŠå¿˜ã‚Œãªã。 </notification> - <notification name="FirstFlexible"> - ã“ã®ã‚ªãƒ–ジェクトã¯ãƒ•レã‚シブルã§ã™ã€‚ フレã‚シスã¯ã€ã€Œç‰©ç†ã€ã§ã¯ãªã「ファントムã€ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 - </notification> - <notification name="FirstDebugMenus"> - アドãƒãƒ³ã‚¹ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ãã¾ã—ãŸã€‚ - -ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®æœ‰åŠ¹ãƒ»ç„¡åŠ¹è¨å®š - Windows: Ctrl+Alt+D - Mac: ⌥⌘D - </notification> - <notification name="FirstSculptedPrim"> - スカルプトプリムを編集ä¸ã§ã™ã€‚ スカルプトã«ã¯å½¢çжã®è¼ªéƒã‚’指定ã™ã‚‹ãŸã‚ã®ç‰¹åˆ¥ãªãƒ†ã‚¯ã‚¹ãƒãƒ£ãŒå¿…è¦ã§ã™ã€‚ - </notification> <notification name="MaxListSelectMessage"> ã“ã®ãƒªã‚¹ãƒˆã‹ã‚‰[MAX_SELECT]個ã¾ã§ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã§ãã¾ã™ã€‚ </notification> @@ -2654,12 +2598,23 @@ Mã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ <notification name="UnsupportedCommandSLURL"> クリックã—㟠SLurl ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 </notification> + <notification name="BlockedSLURL"> + 信用ã§ããªã„ブラウザã‹ã‚‰ SLurl ãŒé€ã‚‰ã‚Œã¦ããŸã®ã§ã€ã‚»ã‚ュリティã®ãŸã‚ブãƒãƒƒã‚¯ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="ThrottledSLURL"> + çŸæœŸé–“ã®ã‚ã„ã ã«ã€ä¿¡ç”¨ã§ããªã„ブラウザã‹ã‚‰è¤‡æ•°ã® SLurls ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ +安全ã®ãŸã‚ã«æ•°ç§’間ブãƒãƒƒã‚¯ã•れã¾ã™ã€‚ + </notification> <notification name="IMToast"> [MESSAGE] <form name="form"> <button name="respondbutton" text="è¿”ç”"/> </form> </notification> + <notification name="ConfirmCloseAll"> + ã™ã¹ã¦ã® IM ã‚’é–‰ã˜ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> <notification name="AttachmentSaved"> アタッãƒãƒ¡ãƒ³ãƒˆãŒä¿å˜ã•れã¾ã—ãŸã€‚ </notification> @@ -2671,6 +2626,14 @@ Mã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ 「[ERROR]〠<usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TextChatIsMutedByModerator"> + モデレーターãŒã‚ãªãŸã®æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚’ミュートã—ã¾ã—ãŸã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + モデレーターãŒã‚ãªãŸã®ãƒœã‚¤ã‚¹ã‚’ミュートã—ã¾ã—ãŸã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmClearTeleportHistory"> テレãƒãƒ¼ãƒˆå±¥æ´ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> diff --git a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml new file mode 100644 index 00000000000..90491e84c5d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + 䏿˜Žã®ã‚ªãƒ–ジェクト + </string> + <text name="object_name"> + åå‰ã®ãªã„オブジェクト + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml index 364ba76763f..17e1283d240 100644 --- a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <panel name="panel_call_buttons"> - <button label="コール" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントãƒãƒ¼ãƒ«" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="コール" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントãƒãƒ¼ãƒ«" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml index 2efcb9f723e..03eaf33d922 100644 --- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml @@ -23,4 +23,5 @@ </string> <text name="avatar_name" value="䏿˜Ž"/> <text name="last_interaction" value="0 ç§’"/> + <button name="profile_btn" tool_tip="プãƒãƒ•ィールã®è¡¨ç¤º"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml index 58ef8c31071..5d6a6065aeb 100644 --- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml @@ -4,7 +4,7 @@ ブãƒãƒƒã‚¯ãƒªã‚¹ãƒˆ </text> <scroll_list name="blocked" tool_tip="ç¾åœ¨ãƒ–ãƒãƒƒã‚¯ã•れã¦ã„ã‚‹ä½äººä¸€è¦§"/> - <button label="ä½äººã‚’ブãƒãƒƒã‚¯..." label_selected="ä½äººã‚’ブãƒãƒƒã‚¯..." name="Block resident..." tool_tip="ブãƒãƒƒã‚¯ã—ãŸã„ä½äººã‚’é¸ã‚“ã§ãã ã•ã„"/> + <button label="ã‚¢ãƒã‚¿ãƒ¼ã‚’ブãƒãƒƒã‚¯" label_selected="ä½äººã‚’ブãƒãƒƒã‚¯..." name="Block resident..." tool_tip="ブãƒãƒƒã‚¯ã—ãŸã„ä½äººã‚’é¸ã‚“ã§ãã ã•ã„"/> <button label="åå‰ã§ã‚ªãƒ–ジェクトをブãƒãƒƒã‚¯..." label_selected="åå‰ã§ã‚ªãƒ–ジェクトをブãƒãƒƒã‚¯..." name="Block object by name..." tool_tip="åå‰ã§ãƒ–ãƒãƒƒã‚¯ã—ãŸã„オブジェクトをé¸ã‚“ã§ãã ã•ã„"/> <button label="ブãƒãƒƒã‚¯è§£é™¤" label_selected="ブãƒãƒƒã‚¯è§£é™¤" name="Unblock" tool_tip="ブãƒãƒƒã‚¯ãƒªã‚¹ãƒˆã‹ã‚‰ä½äººãƒ»ã‚ªãƒ–ジェクトを削除"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml index 5edc1b651d7..414413a9805 100644 --- a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml @@ -8,7 +8,7 @@ </string> <layout_stack name="toolbar_stack"> <layout_panel name="gesture_panel"> - <gesture_combo_box label="ジェスãƒãƒ£ãƒ¼" name="Gesture" tool_tip="ジェスãƒãƒ£ãƒ¼ã®è¡¨ç¤ºãƒ»éžè¡¨ç¤º"/> + <gesture_combo_list label="ジェスãƒãƒ£ãƒ¼" name="Gesture" tool_tip="ジェスãƒãƒ£ãƒ¼ã®è¡¨ç¤ºãƒ»éžè¡¨ç¤º"/> </layout_panel> <layout_panel name="movement_panel"> <button label="移動" name="movement_btn" tool_tip="移動コントãƒãƒ¼ãƒ«ã®è¡¨ç¤ºãƒ»éžè¡¨ç¤º"/> @@ -19,5 +19,15 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="スナップショットを撮る"/> </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="Conversations"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="通知"/> + </chiclet_notification> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml index 1a5933a4e90..7fc4e6f6741 100644 --- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_classified_info"> <panel.string name="type_mature"> - Mature + 控ãˆã‚ </panel.string> <panel.string name="type_pg"> - PG コンテンツ + 一般コンテンツ </panel.string> <text name="title" value="ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šæƒ…å ±"/> <scroll_container name="profile_scroll"> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml index ca065113d30..4cb5884f285 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml @@ -24,10 +24,10 @@ <button label="ç¾åœ¨åœ°ã«è¨å®š" name="set_to_curr_location_btn"/> <combo_box name="content_type"> <combo_item name="mature_ci"> - Matureコンテンツ + 控ãˆã‚コンテンツ </combo_item> <combo_item name="pg_ci"> - PGコンテンツ + 一般コンテンツ </combo_item> </combo_box> <spinner label="L$" name="price_for_listing" tool_tip="æŽ²è¼‰ä¾¡æ ¼" value="50"/> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml index b232a8db61e..2a850ab29ca 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml @@ -19,6 +19,9 @@ <string name="partner_edit_link_url"> http://www.secondlife.com/account/partners.php?lang=ja </string> + <string name="my_account_link_url"> + http://jp.secondlife.com/my + </string> <string name="no_partner_text" value="ãªã—"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -44,7 +47,7 @@ <text name="title_partner_text" value="マイパートナー:"/> <text name="partner_edit_link" value="[[URL] 編集]"/> <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> + <name_box name="partner_text" value="[FIRST] [LAST]"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml index d4cf678d70a..80a68f8258b 100644 --- a/indra/newview/skins/default/xui/ja/panel_friends.xml +++ b/indra/newview/skins/default/xui/ja/panel_friends.xml @@ -1,53 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - 複数ã®ãƒ•レンド... + 複数ã®ãƒ•レンド </string> - <scroll_list name="friend_list" - tool_tip="複数ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’é¸æŠžã™ã‚‹ã«ã¯ã€Shiftã‚ーã¾ãŸã¯Ctrlã‚ーを押ã—ãªãŒã‚‰åå‰ã‚’クリックã—ã¾ã™ã€‚"> - <column name="icon_online_status" tool_tip="オンライン・ステータス" /> - <column label="åå‰" name="friend_name" tool_tip="åå‰" /> - <column name="icon_visible_online" - tool_tip="フレンドã¯ã€ã‚ãªãŸãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‹ã©ã†ã‹ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" /> - <column name="icon_visible_map" - tool_tip="フレンドã¯ã€åœ°å›³ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" /> - <column name="icon_edit_mine" - tool_tip="フレンドã¯ã€ã‚ªãƒ–ジェクトを編集ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" /> - <column name="icon_edit_theirs" - tool_tip="ã‚ãªãŸã¯ã€ã“ã®ãƒ•レンドã®ã‚ªãƒ–ジェクトを編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" /> + <scroll_list name="friend_list" tool_tip="複数ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’é¸æŠžã™ã‚‹ã«ã¯ã€Shiftã‚ーã¾ãŸã¯Ctrlã‚ーを押ã—ãªãŒã‚‰åå‰ã‚’クリックã—ã¾ã™ã€‚"> + <column name="icon_online_status" tool_tip="オンライン・ステータス"/> + <column label="åå‰" name="friend_name" tool_tip="åå‰"/> + <column name="icon_visible_online" tool_tip="フレンドã¯ã€ã‚ãªãŸãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‹ã©ã†ã‹ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> + <column name="icon_visible_map" tool_tip="フレンドã¯ã€åœ°å›³ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> + <column name="icon_edit_mine" tool_tip="フレンドã¯ã€ã‚ªãƒ–ジェクトを編集ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> + <column name="icon_edit_theirs" tool_tip="ã‚ãªãŸã¯ã€ã“ã®ãƒ•レンドã®ã‚ªãƒ–ジェクトを編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> </scroll_list> <panel name="rights_container"> <text name="friend_name_label" right="-10"> ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’é¸æŠžã—ã¦æ¨©åˆ©ã‚’変更... </text> - <check_box label="オンライン・ステータスã®ç¢ºèªã‚’許å¯ã™ã‚‹" - name="online_status_cb" - tool_tip="コーリングカードã‚ã‚‹ã„ã¯ãƒ•レンドリストã§ã“ã®ãƒ•レンドãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’ç¢ºèªã§ãるよã†è¨å®š" /> - <check_box label="世界地図上ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’æ¤œç´¢å¯èƒ½ã«ã™ã‚‹" - name="map_status_cb" - tool_tip="ã“ã®ãƒ•レンドãŒåœ°å›³ã§ç§ã®ä½ç½®ã‚’発見ã§ãるよã†ã«è¨å®š" /> - <check_box label="オブジェクトã®ä¿®æ£ã‚’許å¯ã™ã‚‹" name="modify_status_cb" - tool_tip="ã“ã®ãƒ•レンドãŒã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ”¹é€ ã§ãる許å¯ã‚’与ãˆã‚‹" /> + <check_box label="オンライン・ステータスã®ç¢ºèªã‚’許å¯ã™ã‚‹" name="online_status_cb" tool_tip="コーリングカードã‚ã‚‹ã„ã¯ãƒ•レンドリストã§ã“ã®ãƒ•レンドãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’ç¢ºèªã§ãるよã†è¨å®š"/> + <check_box label="世界地図上ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’æ¤œç´¢å¯èƒ½ã«ã™ã‚‹" name="map_status_cb" tool_tip="ã“ã®ãƒ•レンドãŒåœ°å›³ã§ç§ã®ä½ç½®ã‚’発見ã§ãるよã†ã«è¨å®š"/> + <check_box label="オブジェクトã®ä¿®æ£ã‚’許å¯ã™ã‚‹" name="modify_status_cb" tool_tip="ã“ã®ãƒ•レンドãŒã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ”¹é€ ã§ãる許å¯ã‚’与ãˆã‚‹"/> <text name="process_rights_label"> 権利変更をプãƒã‚»ã‚¹ä¸... </text> </panel> - <pad left="-95" /> - <button label="IM/コール" name="im_btn" - tool_tip="インスタントメッセージ・セッションを開ã" - width="90" /> - <button label="プãƒãƒ•ィール" name="profile_btn" - tool_tip="写真ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€ãŠã‚ˆã³ãã®ä»–ã®æƒ…å ±ã‚’è¡¨ç¤ºã—ã¾ã™ã€‚" - width="90" /> - <button label="テレãƒãƒ¼ãƒˆ..." name="offer_teleport_btn" - tool_tip="ã“ã®ãƒ•レンドã«ã€ã‚ãªãŸã®ç¾åœ¨ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¾ã§ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’申ã—出ã¾ã™ã€‚" - width="90" /> - <button label="支払ã†..." name="pay_btn" - tool_tip="リンデンドル (L$) ã‚’ã“ã®ãƒ•レンドã«ã‚ã’ã‚‹" - width="90" /> - <button label="削除..." name="remove_btn" - tool_tip="ã“ã®äººç‰©ã‚’フレンドリストã‹ã‚‰å¤–ã—ã¾ã™ã€‚" - width="90" /> - <button label="è¿½åŠ ..." name="add_btn" - tool_tip="ä½äººã«ãƒ•レンドシップを申請ã—ã¾ã™ã€‚" width="90" /> + <pad left="-95"/> + <button label="IM/コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開ã" width="90"/> + <button label="プãƒãƒ•ィール" name="profile_btn" tool_tip="写真ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€ãŠã‚ˆã³ãã®ä»–ã®æƒ…å ±ã‚’è¡¨ç¤ºã—ã¾ã™ã€‚" width="90"/> + <button label="テレãƒãƒ¼ãƒˆ" name="offer_teleport_btn" tool_tip="ã“ã®ãƒ•レンドã«ã€ã‚ãªãŸã®ç¾åœ¨ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¾ã§ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’申ã—出ã¾ã™ã€‚" width="90"/> + <button label="支払ã†" name="pay_btn" tool_tip="リンデンドル (L$) ã‚’ã“ã®ãƒ•レンドã«ã‚ã’ã‚‹" width="90"/> + <button label="削除" name="remove_btn" tool_tip="ã“ã®äººç‰©ã‚’フレンドリストã‹ã‚‰å¤–ã—ã¾ã™ã€‚" width="90"/> + <button label="è¿½åŠ " name="add_btn" tool_tip="フレンド登録を申ã—出る" width="90"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml index 5369daed03a..1c89675c1ed 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±" name="group_info_btn"/> - <panel name="panel_call_buttons"> - <button label="グループã«ã‚³ãƒ¼ãƒ«" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントãƒãƒ¼ãƒ«ã‚’é–‹ã" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="グループã«ã‚³ãƒ¼ãƒ«" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントãƒãƒ¼ãƒ«ã‚’é–‹ã" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml index 98b118f58f7..538f3800bd6 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml @@ -22,16 +22,16 @@ ç§ã®ã‚¿ã‚¤ãƒˆãƒ« </text> <combo_box name="active_title" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—をアクティブã«ã—ãŸã¨ãã«ã€ã‚¢ãƒã‚¿ãƒ¼åã®ä¸Šã«è¡¨ç¤ºã•れるタイトルをè¨å®šã—ã¾ã™ã€‚"/> - <check_box label="通知をå—ä¿¡" name="receive_notices" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ã®é€šçŸ¥ã‚’å—ä¿¡ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã‚’行ã„ã¾ã™ã€‚ グループã‹ã‚‰ã‚¹ãƒ‘ムãŒé€ã‚‰ã‚Œã¦ãã‚‹å ´åˆã¯ã“ã®ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„。"/> + <check_box label="グループ通知をå—ä¿¡" name="receive_notices" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ã®é€šçŸ¥ã‚’å—ä¿¡ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã‚’行ã„ã¾ã™ã€‚ グループã‹ã‚‰ã‚¹ãƒ‘ムãŒé€ã‚‰ã‚Œã¦ãã‚‹å ´åˆã¯ã“ã®ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„。"/> <check_box label="プãƒãƒ•ィールã«è¡¨ç¤º" name="list_groups_in_profile" tool_tip="ã‚ãªãŸã®ãƒ—ãƒãƒ•ィールã«ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を表示ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã‚’行ã„ã¾ã™ã€‚"/> <panel name="preferences_container"> <check_box label="会員募集" name="open_enrollement" tool_tip="招待ã•れãªãã¦ã‚‚æ–°è¦ãƒ¡ãƒ³ãƒãƒ¼ãŒåŠ å…¥ã§ãã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™ã€‚"/> <check_box label="入会費" name="check_enrollment_fee" tool_tip="入会費ãŒå¿…è¦ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™ã€‚"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="「入会費ã€ã«ãƒã‚§ãƒƒã‚¯ãŒå…¥ã£ã¦ã„ã‚‹å ´åˆã€æ–°è¦ãƒ¡ãƒ³ãƒãƒ¼ã¯æŒ‡å®šã•れãŸå…¥ä¼šè²»ã‚’支払ã‚ãªã‘れã°ã‚°ãƒ«ãƒ¼ãƒ—ã«å…¥ã‚Œã¾ã›ã‚“。"/> <check_box initial_value="true" label="検索ã«è¡¨ç¤º" name="show_in_group_list" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’æ¤œç´¢çµæžœã«è¡¨ç¤ºã•ã›ã¾ã™"/> - <combo_box name="group_mature_check" tool_tip="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ãŒ Mature å‘ã‘ã‹ã©ã†ã‹ã®è¨å®šã‚’ã—ã¾ã™ã€‚"> - <combo_box.item label="PGコンテンツ" name="pg"/> - <combo_box.item label="Matureコンテンツ" name="mature"/> + <combo_box name="group_mature_check" tool_tip="ã‚ãªãŸã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã€ŒæŽ§ãˆã‚ã€ã«ãƒ¬ãƒ¼ãƒˆè¨å®šã•ã‚ŒãŸæƒ…å ±ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™"> + <combo_box.item label="一般コンテンツ" name="pg"/> + <combo_box.item label="控ãˆã‚コンテンツ" name="mature"/> </combo_box> </panel> </panel> 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 7c8cb859907..0af1ce2ef23 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -31,6 +31,8 @@ </accordion> <panel name="button_row"> <button label="作æˆ" label_selected="æ–°ã—ã„グループ" name="btn_create"/> + <button label="グループãƒãƒ£ãƒƒãƒˆ" name="btn_chat"/> + <button label="グループコール" name="btn_call"/> <button label="ä¿å˜" label_selected="ä¿å˜" name="btn_apply"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml index eddb0c36121..dc583591330 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml @@ -7,13 +7,10 @@ (ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ï¼Žï¼Žï¼Ž) </panel.string> <panel.string name="already_in_group"> - 何人ã‹ã®ã‚¢ãƒã‚¿ãƒ¼ã¯æ—¢ã«ã‚°ãƒ«ãƒ¼ãƒ—åŠ å…¥æ¸ˆã¿ã®ãŸã‚ã€æ‹›å¾…ã•れã¾ã›ã‚“ã§ã—ãŸã€‚ + é¸æŠžã—ãŸä½äººã®ãªã‹ã«ã€æ—¢ã«ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‰€å±žã—ã¦ã„る人ãŒã„ã‚‹ãŸã‚ã€æ‹›å¾…ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ </panel.string> <text bottom_delta="-96" font="SansSerifSmall" height="72" name="help_text"> - ã‚ãªãŸã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ä¸€åº¦ã«è¤‡æ•°ã® -ä½äººã‚’招待ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -「リストã‹ã‚‰ä½äººã‚’é¸æŠžã€ -をクリックã—ã¦ãã ã•ã„。 + グループã«ã¯ä¸€åº¦ã«è¤‡æ•°ã®ä½äººã‚’招待ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 「リストã‹ã‚‰ä½äººã‚’é¸æŠžã€ã‚’クリックã—ã¦ãã ã•ã„。 </text> <button bottom_delta="-10" label="リストã‹ã‚‰ä½äººã‚’é¸æŠž" name="add_button" tool_tip=""/> <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Ctrl ã‚ーを押ã—ãªãŒã‚‰è¤‡æ•°ã®ä½äººã‚’クリックã§ãã¾ã™"/> diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml index a652e3bf11d..4b548049c8b 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="䏿˜Ž"/> + <button name="profile_btn" tool_tip="プãƒãƒ•ィールã®è¡¨ç¤º"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml index 684e22a4da2..c5168c4d7cc 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="通知" name="notices_tab"> <panel.string name="help_text"> - 通知ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ -アイテムを添付ã—ã¦é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 通知をå—ã‘å–る権é™ã®ã‚る役割㮠-グループメンãƒãƒ¼ãŒ -å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 通知をå—ã‘å–りãŸããªã„å ´åˆã¯ -一般タブã‹ã‚‰è¨å®šã—ã¦ãã ã•ã„。 + 通知ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã“ã¨ãŒã§ãã€é€šçŸ¥ã«ã‚¢ã‚¤ãƒ†ãƒ を添付ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +通知をå—ã‘å–ã‚‹ã“ã¨ãŒã§ãる「役割ã€ã«ã‚るメンãƒãƒ¼ã ã‘ã«é€ä¿¡ã•れã¾ã™ã€‚ +「一般ã€ã‚¿ãƒ–ã§é€šçŸ¥ã®å—信をオフã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ </panel.string> <panel.string name="no_notices_text"> éŽåŽ»ã®é€šçŸ¥ã¯ã‚りã¾ã›ã‚“ @@ -24,7 +22,7 @@ 見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—㟠</text> <button label="æ–°ã—ã„通知を作æˆ" label_selected="æ–°ã—ã„通知を作æˆ" name="create_new_notice" tool_tip="æ–°ã—ã„通知を作æˆ"/> - <button label="æ›´æ–°" label_selected="リスト更新" name="refresh_notices"/> + <button label="æ›´æ–°" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新"/> <panel label="æ–°ã—ã„通知を作æˆ" name="panel_create_new_notice"> <text name="lbl"> é€šçŸ¥ã‚’ä½œæˆ @@ -39,11 +37,11 @@ 添付: </text> <text name="string"> - 添付ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã“ã“ã«ãƒ‰ãƒ©ãƒƒã‚° -- > + ã“ã“ã«ã‚¢ã‚¤ãƒ†ãƒ をドラッグ&ドãƒãƒƒãƒ—ã—ã¦æ·»ä»˜ã—ã¦ãã ã•ã„: </text> <button label="å–り外ã™" label_selected="添付物を削除" name="remove_attachment"/> <button label="é€ä¿¡" label_selected="é€ä¿¡" name="send_notice"/> - <group_drop_target name="drop_target" tool_tip="æŒã¡ç‰©ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ をメッセージ欄ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ãã ã•ã„。通知ã¨ä¸€ç·’ã«é€ä¿¡ã•れã¾ã™ã€‚é€ä¿¡ã™ã‚‹ã«ã¯ã‚³ãƒ”ーã€è²æ¸¡ãŒå¯èƒ½ãªã‚ªãƒ–ジェクトã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"/> + <group_drop_target name="drop_target" tool_tip="æŒã¡ç‰©ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã“ã®ãƒœãƒƒã‚¯ã‚¹ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€é€šçŸ¥ã¨ä¸€ç·’ã«é€ã‚Šã¾ã™ã€‚ 添付ã™ã‚‹ã«ã¯ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ”ーã¨å†è²©ãƒ»ãƒ—ãƒ¬ã‚¼ãƒ³ãƒˆã®æ¨©é™ãŒã‚ãªãŸã«ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"/> </panel> <panel label="éŽåŽ»ã®é€šçŸ¥ã‚’表示" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml index 2edd0541804..7135ae780d5 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notify.xml @@ -8,5 +8,5 @@ </panel> <text_editor name="message" value="message"/> <text name="attachment" value="添付アイテム"/> - <button label="Ok" name="btn_ok"/> + <button label="OK" name="btn_ok"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml index 138a9c63603..bfadcb13d30 100644 --- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <text name="avatar_name" value="䏿˜Ž"/> - <button label="プãƒãƒ•ィール" name="view_profile_btn"/> - <button label="フレンド登録" name="add_friend_btn"/> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn"/> - <button label="共有" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="コール" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントãƒãƒ¼ãƒ«" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="プãƒãƒ•ィール" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="フレンド登録" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="共有" name="share_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="コール" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントãƒãƒ¼ãƒ«" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml index 0f1e9b49621..9129c66a45b 100644 --- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml @@ -21,6 +21,7 @@ <string name="icon_PG" value="parcel_drk_PG"/> <string name="icon_M" value="parcel_drk_M"/> <string name="icon_R" value="parcel_drk_R"/> + <button name="back_btn" tool_tip="戻る"/> <text name="title" value="å ´æ‰€ã®ãƒ—ãƒãƒ•ィール"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index 0c1505255e5..82c52abf385 100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -6,36 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=ja </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - ファーストãƒãƒ¼ãƒ : - </text> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストãƒãƒ¼ãƒ "/> - <text name="last_name_text"> - ラストãƒãƒ¼ãƒ : - </text> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストãƒãƒ¼ãƒ "/> - <text name="password_text"> - パスワード: - </text> - <button label="ãƒã‚°ã‚¤ãƒ³" label_selected="ãƒã‚°ã‚¤ãƒ³" name="connect_btn"/> - <text name="start_location_text"> - ãƒã‚°ã‚¤ãƒ³ä½ç½®ï¼š - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="最後ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸå ´æ‰€" name="MyLastLocation"/> - <combo_box.item label="自宅(ホーム)" name="MyHome"/> - <combo_box.item label="<地域åを入力>" name="Typeregionname"/> - </combo_box> - <check_box label="パスワードを記憶" name="remember_check"/> - <text name="create_new_account_text"> - æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ä½œæˆ - </text> - <text name="forgot_password_text"> - åå‰ã¾ãŸã¯ãƒ‘スワードをãŠå¿˜ã‚Œã§ã™ã‹ï¼Ÿ - </text> - <text name="channel_text"> - [VERSION] - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + ファーストãƒãƒ¼ãƒ : + </text> + <line_editor label="最åˆ" name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストãƒãƒ¼ãƒ "/> + <text name="last_name_text"> + ラストãƒãƒ¼ãƒ : + </text> + <line_editor label="最後" name="last_name_edit" tool_tip="[SECOND_LIFE] ラストãƒãƒ¼ãƒ "/> + <text name="password_text"> + パスワード: + </text> + <check_box label="記憶ã™ã‚‹" name="remember_check"/> + <text name="start_location_text"> + 開始地点: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="最後ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸå ´æ‰€" name="MyLastLocation"/> + <combo_box.item label="ホーム" name="MyHome"/> + <combo_box.item label="<地域åを入力>" name="Typeregionname"/> + </combo_box> + <button label="ãƒã‚°ã‚¤ãƒ³" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + ãŠç”³ã—込㿠+ </text> + <text name="forgot_password_text"> + åå‰ã¾ãŸã¯ãƒ‘スワードをãŠå¿˜ã‚Œã§ã™ã‹ï¼Ÿ + </text> + <text name="login_help"> + ãƒã‚°ã‚¤ãƒ³ã®æ–¹æ³• + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml index 8f8e113e645..d533ce5e0df 100644 --- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml @@ -3,10 +3,10 @@ <panel.string name="Title"> ã‚‚ã® </panel.string> - <filter_editor label="フィルター" name="inventory search editor"/> + <filter_editor label="æŒã¡ç‰©ã‚’フィルター" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="ã™ã¹ã¦" name="All Items"/> - <inventory_panel label="最近ã®å…¥æ‰‹ã‚¢ã‚¤ãƒ†ãƒ " name="Recent Items"/> + <inventory_panel label="æŒã¡ç‰©" name="All Items"/> + <inventory_panel label="最新" name="Recent Items"/> </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="ãã®ä»–ã®ã‚ªãƒ—ションを表示"/> @@ -32,7 +32,7 @@ <menu label="æ–°è¦ä½œæˆ" name="Create"> <menu_item_call label="フォルダ" name="New Folder"/> <menu_item_call label="スクリプト" name="New Script"/> - <menu_item_call label="ノート" name="New Note"/> + <menu_item_call label="æ–°ã—ã„ノートカード" name="New Note"/> <menu_item_call label="ジェスãƒãƒ£ãƒ¼" name="New Gesture"/> <menu label="衣類" name="New Clothes"> <menu_item_call label="シャツ" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml index 18c270e43da..74e414c3816 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml @@ -1,28 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="一般" name="Media Settings General"> <text name="home_label"> - ホームURL: + ホームページ: </text> - <line_editor name="home_url" tool_tip="ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚½ãƒ¼ã‚¹ã® URL"/> + <text name="home_fails_whitelist_label"> + (ã“ã®ãƒšãƒ¼ã‚¸ã¯æŒ‡å®šã—ãŸãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã‚’パスã—ã¾ã›ã‚“) + </text> + <line_editor name="home_url" tool_tip="ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚½ãƒ¼ã‚¹ã®ãƒ›ãƒ¼ãƒ ページ"/> <text name="preview_label"> プレビュー </text> <text name="current_url_label"> - ç¾åœ¨ã® URL: + ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ï¼š </text> - <line_editor name="current_url" tool_tip="ç¾åœ¨ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚½ãƒ¼ã‚¹ã® URL" value=""/> + <text name="current_url" tool_tip="メディアソースã®ç¾åœ¨ã®ãƒšãƒ¼ã‚¸" value=""/> <button label="リセット" name="current_url_reset_btn"/> - <text name="controls_label"> - コントãƒãƒ¼ãƒ«ï¼š - </text> - <combo_box name="controls"> - <combo_item name="Standard"> - 標準 - </combo_item> - <combo_item name="Mini"> - ミニ - </combo_item> - </combo_box> <check_box initial_value="false" label="自動ループ" name="auto_loop"/> <check_box initial_value="false" label="最åˆã®ã‚¯ãƒªãƒƒã‚¯" name="first_click_interact"/> <check_box initial_value="false" label="自動ズーム" name="auto_zoom"/> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml index 357cbe372ab..223bd3e28cc 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="コントãƒãƒ¼ãƒ«" name="Media settings for controls"> - <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を無効ã«ã™ã‚‹" name="perms_owner_interact"/> - <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’éžè¡¨ç¤ºã«ã™ã‚‹" name="perms_owner_control"/> - <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を無効ã«ã™ã‚‹" name="perms_group_interact"/> - <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’éžè¡¨ç¤ºã«ã™ã‚‹" name="perms_group_control"/> - <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を無効ã«ã™ã‚‹" name="perms_anyone_interact"/> - <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’éžè¡¨ç¤ºã«ã™ã‚‹" name="perms_anyone_control"/> +<panel label="カスタマイズ" name="Media settings for controls"> + <text name="controls_label"> + コントãƒãƒ¼ãƒ«ï¼š + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + 標準 + </combo_item> + <combo_item name="Mini"> + ミニ + </combo_item> + </combo_box> + <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を有効ã«ã™ã‚‹" name="perms_owner_interact"/> + <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’表示ã™ã‚‹" name="perms_owner_control"/> + <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を有効ã«ã™ã‚‹" name="perms_group_interact"/> + <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’表示ã™ã‚‹" name="perms_group_control"/> + <check_box initial_value="false" label="ナビゲーションã¨ç›¸äº’作用力を有効ã«ã™ã‚‹" name="perms_anyone_interact"/> + <check_box initial_value="false" label="コントãƒãƒ¼ãƒ«ãƒãƒ¼ã‚’表示ã™ã‚‹" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml index ed0ac0d417a..7822123a30e 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml @@ -1,6 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ã‚»ã‚ュリティ" name="Media Settings Security"> - <check_box initial_value="false" label="指定ã—㟠URL ã«ã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ï¼ˆæŽ¥é 辞)" name="whitelist_enable"/> + <check_box initial_value="false" label="指定ã—ãŸURLパターンã«ã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + ホームページã«å¤±æ•—ã—ãŸã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒãƒžãƒ¼ã‚¯ã•れã¾ã—ãŸï¼š + </text> <button label="è¿½åŠ " name="whitelist_add"/> <button label="削除" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + è¦å‘Šï¼š 「一般ã€ã‚¿ãƒ–ã§æŒ‡å®šã•れãŸãƒ›ãƒ¼ãƒ ページã¯ã€ã“ã®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã‚’パスã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ 有効ãªã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒè¿½åŠ ã•れるã¾ã§ã¯ã€ç„¡åйã«ãªã‚Šã¾ã™ã€‚ + </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml index 5f773a13782..4cce3798cff 100644 --- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml @@ -4,52 +4,44 @@ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] </string> + <string name="payment_update_link_url"> + http://www.secondlife.com/account/billing.php?lang=ja + </string> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/billing.php?lang=ja + </string> + <string name="my_account_link_url" value="http://secondlife.com/account"/> <string name="no_partner_text" value="ãªã—"/> + <string name="no_group_text" value="ãªã—"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <icon label="" name="2nd_life_edit_icon" tool_tip="下ã®ã€Œãƒ—ãƒãƒ•ィールã®ç·¨é›†ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ç”»åƒã‚’変更ã—ã¾ã™"/> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <icon label="" name="real_world_edit_icon" tool_tip="下ã®ã€Œãƒ—ãƒãƒ•ィールã®ç·¨é›†ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ç”»åƒã‚’変更ã—ã¾ã™"/> - <text name="title_rw_descr_text" value="ç¾å®Ÿä¸–界:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Web サイト: - </text> - <text name="title_member_text" value="メンãƒãƒ¼ç™»éŒ²ï¼š"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="アカウントã®çŠ¶æ…‹ï¼š"/> - <text name="acc_status_text" value="ä½äººã€‚ æ”¯æ‰•æƒ…å ±æœªç™»éŒ²ã€‚"/> - <text name="title_partner_text" value="パートナー:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="グループ:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="フレンド登録" name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="プãƒãƒ•ィールã®ç·¨é›†" name="edit_profile_btn"/> - <button label="容姿ã®ç·¨é›†" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="下ã®ã€Œãƒ—ãƒãƒ•ィールã®ç·¨é›†ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ç”»åƒã‚’変更ã—ã¾ã™"/> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="下ã®ã€Œãƒ—ãƒãƒ•ィールã®ç·¨é›†ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ç”»åƒã‚’変更ã—ã¾ã™"/> + <text name="title_rw_descr_text" value="ç¾å®Ÿä¸–界:"/> + </panel> + <text name="title_member_text" value="ä½äººã¨ãªã£ãŸæ—¥ï¼š"/> + <text name="title_acc_status_text" value="アカウントã®çŠ¶æ…‹ï¼š"/> + <text name="acc_status_text"> + ä½äººã€‚ æ”¯æ‰•æƒ…å ±æœªç™»éŒ²ã€‚ + リンデン。 + </text> + <text name="title_partner_text" value="パートナー:"/> + <text name="title_groups_text" value="グループ:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="プãƒãƒ•ィールã®ç·¨é›†" name="edit_profile_btn" tool_tip="å€‹äººçš„ãªæƒ…å ±ã‚’ç·¨é›†ã—ã¾ã™"/> + <button label="容姿ã®ç·¨é›†" name="edit_appearance_btn" tool_tip="見ãŸç›®ã‚’作æˆãƒ»ç·¨é›†ã—ã¾ã™ï¼š (身体的データã€è¡£é¡žãªã©ï¼‰"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml index ecfde1bfc69..a154442095a 100644 --- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml @@ -9,4 +9,7 @@ <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/> </search_combo_box> </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="ãŠæ°—ã«å…¥ã‚Šã‚’ã‚‚ã£ã¨è¡¨ç¤º"/> + </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml index 5feee6e2804..1948c54359b 100644 --- a/indra/newview/skins/default/xui/ja/panel_notes.xml +++ b/indra/newview/skins/default/xui/ja/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="メモã¨ãƒ—ライãƒã‚·ãƒ¼" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="個人的メモ:"/> @@ -11,13 +11,13 @@ <check_box label="ç§ã®ã‚ªãƒ–ジェクトã®ç·¨é›†ãƒ»å‰Šé™¤ãƒ»å–å¾—" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="è¿½åŠ " name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申ã—出ã¾ã™"/> + <button label="IM" name="im" tool_tip="インスタントメッセージを開ãã¾ã™"/> + <button label="コール" name="call" tool_tip="ã“ã®ä½äººã«ã‚³ãƒ¼ãƒ«ã™ã‚‹"/> + <button label="地図" name="show_on_map_btn" tool_tip="ä½äººã‚’地図上ã§è¡¨ç¤ºã™ã‚‹"/> + <button label="テレãƒãƒ¼ãƒˆ" name="teleport" tool_tip="テレãƒãƒ¼ãƒˆã‚’é€ã‚‹"/> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml index 9ce0156bd49..a109b1ab514 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="Outfits"> - <accordion name="outfits_accordion"> - <accordion_tab name="tab_outfits" title="アウトフィットãƒãƒ¼"/> - <accordion_tab name="tab_cof" title="ç¾åœ¨ã®ã‚¢ã‚¦ãƒˆãƒ•ィットãƒãƒ¼"/> - </accordion> - <button label=">" name="selector" tool_tip="アウトフィットã®ãƒ—ãƒãƒ‘ティを表示"/> +<panel label="ã‚‚ã®" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="マイ アウトフィット" name="outfitslist_tab"/> + <inventory_panel label="ç€ç”¨ä¸" name="cof_accordionpanel"/> + </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="ãã®ä»–ã®ã‚ªãƒ—ションを表示"/> - <button name="add_btn" tool_tip="æ–°ã—ã„アイテムã®è¿½åŠ "/> <dnd_button name="trash_btn" tool_tip="é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ を削除"/> + <button label="アウトフィットをä¿å˜ã™ã‚‹" name="make_outfit_btn" tool_tip="容姿をアウトフィットã«ä¿å˜ã™ã‚‹"/> + <button label="装ç€" name="wear_btn" tool_tip="é¸æŠžã—ãŸã‚¢ã‚¦ãƒˆãƒ•ィットをç€ç”¨ã™ã‚‹"/> + <button label="M" name="look_edit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml index dfcd9d09326..e8caab0696d 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="æ–°ã—ã„アウトフィット" name="new"/> - <menu_item_call label="アウトフィットをç€ã‚‹" name="wear"/> + <menu_item_call label="ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットを入れ替ãˆã‚‹" name="wear"/> + <menu_item_call label="ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットã‹ã‚‰å–り除ã" name="remove"/> + <menu_item_call label="åå‰ã®å¤‰æ›´" name="rename"/> + <menu_item_call label="リンクを外ã™" name="remove_link"/> <menu_item_call label="アウトフィットを削除ã™ã‚‹" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index 5dffbb33ea4..c955cf6e483 100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -49,5 +49,6 @@ <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="テレãƒãƒ¼ãƒˆã‚’é€ã‚‹"/> <button label="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±" name="group_info_btn" tool_tip="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã‚’è¡¨ç¤º"/> <button label="グループãƒãƒ£ãƒƒãƒˆ" name="chat_btn" tool_tip="ãƒãƒ£ãƒƒãƒˆã‚’é–‹å§‹"/> + <button label="グループã«ã‚³ãƒ¼ãƒ«ã™ã‚‹" name="group_call_btn" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã‚³ãƒ¼ãƒ«ã™ã‚‹"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml index 3d3b8bb3dc6..f74bf7a073c 100644 --- a/indra/newview/skins/default/xui/ja/panel_picks.xml +++ b/indra/newview/skins/default/xui/ja/panel_picks.xml @@ -2,20 +2,16 @@ <panel label="ピック" name="panel_picks"> <string name="no_picks" value="ピックãªã—"/> <string name="no_classifieds" value="クラシファイド広告ãªã—"/> - <text name="empty_picks_panel_text"> - ã“ã“ã«ã¯ãƒ”ック・クラシファイド広告ã¯ã‚りã¾ã›ã‚“。 - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="ピック"/> <accordion_tab name="tab_classifieds" title="クラシファイド広告"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="ç¾åœ¨åœ°ã®ãƒ”ックを新è¦ä½œæˆ"/> + <button name="new_btn" tool_tip="ç¾åœ¨åœ°ã®æ–°ã—ã„ピックã€ã¾ãŸã¯ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を作æˆã—ã¾ã™"/> </panel> <panel name="buttons_cucks"> - <button label="æƒ…å ±" name="info_btn"/> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn"/> - <button label="地図" name="show_on_map_btn"/> - <button label="â–¼" name="overflow_btn"/> + <button label="æƒ…å ±" name="info_btn" tool_tip="ãƒ”ãƒƒã‚¯ã®æƒ…å ±ã‚’è¡¨ç¤º"/> + <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="該当ã™ã‚‹ã‚¨ãƒªã‚¢ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> + <button label="地図" name="show_on_map_btn" tool_tip="世界地図ã«è©²å½“ã™ã‚‹ã‚¨ãƒªã‚¢ã‚’表示"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml index 3ec5a3a2941..ef4b71c4aa5 100644 --- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml @@ -56,6 +56,7 @@ <string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/> <string name="icon_Damage" value="parcel_drk_Damage"/> <string name="icon_DamageNo" value="parcel_drk_DamageNo"/> + <button name="back_btn" tool_tip="戻る"/> <text name="title" value="å ´æ‰€ã®ãƒ—ãƒãƒ•ィール"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> @@ -92,7 +93,7 @@ <text name="region_type_label" value="種類:"/> <text name="region_type" value="Moose"/> <text name="region_rating_label" value="レーティング区分:"/> - <text name="region_rating" value="Explicit"/> + <text name="region_rating" value="アダルト"/> <text name="region_owner_label" value="所有者:"/> <text name="region_owner" value="moose Van Moose"/> <text name="region_group_label" value="グループ:"/> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index f74b1e52e8b..b1c7a3308f9 100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -2,11 +2,12 @@ <panel label="å ´æ‰€" name="places panel"> <string name="landmarks_tab_title" value="マイ ランドマーク"/> <string name="teleport_history_tab_title" value="テレãƒãƒ¼ãƒˆã®å±¥æ´"/> - <filter_editor label="フィルター" name="Filter"/> + <filter_editor label="å ´æ‰€ã‚’ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼" name="Filter"/> <panel name="button_panel"> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn"/> + <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="該当ã™ã‚‹ã‚¨ãƒªã‚¢ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™"/> <button label="地図" name="map_btn"/> - <button label="編集" name="edit_btn"/> + <button label="編集" name="edit_btn" tool_tip="ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®æƒ…å ±ã‚’ç·¨é›†ã—ã¾ã™"/> + <button name="overflow_btn" tool_tip="ãã®ä»–ã®ã‚ªãƒ—ションを表示"/> <button label="é–‰ã˜ã‚‹" name="close_btn"/> <button label="ã‚ャンセル" name="cancel_btn"/> <button label="ä¿å˜" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml index 3cd13948d2d..16af659326e 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml @@ -6,9 +6,9 @@ <check_box label="リンデンドルを使用・å—ã‘å–ã‚‹ã¨ã" name="notify_money_change_checkbox"/> <check_box label="フレンドãŒãƒã‚°ã‚¢ã‚¦ãƒˆãƒ»ãƒã‚°ã‚¤ãƒ³ã™ã‚‹ã¨ã" name="friends_online_notify_checkbox"/> <text name="show_label" width="300"> - 常ã«è¡¨ç¤ºã™ã‚‹è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼š + 常ã«è¡¨ç¤ºã™ã‚‹é€šçŸ¥ï¼š </text> <text name="dont_show_label"> - 表示ã—ãªã„è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼š + 表示ã—ãªã„通知: </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index 7abeb361681..ece18a75ca1 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ãƒãƒ£ãƒƒãƒˆ" name="chat"> <radio_group name="chat_font_size"> - <radio_item label="å°" name="radio"/> - <radio_item label="ä¸" name="radio2"/> - <radio_item label="大" name="radio3"/> + <radio_item label="å°" name="radio" value="0"/> + <radio_item label="ä¸" name="radio2" value="1"/> + <radio_item label="大" name="radio3" value="2"/> </radio_group> <color_swatch label="自分" name="user"/> <text name="text_box1"> @@ -40,4 +40,8 @@ <check_box initial_value="true" label="ãƒãƒ£ãƒƒãƒˆä¸ã¯ã‚¿ã‚¤ãƒ”ング動作ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’å†ç”Ÿ" name="play_typing_animation"/> <check_box label="オフライン時ã«å—ã‘å–ã£ãŸ IM をメールã§é€ä¿¡" name="send_im_to_email"/> <check_box label="æ–‡å—ãƒãƒ£ãƒƒãƒˆã®å±¥æ´ã‚’有効ã«ã™ã‚‹" name="plain_text_chat_history"/> + <radio_group name="chat_window" tool_tip="インスタントメッセージを別ウィンドウã€ã¾ãŸã¯1ã¤ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«è¤‡æ•°ã‚¿ãƒ–ã§è¡¨ç¤ºï¼ˆè¦å†èµ·å‹•)"> + <radio_item label="複数ウィンドウ" name="radio" value="0"/> + <radio_item label="1ã¤ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦" name="radio2" value="1"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml index 387558af73d..765662b96a3 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml @@ -15,7 +15,6 @@ <combo_box.item label="Polski (ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªžï¼‰ - ベータ" name="Polish"/> <combo_box.item label="Português (ãƒãƒ«ãƒˆã‚¬ãƒ«èªžï¼‰ – ベータ" name="Portugese"/> <combo_box.item label="日本語 – ベータ" name="(Japanese)"/> - <combo_box.item label="テスト言語" name="TestLanguage"/> </combo_box> <text name="language_textbox2"> (å†èµ·å‹•後ã«åæ˜ ï¼‰ @@ -25,9 +24,9 @@ </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="PGã€Matureã€Adult" name="Desired_Adult"/> - <combo_box.item label="PGã¨Mature" name="Desired_Mature"/> - <combo_box.item label="PG" name="Desired_PG"/> + <combo_box.item label="ä¸€èˆ¬ã€æŽ§ãˆã‚ã€ã‚¢ãƒ€ãƒ«ãƒˆ" name="Desired_Adult"/> + <combo_box.item label="ä¸€èˆ¬ã¨æŽ§ãˆã‚" name="Desired_Mature"/> + <combo_box.item label="一般" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> ãƒã‚°ã‚¤ãƒ³ä½ç½®ï¼š @@ -41,9 +40,9 @@ åå‰ã®è¡¨ç¤ºï¼š </text> <radio_group name="Name_Tag_Preference"> - <radio_item label="オフ" name="radio"/> - <radio_item label="オン" name="radio2"/> - <radio_item label="一時的ã«è¡¨ç¤º" name="radio3"/> + <radio_item label="オフ" name="radio" value="0"/> + <radio_item label="オン" name="radio2" value="1"/> + <radio_item label="一時的ã«è¡¨ç¤º" name="radio3" value="2"/> </radio_group> <check_box label="ç§ã®åå‰ã‚’表示" name="show_my_name_checkbox1"/> <check_box initial_value="true" label="å°ã•ã„ã‚¢ãƒã‚¿ãƒ¼å" name="small_avatar_names_checkbox"/> @@ -51,14 +50,17 @@ <text name="effects_color_textbox"> ç§ã®ãƒ“ームã®è‰²ï¼š </text> - <color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> <text name="title_afk_text"> 一時退å¸ã¾ã§ã®æ™‚間: </text> - <spinner label="" name="afk_timeout_spinner"/> - <text name="seconds_textbox"> - ç§’ - </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <combo_box label="一時退å¸ã¾ã§ã®æ™‚間:" name="afk"> + <combo_box.item label="2分" name="item0"/> + <combo_box.item label="5分" name="item1"/> + <combo_box.item label="10分" name="item2"/> + <combo_box.item label="30分" name="item3"/> + <combo_box.item label="一時退å¸è¨å®šãªã—" name="item4"/> + </combo_box> <text name="text_box3"> å–り込ã¿ä¸ãƒ¢ãƒ¼ãƒ‰æ™‚ã®è¿”事: </text> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml index 80c0c854205..7a7cb8b96b6 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml @@ -11,8 +11,8 @@ <check_box label="フレンドã¨ã‚°ãƒ«ãƒ¼ãƒ—以外ã‹ã‚‰ã¯ã‚³ãƒ¼ãƒ«ã¨IMã‚’å—ä¿¡ã—ãªã„" name="voice_call_friends_only_check"/> <check_box label="コールãŒçµ‚了ã—ãŸã‚‰ãƒžã‚¤ã‚¯ã®ã‚¹ã‚¤ãƒƒãƒã‚’切る" name="auto_disengage_mic_check"/> <check_box label="Cookieã‚’å—ã‘入れる" name="cookies_enabled"/> - <check_box label="メディアã®è‡ªå‹•å†ç”Ÿã‚’許å¯ã™ã‚‹" name="autoplay_enabled"/> - <check_box label="自動的ã«åŒºç”»ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å†ç”Ÿã™ã‚‹" name="parcel_autoplay_enabled"/> + <check_box label="ãƒ¡ãƒ‡ã‚£ã‚¢ãŒæœ‰åйã§ã™" name="media_enabled"/> + <check_box label="メディアを自動å†ç”Ÿã™ã‚‹" name="autoplay_enabled"/> <text name="Logs:"> ãƒã‚°ï¼š </text> @@ -20,7 +20,7 @@ <check_box label="コンピューター㫠IM ãƒã‚°ã‚’ä¿å˜ã™ã‚‹" name="log_instant_messages"/> <check_box label="ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã‚’è¿½åŠ ã™ã‚‹" name="show_timestamps_check_im"/> <text name="log_path_desc"> - ãƒã‚°ã®ä¿å˜å ´æ‰€ + ãƒã‚°ã®ä¿å˜å ´æ‰€ï¼š </text> <button label="å‚ç…§" label_selected="å‚ç…§" name="log_path_button"/> <button label="ブãƒãƒƒã‚¯ãƒªã‚¹ãƒˆ" name="block_list"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index 5911727c67a..12e21709ae9 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="æ“作ã¨ã‚«ãƒ¡ãƒ©" name="Input panel"> +<panel label="セットアップ" name="Input panel"> <button label="ãã®ä»–ã®ãƒ‡ã‚£ãƒã‚¤ã‚¹" name="joystick_setup_button"/> <text name="Mouselook:"> 一人称視点: @@ -26,9 +26,9 @@ MB </text> <button label="å‚ç…§" label_selected="å‚ç…§" name="set_cache"/> - <button label="リセット" label_selected="è¨å®š" name="reset_cache"/> + <button label="リセット" label_selected="リセット" name="reset_cache"/> <text name="Cache location"> - ã‚ャッシュã®ä¿å˜å ´æ‰€ + ã‚ャッシュã®ä¿å˜å ´æ‰€ï¼š </text> <text name="Web:"> Web: @@ -41,6 +41,6 @@ <line_editor name="web_proxy_editor" tool_tip="使用ã™ã‚‹ãƒ—ãƒã‚ã‚·åã¾ãŸã¯IPアドレス"/> <button label="å‚ç…§" label_selected="å‚ç…§" name="set_proxy"/> <text name="Proxy location"> - プãƒã‚ã‚· + プãƒã‚シ: </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index 9c8bda4c769..9fb0dd0b467 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -7,7 +7,7 @@ <slider label="メディア" name="Media Volume"/> <slider label="効果音" name="SFX Volume"/> <slider label="ストリーミング音楽" name="Music Volume"/> - <check_box label="ボイス" name="enable_voice_check"/> + <check_box label="ボイスを有効ã«ã™ã‚‹" name="enable_voice_check"/> <slider label="ボイス" name="Voice Volume"/> <text name="Listen from"> æ–¹å‘: diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml index 629070a18a3..0e1e2851e39 100644 --- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -6,7 +6,36 @@ <string name="skip_step"> 0.2 </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°"/> + </panel> + </layout_stack> <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Navigate back"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Navigate forward"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="ホームページ"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’åœæ¢"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="æ›´æ–°"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="èªã¿è¾¼ã¿åœæ¢"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="メディアをå†ç”Ÿ"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’ä¸€æ™‚åœæ¢"/> + </layout_panel> <layout_panel name="media_address"> <line_editor name="media_address_url" tool_tip="メディア URL"/> <layout_stack name="media_address_url_icons"> @@ -21,13 +50,24 @@ <layout_panel name="media_play_position"> <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="ムービーå†ç”Ÿé€²è¡Œ"/> </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Step back"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Step forward"/> + </layout_panel> <layout_panel name="media_volume"> - <button name="media_volume_button" tool_tip="ミュート"/> + <button name="media_mute_button" tool_tip="ミュート"/> + <slider name="volume_slider" tool_tip="メディアã®éŸ³é‡"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="メディアã«ã‚ºãƒ¼ãƒ イン"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Zoom Back"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="URLをブラウザã§é–‹ã"/> </layout_panel> - </layout_stack> - <layout_stack> - <panel name="media_progress_indicator"> - <progress_bar name="media_progress_bar" tool_tip="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°"/> - </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml index 767e26af4c4..98969f5ab34 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile.xml @@ -12,50 +12,41 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/> <string name="no_partner_text" value="ãªã—"/> + <string name="no_group_text" value="ãªã—"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="ç¾å®Ÿä¸–界:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Web サイト: - </text> - <text name="title_member_text" value="メンãƒãƒ¼ç™»éŒ²ï¼š"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="アカウントã®çŠ¶æ…‹ï¼š"/> - <text name="acc_status_text" value="ä½äººã€‚ æ”¯æ‰•æƒ…å ±æœªç™»éŒ²"/> - <text name="title_partner_text" value="パートナー:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="グループ:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="フレンド登録" name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレãƒãƒ¼ãƒˆ" name="teleport"/> - <button label="â–¼" name="overflow_btn"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="プãƒãƒ•ィールã®ç·¨é›†" name="edit_profile_btn"/> - <button label="容姿ã®ç·¨é›†" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="ç¾å®Ÿä¸–界:"/> + </panel> + <text name="title_member_text" value="ä½äººã¨ãªã£ãŸæ—¥ï¼š"/> + <text name="title_acc_status_text" value="アカウントã®çŠ¶æ…‹ï¼š"/> + <text name="acc_status_text"> + ä½äººã€‚ æ”¯æ‰•æƒ…å ±æœªç™»éŒ²ã€‚ + リンデン。 + </text> + <text name="title_partner_text" value="パートナー:"/> + <text name="title_groups_text" value="グループ:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申ã—出ã¾ã™"/> + <button label="IM" name="im" tool_tip="インスタントメッセージを開ãã¾ã™"/> + <button label="コール" name="call" tool_tip="ã“ã®ä½äººã«ã‚³ãƒ¼ãƒ«ã™ã‚‹"/> + <button label="地図" name="show_on_map_btn" tool_tip="ä½äººã‚’地図上ã§è¡¨ç¤ºã™ã‚‹"/> + <button label="テレãƒãƒ¼ãƒˆ" name="teleport" tool_tip="テレãƒãƒ¼ãƒˆã‚’é€ã‚‹"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="プãƒãƒ•ィールã®ç·¨é›†" name="edit_profile_btn" tool_tip="å€‹äººçš„ãªæƒ…å ±ã‚’ç·¨é›†ã—ã¾ã™"/> + <button label="容姿ã®ç·¨é›†" name="edit_appearance_btn" tool_tip="見ãŸç›®ã‚’作æˆãƒ»ç·¨é›†ã—ã¾ã™ï¼š (身体的データã€è¡£é¡žãªã©ï¼‰"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml index 348878a35e4..976cfacb3f2 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ä¸å‹•産" name="Estate"> <text name="estate_help_text"> - ã“ã®ã‚¿ãƒ–ã®è¨å®šã‚’変更ã™ã‚‹ã¨ã“ã®ä¸å‹•産内 -ã®å…¨ã¦ã®åœ°åŸŸã«å½±éŸ¿ã‚’与ãˆã¾ã™ã€‚ + ã“ã®ã‚¿ãƒ–ã®è¨å®šã¸ã®å¤‰æ›´ã¯ã€ã‚¨ã‚¹ãƒ†ãƒ¼ãƒˆå†…ã®ã™ã¹ã¦ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«å½±éŸ¿ã•れã¾ã™ã€‚ </text> <text name="estate_text"> ä¸å‹•産: @@ -17,10 +16,10 @@ ï¼ˆä¸æ˜Žï¼‰ </text> <text name="Only Allow"> - 次ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制é™ï¼š + 次ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ã‚¢ã‚¯ã‚»ã‚¹ç¦æ¢ï¼š </text> - <check_box label="æ”¯æ‰•ã„æƒ…å ±ç™»éŒ²æ¸ˆã¿ã®ä½äºº" name="limit_payment" tool_tip="未確èªã®ä½äººã®ç«‹å…¥ã‚’ç¦æ¢ã—ã¾ã™"/> - <check_box label="å¹´é½¢ç¢ºèªæ¸ˆã¿ã®æˆäºº" name="limit_age_verified" tool_tip="年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„ä½äººã‚’ç«‹å…¥ç¦æ¢ã«ã—ã¾ã™ã€‚ 詳ã—ã„æƒ…å ±ã¯ [SUPPORT_SITE] ã‚’ã”覧下ã•ã„。"/> + <check_box label="æ”¯æ‰•æƒ…å ±ç™»éŒ²æ¸ˆ" name="limit_payment" tool_tip="未確èªã®ä½äººã®ç«‹å…¥ã‚’ç¦æ¢ã—ã¾ã™"/> + <check_box label="年齢確èª" name="limit_age_verified" tool_tip="年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„ä½äººã®ç«‹å…¥ã‚’ç¦æ¢ã—ã¾ã™ã€‚ 詳ã—ã„æƒ…å ±ã¯ [SUPPORT_SITE] ã‚’ã”覧下ã•ã„。"/> <check_box label="ボイスãƒãƒ£ãƒƒãƒˆã‚’許å¯" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <text name="abuse_email_text"> 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 690cf3f33df..00be5b6b032 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -39,10 +39,10 @@ <text label="æˆäººæŒ‡å®š" name="access_text"> 区分: </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="控ãˆã‚" name="access_combo"> <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Mature" name="Mature"/> - <combo_box.item label="PG" name="PG"/> + <combo_box.item label="控ãˆã‚" name="Mature"/> + <combo_box.item label="一般" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="é©ç”¨" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml new file mode 100644 index 00000000000..9673953d065 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="リージョン(地域)" name="General"> + <text name="region_text_lbl"> + リージョン: + </text> + <text name="region_text"> + 䏿˜Ž + </text> + <text name="version_channel_text_lbl"> + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š + </text> + <text name="version_channel_text"> + 䏿˜Ž + </text> + <text name="region_type_lbl"> + 種類: + </text> + <text name="region_type"> + 䏿˜Ž + </text> + <check_box label="地形編集をブãƒãƒƒã‚¯" name="block_terraform_check"/> + <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check"/> + <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="ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãƒªãƒ¼ã‚¸ãƒ§ãƒ³å†…ã®åŒºç”»ã‚’æ¤œç´¢çµæžœã«è¡¨ç¤ºã™ã‚‹"/> + <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin"/> + <spinner label="オブジェクトボーナス" name="object_bonus_spin"/> + <text label="レーティング区分" name="access_text"> + レーティング区分: + </text> + <combo_box label="控ãˆã‚" name="access_combo"> + <combo_box.item label="アダルト" name="Adult"/> + <combo_box.item label="控ãˆã‚" name="Mature"/> + <combo_box.item label="一般" name="PG"/> + </combo_box> + <button label="é©ç”¨" name="apply_btn"/> + <button label="ユーザー1åをホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_btn"/> + <button label="ユーザー全員をホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_all_btn"/> + <button label="リージョンã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡..." name="im_btn"/> + <button label="テレãƒãƒ–ã®ç®¡ç†..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml index d32d8f9e5de..ea784df127b 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml @@ -45,11 +45,10 @@ <spinner label="高" name="height_range_spin_2"/> <spinner label="高" name="height_range_spin_3"/> <text name="height_text_lbl10"> - 数値ã¯ä¸Šã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãƒ–レンド範囲を示ã—ã¾ã™ + 数値ã¯ä¸Šã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãƒ–レンド範囲を示ã—ã¾ã™ã€‚ </text> <text name="height_text_lbl11"> - 計測å˜ä½ã¯ãƒ¡ãƒ¼ãƒˆãƒ«ã§ã€ã€Œä½Žã€ã®å€¤ã¯ 1 番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®æœ€å¤§å€¤ã§ã™ã€‚ -「高ã€ã®å€¤ã¯ã€4 番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®æœ€ä½Žå€¤ã§ã™ã€‚ + 計測å˜ä½ã¯ãƒ¡ãƒ¼ãƒˆãƒ«ã§ã€ã€Œä½Žã€ã®å€¤ã¯ã€1番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®ã€Œæœ€å¤§å€¤ã€ã§ã™ã€‚「高ã€ã®å€¤ã¯ã€4番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®ã€Œæœ€ä½Žå€¤ã€ã§ã™ã€‚ </text> <text name="height_text_lbl12"> ãã—ã¦ã€Œé«˜ã€ã®å€¤ã¯ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼#4ã®é«˜ã•ã®ä¸‹é™ã¨ãªã‚Šã¾ã™ã€‚ diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml new file mode 100644 index 00000000000..e8b5be63aee --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="マイ ã‚¢ãƒã‚¿ãƒ¼" name="script_limits_my_avatar_panel"> + <text name="loading_text"> + ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size"/> + <scroll_list.columns label="URL" name="urls"/> + <scroll_list.columns label="オブジェクトå" name="name"/> + <scroll_list.columns label="å ´æ‰€" name="location"/> + </scroll_list> + <button label="リスト更新" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml new file mode 100644 index 00000000000..fe0b44d8f4c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="リージョンメモリ" name="script_limits_region_memory_panel"> + <text name="script_memory"> + 区画スクリプトメモリ + </text> + <text name="parcels_listed"> + 区画所有者: + </text> + <text name="memory_used"> + 使用ã•れãŸãƒ¡ãƒ¢ãƒªï¼š + </text> + <text name="loading_text"> + ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size"/> + <scroll_list.columns label="オブジェクトå" name="name"/> + <scroll_list.columns label="ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…" name="owner"/> + <scroll_list.columns label="区画・ä½ç½®" name="location"/> + </scroll_list> + <button label="リスト更新" name="refresh_list_btn"/> + <button label="ãƒã‚¤ãƒ©ã‚¤ãƒˆ" name="highlight_btn"/> + <button label="è¿”å´" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray.xml b/indra/newview/skins/default/xui/ja/panel_side_tray.xml index 6ec6b3422e4..ce5f0b940c2 100644 --- a/indra/newview/skins/default/xui/ja/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml @@ -2,9 +2,13 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> + <sidetray_tab description="サイドãƒãƒ¼ã‚’表示・éžè¡¨ç¤º" name="sidebar_openclose"/> <sidetray_tab description="ホーム。" name="sidebar_home"> <panel label="ホーム" name="panel_home"/> </sidetray_tab> + <sidetray_tab description="ã‚ãªãŸã®å…¬é–‹ãƒ—ãƒãƒ•ィールã¨ãƒ”ックを編集ã—ã¦ãã ã•ã„。" name="sidebar_me"> + <panel label="ミー" name="panel_me"/> + </sidetray_tab> <sidetray_tab description="フレンドã€é€£çµ¡å…ˆã€è¿‘ãã®äººã‚’探ã—ã¦ãã ã•ã„。" name="sidebar_people"> <panel_container name="panel_container"> <panel label="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±" name="panel_group_info_sidetray"/> @@ -14,13 +18,10 @@ <sidetray_tab description="行ããŸã„å ´æ‰€ã€è¡Œã£ãŸã“ã¨ã®ã‚ã‚‹å ´æ‰€ã‚’æŽ¢ã—ã¦ãã ã•ã„。" label="å ´æ‰€" name="sidebar_places"> <panel label="å ´æ‰€" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="ã‚ãªãŸã®å…¬é–‹ãƒ—ãƒãƒ•ィールã¨ãƒ”ックを編集ã—ã¦ãã ã•ã„。" name="sidebar_me"> - <panel label="ミー" name="panel_me"/> + <sidetray_tab description="ã‚ãªãŸã®æŒã¡ç‰©ã‚’眺ã‚ã¦ãã ã•ã„。" name="sidebar_inventory"> + <panel label="æŒã¡ç‰©ã‚’編集" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="ã‚ãªãŸã®å®¹å§¿ã‚„ç¾åœ¨ã®è¦‹ãŸç›®ã‚’変更ã—ã¦ãã ã•ã„。" name="sidebar_appearance"> <panel label="容姿ã®ç·¨é›†" name="sidepanel_appearance"/> </sidetray_tab> - <sidetray_tab description="ã‚ãªãŸã®æŒã¡ç‰©ã‚’眺ã‚ã¦ãã ã•ã„。" name="sidebar_inventory"> - <panel label="æŒã¡ç‰©ã‚’編集" name="sidepanel_inventory"/> - </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index 5d122cb8cd3..063e5847626 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -21,7 +21,8 @@ <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="ç§ã®æ®‹é«˜ï¼š クリックã—㦠L$ を購入ã—ã¾ã™"/> + <button label="" label_selected="" name="buycurrency" tool_tip="ç§ã®æ®‹é«˜"/> + <button label="L$ ã®è³¼å…¥" name="buyL" tool_tip="クリックã—㦠L$ を購入ã—ã¾ã™"/> <text name="TimeText" tool_tip="ç¾åœ¨æ™‚刻(太平洋)"> 12:00 AM </text> diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml index 70969f7ac07..2264ae965b0 100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml @@ -11,5 +11,7 @@ <accordion_tab name="1_month_and_older" title="1ヶ月以上å‰"/> <accordion_tab name="6_months_and_older" title="åŠå¹´ä»¥ä¸Šå‰"/> </accordion> - <panel label="bottom_panel" name="bottom_panel"/> + <panel label="bottom_panel" name="bottom_panel"> + <button name="gear_btn" tool_tip="ãã®ä»–ã®ã‚ªãƒ—ションを表示"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml index 9d18c52442d..c570cd56962 100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="teleport_history_item"> <text name="region" value="..."/> + <button name="profile_btn" tool_tip="ã‚¢ã‚¤ãƒ†ãƒ æƒ…å ±ã‚’è¡¨ç¤º"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index 9a58f753e5d..59fceca2dbb 100644 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -1,205 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã‚’è¿½åŠ ã€æŽ’é™¤ã—ã€æ‹›å¾…状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ã®å‚åŠ ã‚’èªã‚る権é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Membership"> - <action description="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«äººã‚’招待" - longdescription="グループã«äººã‚’招待ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「メンãƒãƒ¼ã€ã‚µãƒ–タブã®ã€Œæ–°ã—ã„人を招待...ã€ãƒœã‚¿ãƒ³ã‚’使ã„ã¾ã™ã€‚" - name="member invite" value="1" /> - <action description="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾" - longdescription="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブã®ã€Œã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã€ã‚’使ã„ã¾ã™ã€‚ オーナーã¯ã€ä»–ã®ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ä»»æ„ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã¾ã™ã€‚ オーナーã§ãªã„ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã‚‹ã®ã¯ã€ãã®ãƒ¡ãƒ³ãƒãƒ¼ãŒã€Œå…¨å“¡ã€ã®å½¹å‰²ã«ã®ã¿æ‰€å±žã—ã¦ãŠã‚Šã€ä»–ã®å½¹å‰²ã«æ‰€å±žã—ã¦ã„ãªã„å ´åˆã ã‘ã§ã™ã€‚ 役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã™ã‚‹ã«ã¯ã€ã€Œå½¹å‰²ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã€èƒ½åŠ›ã‚’æœ‰ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" - name="member eject" value="2" /> - <action description="「会員募集ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€Œå…¥ä¼šè²»ã€ã‚’変更。" - longdescription="招待状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ãŒåŠ å…¥ã§ãるよã†ã«ã€Œä¼šå“¡å‹Ÿé›†ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã®ã€Œã‚°ãƒ«ãƒ¼ãƒ—環境è¨å®šã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰ã€Œå…¥ä¼šè²»ã€ã‚’変更ã—ã¾ã™ã€‚" - name="member options" value="3" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã‚’è¿½åŠ ã€æŽ’é™¤ã—ã€æ‹›å¾…状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ã®å‚åŠ ã‚’èªã‚る権é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Membership"> + <action description="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«äººã‚’招待" longdescription="「役割ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ã€Œãƒ¡ãƒ³ãƒãƒ¼ã€ã‚¿ãƒ–内ã«ã‚る「招待ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’招待ã—ã¾ã™ã€‚" name="member invite" value="1"/> + <action description="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾" longdescription="「役割ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ã€Œãƒ¡ãƒ³ãƒãƒ¼ã€ã‚¿ãƒ–内ã«ã‚る「追放ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã—ã¾ã™ã€‚ 「オーナーã€ã¯ã€ä»–ã®ã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ä»¥å¤–ã¯èª°ã§ã‚‚追放ã§ãã¾ã™ã€‚ 「オーナーã€ã§ã¯ãªã„人ãŒã€Œå…¨å“¡ï¼ˆEveryone)ã€ã«ã—ã‹å½¹å‰²ãŒãªã„å ´åˆã€ãƒ¡ãƒ³ãƒãƒ¼ã¯ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ 「役割ã€ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’削除ã™ã‚‹ã«ã¯ã€ã€Œå½¹å‰²ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’削除ã€ã®èƒ½åŠ›ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" name="member eject" value="2"/> + <action description="「自由å‚åŠ ã€ã¨ã€Œå…¥ä¼šè²»ã€ã®åˆ‡ã‚Šæ›¿ãˆ" longdescription="「自由å‚åŠ ã€ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã¨ã€æ‹›å¾…ã•れãªãã¦ã‚‚æ–°ã—ã„メンãƒãƒ¼ãŒå…¥ä¼šã§ãã¾ã™ã€‚「入会費ã€ã¯ã€Œä¸€èˆ¬ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§å¤‰æ›´ã—ã¾ã™ã€‚" name="member options" value="3"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—内ã®å½¹å‰²ã‚’è¿½åŠ ã€å‰Šé™¤ã€å¤‰æ›´ã—ã€å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã€å‰Šé™¤ã—ã€ã•らã«å½¹å‰²ã¸èƒ½åŠ›ã‚’å‰²ã‚Šå½“ã¦ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Roles"> - <action description="æ–°ã—ã„役割を作æˆ" - longdescription="「メンãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–ã‚¿ãƒ–ã§æ–°ã—ã„役割を作æˆ" - name="role create" value="4" /> - <action description="役割を削除" - longdescription="役割を削除ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブを使ã„ã¾ã™ã€‚" - name="role delete" value="5" /> - <action description="役割åã€ã‚¿ã‚¤ãƒˆãƒ«ã€èª¬æ˜Žã‚’変更" - longdescription="役割åã€ã‚¿ã‚¤ãƒˆãƒ«ã€èª¬æ˜Žã‚’変更ã™ã‚‹ã«ã¯ã€å½¹å‰²ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブã®ä¸‹éƒ¨åˆ†ã‚’使ã„ã¾ã™ã€‚" - name="role properties" value="6" /> - <action description="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" - longdescription="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€å‰²ã‚Šå½“ã¦äººãŒç¾åœ¨æ‰€å±žã—ã¦ã„る役割ã«å¯¾ã—ã¦ã®ã¿ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã§ãã¾ã™ã€‚" - name="role assign member limited" value="7" /> - <action description="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" - longdescription="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’ç¾åœ¨ã®å½¹å‰²ã‚ˆã‚Šã‚‚強力ãªå½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーを与ãˆã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" - name="role assign member" value="8" /> - <action description="役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’解除" - longdescription="メンãƒãƒ¼ã‚’役割ã‹ã‚‰è§£é™¤ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「メンãƒãƒ¼ã€ã‚µãƒ–タブã®ã€Œå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ オーナーã¯è§£é™¤ã§ãã¾ã›ã‚“。" - name="role remove member" value="9" /> - <action description="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤" - longdescription="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®è¨±å¯ã•れãŸèƒ½åŠ›ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§è¡Œã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã™ã¹ã¦ã®èƒ½åŠ›ã‚’è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーをæŒãŸã›ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" - name="role change actions" value="10" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—内ã®å½¹å‰²ã‚’è¿½åŠ ã€å‰Šé™¤ã€å¤‰æ›´ã—ã€å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã€å‰Šé™¤ã—ã€ã•らã«å½¹å‰²ã¸èƒ½åŠ›ã‚’å‰²ã‚Šå½“ã¦ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Roles"> + <action description="æ–°ã—ã„役割を作æˆ" longdescription="æ–°ã—ã„「役割ã€ã¯ã€ã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「役割ã€ã‚¿ãƒ–ã§ä½œæˆã—ã¾ã™ã€‚" name="role create" value="4"/> + <action description="役割を削除" longdescription="「役割ã€ã¯ã€ã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「役割ã€ã‚¿ãƒ–ã§å‰Šé™¤ã§ãã¾ã™ã€‚" name="role delete" value="5"/> + <action description="「役割ã€ã®åå‰ã€è‚©æ›¸ãã€èª¬æ˜Žã€ãƒ¡ãƒ³ãƒãƒ¼å…¬é–‹ã®æœ‰ç„¡ã‚’変更" longdescription="「役割ã€ã®åå‰ã€è‚©æ›¸ãã€èª¬æ˜Žã€ãƒ¡ãƒ³ãƒãƒ¼å…¬é–‹ã®æœ‰ç„¡ã‚’変更ã—ã¾ã™ã€‚ 「役割ã€ã‚’é¸æŠžå¾Œã«ã€ã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「役割ã€ã‚¿ãƒ– ã®ä¸‹ã§è¨å®šã§ãã¾ã™ã€‚" name="role properties" value="6"/> + <action description="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" longdescription="「割り当ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã€ï¼ˆã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「メンãƒãƒ¼ã€ã‚¿ãƒ–)ã®ãƒªã‚¹ãƒˆã§ã€ãƒ¡ãƒ³ãƒãƒ¼ã‚’「役割ã€ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚ ã“ã®èƒ½åŠ›ãŒã‚るメンãƒãƒ¼ã¯ã€å‰²ã‚Šå½“ã¦ã‚‹äººãŒæ—¢ã«æ‰€å±žã™ã‚‹ã€Œå½¹å‰²ã€ã«ã®ã¿ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã§ãã¾ã™ã€‚" name="role assign member limited" value="7"/> + <action description="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" longdescription="「割り当ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã€ï¼ˆã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「メンãƒãƒ¼ã€ã‚¿ãƒ–)ã®ãƒªã‚¹ãƒˆã§ã€ãƒ¡ãƒ³ãƒãƒ¼ã‚’ã©ã®ã€Œå½¹å‰²ã€ã«ã‚‚割り当ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ *è¦å‘Š* ã“ã®ã€Œèƒ½åŠ›ã€ãŒã‚る「役割ã€ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ãªã‚‰èª°ã§ã‚‚自分自身ã¨ã€ä»–ã®ã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’ç¾åœ¨ä»¥ä¸Šã®æ¨©é™ã®ã‚る「役割ã€ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¤ã¾ã‚Šã€ã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ä»¥å¤–ã®äººãŒã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ã«è¿‘ã„力をæŒã¤ã‚ˆã†è¨å®šã§ãã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“ã®ã€Œèƒ½åŠ›ã€ã‚’割り当ã¦ã‚‹å‰ã«ã€è‡ªåˆ†ãŒã—よã†ã¨ã—ã¦ã„ã‚‹ã“ã¨ã‚’ã‚ˆãæŠŠæ¡ã—ã¦ãã ã•ã„。" name="role assign member" value="8"/> + <action description="役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’解除" longdescription="「割り当ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã€ï¼ˆã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「メンãƒãƒ¼ã€ã‚¿ãƒ–)ã®ãƒªã‚¹ãƒˆã§ã€ãƒ¡ãƒ³ãƒãƒ¼ã‚’「役割ã€ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚ 「オーナーã€ã¯å‰Šé™¤ã§ãã¾ã›ã‚“。" name="role remove member" value="9"/> + <action description="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤" longdescription="「許å¯ã•れãŸèƒ½åŠ›ã€ï¼ˆã€Œå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ > 「役割ã€ã‚¿ãƒ–)ã®ãƒªã‚¹ãƒˆã«ã‚ã‚‹ã€å„「役割ã€ã®ã€Œèƒ½åŠ›ã€ã‚’割り当ã¦ãŸã‚Šã€å‰Šé™¤ã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®ã€Œèƒ½åŠ›ã€ãŒã‚る「役割ã€ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ãªã‚‰èª°ã§ã‚‚自分自身ã¨ã€ä»–ã®ã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’ã™ã¹ã¦ã®ã€Œèƒ½åŠ›ã€ã€ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¤ã¾ã‚Šã€ã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ä»¥å¤–ã®äººãŒã€Œã‚ªãƒ¼ãƒŠãƒ¼ã€ã«è¿‘ã„æ¨©é™ã‚’æŒã¤ã‚ˆã†è¨å®šã§ãã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“ã®ã€Œèƒ½åŠ›ã€ã‚’割り当ã¦ã‚‹å‰ã«ã€è‡ªåˆ†ãŒã—よã†ã¨ã—ã¦ã„ã‚‹ã“ã¨ã‚’ã‚ˆãæŠŠæ¡ã—ã¦ãã ã•ã„。" name="role change actions" value="10"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®å…¬é–‹æ€§ã‚„ç†å¿µã€è¨˜ç« ã®å¤‰æ›´ã¨ã„ã£ãŸã€ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¢ã‚¤ãƒ‡ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Group Identity"> - <action - description="ç†å¿µã€è¨˜ç« ã€ã€ŒWeb上ã§å…¬é–‹ã€ã€ãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±å†…ã§å…¬é–‹ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’変更。" - longdescription="ç†å¿µã€è¨˜ç« ã€ã€ŒWeb上ã§å…¬é–‹ã€ã€ãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±å†…ã§å…¬é–‹ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’変更ã—ã¾ã™ã€‚ ã“ã®æ“作ã«ã¯ã€ä¸€èˆ¬ã‚¿ãƒ–を使用ã—ã¾ã™ã€‚" - name="group change identity" value="11" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®å…¬é–‹æ€§ã‚„ç†å¿µã€è¨˜ç« ã®å¤‰æ›´ã¨ã„ã£ãŸã€ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¢ã‚¤ãƒ‡ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Group Identity"> + <action description="ç†å¿µã€è¨˜ç« ã€ã€ŒWeb上ã§å…¬é–‹ã€ã€ãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±å†…ã§å…¬é–‹ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’変更。" longdescription="ç†å¿µã€è¨˜ç« ã€ã€Œæ¤œç´¢ã«è¡¨ç¤ºã€ã®å¤‰æ›´ã‚’ã—ã¾ã™ã€‚ 「一般ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§è¡Œãˆã¾ã™ã€‚" name="group change identity" value="11"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã€ŒåœŸåœ°æƒ…å ±ã€ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€ŒåœŸåœ°æƒ…å ±ã€ã‚’é¸æŠžã™ã‚‹ã‹ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã®ã€ŒåŒºç”»æƒ…å ±ã€ã‚’クリックã—ã¾ã™ã€‚" - name="Parcel Management"> - <action description="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥" - longdescription="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥ã‚’行ã„ã¾ã™ã€‚ ã“ã®æ“作ã«ã¯ã€åœŸåœ°æƒ…å ±ç”»é¢ ï¼ž 一般タブを使ã„ã¾ã™ã€‚" - name="land deed" value="12" /> - <action description="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã™" - longdescription="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’放棄ã—ã¦ã€å£²ã‚Šä¸Šã’ãªã—ã§Lindenç·ç£ã«æ˜Žã‘渡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" - name="land release" value="13" /> - <action description="å£²ã‚Šåœ°æƒ…å ±ã®è¨å®š" - longdescription="å£²ã‚Šåœ°æƒ…å ±ã‚’è¨å®šã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è‡ªåˆ†ã®æ€ã„ã©ãŠã‚Šã«è²©å£²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" - name="land set sale info" value="14" /> - <action description="区画ã®å†åˆ†å‰²ã¨çµ±åˆ" - longdescription="区画をå†åˆ†å‰²ãŠã‚ˆã³çµ±åˆã—ã¾ã™ã€‚ ã“ã®æ“作を実行ã™ã‚‹ã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œåœ°å½¢ã‚’編集ã€ã‚’é¸æŠžã—ã€åœŸåœ°ã®ä¸Šã§ãƒžã‚¦ã‚¹ã‚’ドラッグã—ã¦ç¯„å›²ã‚’é¸æŠžã—ã¾ã™ã€‚ å†åˆ†å‰²ã™ã‚‹ã«ã¯ã€åˆ†å‰²å¯¾è±¡ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œå†åˆ†å‰²...ã€ã‚’クリックã—ã¾ã™ã€‚ çµ±åˆã™ã‚‹ã«ã¯ã€è¤‡æ•°ã®éš£æŽ¥ã™ã‚‹åŒºç”»ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œçµ±åˆ...ã€ã‚’クリックã—ã¾ã™ã€‚" - name="land divide join" value="15" /> + <action_set description="ã“れらã®ã€Œèƒ½åŠ›ã€ã«ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®æ‰€æœ‰åœ°ã®è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã‚’ã™ã‚‹æ¨©é™ãŒã‚りã¾ã™ã€‚ ã€ŒåœŸåœ°æƒ…å ±ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’見るã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€ŒåœŸåœ°æƒ…å ±ã€ã‚’é¸ã¶ã‹ã€ãƒŠãƒ“ゲーションãƒãƒ¼ã®ã€Œiã€ã‚¢ã‚¤ã‚³ãƒ³ã‚’クリックã—ã¾ã™ã€‚" name="Parcel Management"> + <action description="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥" longdescription="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥ã‚’行ã„ã¾ã™ã€‚ ã“ã®æ“作ã«ã¯ã€åœŸåœ°æƒ…å ±ç”»é¢ ï¼ž 一般タブを使ã„ã¾ã™ã€‚" name="land deed" value="12"/> + <action description="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã™" longdescription="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’放棄ã—ã¦ã€å£²ã‚Šä¸Šã’ãªã—ã§Lindenç·ç£ã«æ˜Žã‘渡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="land release" value="13"/> + <action description="å£²ã‚Šåœ°æƒ…å ±ã®è¨å®š" longdescription="å£²ã‚Šåœ°æƒ…å ±ã‚’è¨å®šã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è‡ªåˆ†ã®æ€ã„ã©ãŠã‚Šã«è²©å£²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="land set sale info" value="14"/> + <action description="区画ã®å†åˆ†å‰²ã¨çµ±åˆ" longdescription="区画をå†åˆ†å‰²ã€çµ±åˆã—ã¾ã™ã€‚ 地é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œåœ°å½¢ã‚’編集ã€ã‚’é¸ã³ã€ãƒžã‚¦ã‚¹ã‚’土地ã®ä¸Šã§ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ç¯„å›²ã‚’é¸æŠžã—ã¾ã™ã€‚ å†åˆ†å‰²ã™ã‚‹ã«ã¯ã€åˆ†å‰²å¯¾è±¡ã‚’é¸ã‚“ã§ã€Œå†åˆ†å‰²ã€ã‚’クリックã—ã¾ã™ã€‚ çµ±åˆã™ã‚‹ã«ã¯ã€2ã¤ä»¥ä¸Šã®éš£æŽ¥ã™ã‚‹åŒºç”»ã‚’é¸ã‚“ã§ã€Œçµ±åˆã€ã‚’クリックã—ã¾ã™ã€‚" name="land divide join" value="15"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€åŒºç”»åã€å…¬é–‹è¨å®šã€æ¤œç´¢ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ç™»éŒ²ã€ç€åœ°ç‚¹ãªã‚‰ã³ã«TPルートã®ã‚ªãƒ—ションを変更ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Parcel Identity"> - <action description="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" - longdescription="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" - name="land find places" value="17" /> - <action description="区画åã€èª¬æ˜Žã€ã€ŒWeb上ã§å…¬é–‹ã€ã®è¨å®šã‚’変更" - longdescription="区画åã€èª¬æ˜Žã€ã€ŒWeb上ã§å…¬é–‹ã€ã®è¨å®šã‚’変更。 ã“ã®æ“作ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「オプションã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land change identity" value="18" /> - <action description="ç€åœ°ç‚¹ãŠã‚ˆã³ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®š" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¤–部ã‹ã‚‰ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®åˆ°ç€ä½ç½®ã‚’指定ã§ãã‚‹ã¨å…±ã«ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®šã—ã¦ç´°ã‹ã制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ“作ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" - name="land set landing point" value="19" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€åŒºç”»åã€å…¬é–‹è¨å®šã€æ¤œç´¢ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ç™»éŒ²ã€ç€åœ°ç‚¹ãªã‚‰ã³ã«TPルートã®ã‚ªãƒ—ションを変更ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Identity"> + <action description="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã‚’切り替ãˆã‚«ãƒ†ã‚´ãƒªã‚’è¨å®š" longdescription="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€ŒåœŸåœ°æƒ…å ±ã€ > 「オプションã€ã‚¿ãƒ–ã§åŒºç”»ã®ã‚«ãƒ†ã‚´ãƒªã‚’è¨å®šã—ã¾ã™ã€‚" name="land find places" value="17"/> + <action description="区画åã€èª¬æ˜Žã€ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã®è¨å®šã‚’変更" longdescription="区画åã€èª¬æ˜Žã€ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã®è¨å®šã‚’変更ã—ã¾ã™ã€‚ ã€ŒåœŸåœ°æƒ…å ±ã€ > 「オプションã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land change identity" value="18"/> + <action description="ç€åœ°ç‚¹ãŠã‚ˆã³ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®š" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¤–部ã‹ã‚‰ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®åˆ°ç€ä½ç½®ã‚’指定ã§ãã‚‹ã¨å…±ã«ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®šã—ã¦ç´°ã‹ã制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ“作ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land set landing point" value="19"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã€Œã‚ªãƒ–ジェクトを作æˆã€ã€ã€Œåœ°å½¢ã‚’編集ã€ã€éŸ³æ¥½ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šãªã©ã€åŒºç”»ã®ã‚ªãƒ—ションã«é–¢é€£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Parcel Settings"> - <action description="音楽ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šã‚’変更" - longdescription="ストリーミング・ミュージックã¨å‹•ç”»ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「メディアã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land change media" value="20" /> - <action description="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆ" - longdescription="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚ *è¦å‘Š* ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ï¼žã€Œåœ°å½¢ã‚’編集ã€ã®é †ã§é€²ã‚€ã¨ã€èª°ã§ã‚‚ã‚ãªãŸã®åœŸåœ°ã®å½¢ã®æ•´å‚™ã‚„ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã€ç§»å‹•ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’å‰²ã‚ŠæŒ¯ã‚‹å‰ã«ã€ã“ã®ã“ã¨ã‚’よãç†è§£ã—ã¦ãŠã„ã¦ãã ã•ã„。 ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã‹ã‚‰ã€Œåœ°å½¢ã‚’編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚" - name="land edit" value="21" /> - <action - description="ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–内ã®ã•ã¾ã–ã¾ãªè¨å®šã‚’切り替ãˆ" - longdescription="「安全(ダメージãªã—)ã€ã€ã€Œé£›ã¶ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã‹ã‚‰ã€ ä»–ã®ä½äººãŒã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã§ã€Œã‚ªãƒ–ジェクトを作æˆã€ã€ã€Œåœ°å½¢ã‚’編集ã€ã€ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã€ã€ã€Œã‚¹ã‚¯ãƒªãƒ—トを実行ã€ã§ãるよã†ã«ã—ã¾ã™ã€‚" - name="land options" value="22" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã€Œã‚ªãƒ–ジェクトを作æˆã€ã€ã€Œåœ°å½¢ã‚’編集ã€ã€éŸ³æ¥½ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šãªã©ã€åŒºç”»ã®ã‚ªãƒ—ションã«é–¢é€£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Settings"> + <action description="音楽ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šã‚’変更" longdescription="ストリーミング・ミュージックã¨å‹•ç”»ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「メディアã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land change media" value="20"/> + <action description="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆ" longdescription="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚ *è¦å‘Š* ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ï¼žã€Œåœ°å½¢ã‚’編集ã€ã®é †ã§é€²ã‚€ã¨ã€èª°ã§ã‚‚ã‚ãªãŸã®åœŸåœ°ã®å½¢ã®æ•´å‚™ã‚„ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã€ç§»å‹•ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’å‰²ã‚ŠæŒ¯ã‚‹å‰ã«ã€ã“ã®ã“ã¨ã‚’よãç†è§£ã—ã¦ãŠã„ã¦ãã ã•ã„。 ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã‹ã‚‰ã€Œåœ°å½¢ã‚’編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚" name="land edit" value="21"/> + <action description="ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–内ã®ã•ã¾ã–ã¾ãªè¨å®šã‚’切り替ãˆ" longdescription="「安全(ダメージãªã—)ã€ã€ã€Œé£›è¡Œã€ã‚’切り替ãˆã€ä½äººã«ä»¥ä¸‹ã‚’許å¯ã—ã¾ã™ï¼š グループ所有地ã®ã€ŒåœŸåœ°æƒ…å ±ã€ > 「オプションã€ã‚¿ãƒ–内ã®ã€ã€Œåœ°å½¢ã‚’編集ã€ã€ã€Œåˆ¶ä½œã€ã€ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®ä½œæˆã€ã€ã€Œã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œã€ã€‚" name="land options" value="22"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«é–¢ã™ã‚‹è¦åˆ¶ã‚’迂回ã™ã‚‹ã“ã¨ã‚’ã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Parcel Powers"> - <action description="常ã«ã€Œåœ°å½¢ã‚’編集ã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§åœ°å½¢ã‚’編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€åœ°å½¢ã®ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚" - name="land allow edit land" value="23" /> - <action description="常ã«ã€Œé£›è¡Œã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã‚’飛行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€é£›è¡ŒãŒå¯èƒ½ã§ã™ã€‚" - name="land allow fly" value="24" /> - <action description="常ã«ã€Œã‚ªãƒ–ジェクト作æˆã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ã‚ªãƒ–ジェクトを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" - name="land allow create" value="25" /> - <action description="常ã«ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" - name="land allow landmark" value="26" /> - <action description="グループã®åœŸåœ°ã¸ã®ã€Œãƒ›ãƒ¼ãƒ è¨å®šã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œä¸–界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ï¼žã€Œãƒ›ãƒ¼ãƒ ã‚’ã“ã“ã«è¨å®šã€ã‚’使用ã—ã¦ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸåŒºç”»ã‚’ホームã«è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="land allow set home" value="28" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«é–¢ã™ã‚‹è¦åˆ¶ã‚’迂回ã™ã‚‹ã“ã¨ã‚’ã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Powers"> + <action description="常ã«ã€Œåœ°å½¢ã‚’編集ã€ã‚’許å¯" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§åœ°å½¢ã‚’編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€åœ°å½¢ã®ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚" name="land allow edit land" value="23"/> + <action description="常ã«ã€Œé£›è¡Œã€ã‚’許å¯" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã‚’飛行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€é£›è¡ŒãŒå¯èƒ½ã§ã™ã€‚" name="land allow fly" value="24"/> + <action description="常ã«ã€Œã‚ªãƒ–ジェクト作æˆã€ã‚’許å¯" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ã‚ªãƒ–ジェクトを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" name="land allow create" value="25"/> + <action description="常ã«ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã€ã‚’許å¯" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" name="land allow landmark" value="26"/> + <action description="グループã®åœŸåœ°ã¸ã®ã€Œãƒ›ãƒ¼ãƒ è¨å®šã€ã‚’許å¯" longdescription="ã“ã®ã€Œå½¹å‰²ã€ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸåŒºç”»ä¸Šã§ã€Œä¸–界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ > ランドマーク > ç¾åœ¨åœ°ã‚’ホームã«è¨å®š を使用ã—ã¦ã€ãƒ›ãƒ¼ãƒ ã®è¨å®šã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" name="land allow set home" value="28"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ä½äººã®å‡çµã‚„追放をå«ã‚€ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã€åˆ¶é™ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Parcel Access"> - <action description="区画アクセス・リストã®ç®¡ç†" - longdescription="区画アクセス・リストã®ç®¡ç†ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚¢ã‚¯ã‚»ã‚¹ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" - name="land manage allowed" value="29" /> - <action description="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†" - longdescription="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œç¦æ¢ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" - name="land manage banned" value="30" /> - <action description="区画ã®ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更" - longdescription="区画ã®ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「アクセスã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land manage passes" value="31" /> - <action description="区画上ã®ä½äººã®è¿½æ”¾ã¨å‡çµ" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«å•題ã®ã‚ã‚‹ä½äººãŒã„ã‚‹å ´åˆã«ã€å³ã‚¯ãƒªãƒƒã‚¯ãƒ»ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€Œè©³ç´°ã€ã‚’é¸æŠžã—ã€ã€Œè¿½æ”¾...ã€ã¾ãŸã¯ã€Œãƒ•リーズ...ã€ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãã®ä½äººã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="land admin" value="32" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ä½äººã®å‡çµã‚„追放をå«ã‚€ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã€åˆ¶é™ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Access"> + <action description="区画アクセス・リストã®ç®¡ç†" longdescription="区画アクセス・リストã®ç®¡ç†ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚¢ã‚¯ã‚»ã‚¹ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land manage allowed" value="29"/> + <action description="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†" longdescription="ã€ŒåœŸåœ°æƒ…å ±ã€ > 「アクセスã€ã‚¿ãƒ–ã®ã€åŒºç”»ã®ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†ãŒã§ãã¾ã™ã€‚" name="land manage banned" value="30"/> + <action description="ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更" longdescription="ã€ŒåœŸåœ°æƒ…å ±ã€ > 「アクセスã€ã‚¿ãƒ–ã§ã€åŒºç”»ã®ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更ã—ã¾ã™ã€‚" name="land manage passes" value="31"/> + <action description="区画上ã®ä½äººã®è¿½æ”¾ã¨å‡çµ" longdescription="ã“ã®ã€Œèƒ½åŠ›ã€ã‚’æŒã¤ã€Œå½¹å‰²ã€ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有地ã«ã„ã¦æ¬²ã—ããªã„ä½äººã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã€ã€Œè¿½æ”¾ã€ã‚„「フリーズã€ã‚’é¸ã‚“ã§å¯¾å¿œã§ãã¾ã™ã€‚" name="land admin" value="32"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚ªãƒ–ジェクトã®è¿”å´ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã‚„移動をã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“れã¯ãƒ¡ãƒ³ãƒãƒ¼ãŒã‚´ãƒŸå‡¦ç†ã‚„景観作æˆã‚’ã™ã‚‹éš›ã«ä¾¿åˆ©ã§ã™ãŒã€è¿”å´ã—ãŸã‚ªãƒ–ジェクトã¯å…ƒã«æˆ»ã›ãªã„ã®ã§ã€æ³¨æ„ã—ã¦è¡Œã„ã¾ã—ょã†ã€‚" - name="Parcel Content"> - <action description="グループ所有オブジェクトã®è¿”å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land return group owned" value="48" /> - <action description="グループã«è¨å®šã•れã¦ã„るオブジェクトを返å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—ã«è¨å®šã•れã¦ã„るオブジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land return group set" value="33" /> - <action description="éžã‚°ãƒ«ãƒ¼ãƒ—・オブジェクトã®è¿”å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—以外ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="land return non group" value="34" /> - <action description="Lindenè£½ã®æ¤ç‰©ã‚’使用ã—ã¦æ™¯è¦³ä½œæˆ" - longdescription="景観作æˆèƒ½åŠ›ã«ã‚ˆã‚Šã€ãƒªãƒ³ãƒ‡ãƒ³è£½ã®æ¨¹æœ¨ã€æ¤ç‰©ã€è‰ã‚’é…ç½®ãŠã‚ˆã³ç§»å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã€è‡ªåˆ†ã®æŒã¡ç‰©ã®ãƒ©ã‚¤ãƒ–ラリ>オブジェクト・フォルダã‹ã‚‰æ¤œç´¢ã§ãã‚‹ã»ã‹ã€ã€Œä½œæˆã€ãƒœã‚¿ãƒ³ã§ä½œæˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚" - name="land gardening" value="35" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚ªãƒ–ジェクトã®è¿”å´ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã‚„移動をã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“れã¯ãƒ¡ãƒ³ãƒãƒ¼ãŒã‚´ãƒŸå‡¦ç†ã‚„景観作æˆã‚’ã™ã‚‹éš›ã«ä¾¿åˆ©ã§ã™ãŒã€è¿”å´ã—ãŸã‚ªãƒ–ジェクトã¯å…ƒã«æˆ»ã›ãªã„ã®ã§ã€æ³¨æ„ã—ã¦è¡Œã„ã¾ã—ょã†ã€‚" name="Parcel Content"> + <action description="グループ所有オブジェクトã®è¿”å´" longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return group owned" value="48"/> + <action description="グループã«è¨å®šã•れã¦ã„るオブジェクトを返å´" longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—ã«è¨å®šã•れã¦ã„るオブジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return group set" value="33"/> + <action description="éžã‚°ãƒ«ãƒ¼ãƒ—・オブジェクトã®è¿”å´" longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—以外ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return non group" value="34"/> + <action description="Lindenè£½ã®æ¤ç‰©ã‚’使用ã—ã¦æ™¯è¦³ä½œæˆ" longdescription="ãƒªãƒ³ãƒ‡ãƒ³è£½ã®æ¨¹æœ¨ã€æ¤ç‰©ã€è‰ã‚’æ¤ãˆã‚‹ã€æ™¯è¦³ã¥ãりã®èƒ½åŠ›ã§ã™ã€‚ ã“ã‚Œã‚‰ã®æ¤ç‰©ã¯ã‚ãªãŸã®æŒã¡ç‰©å†…ã®ã€Œãƒ©ã‚¤ãƒ–ラリ〠> 「オブジェクトã€ãƒ•ォルダã«ã‚りã¾ã™ã€‚「制作ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ä½œæˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚" name="land gardening" value="35"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“ã†ã—ãŸå¤‰æ›´ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§è¡Œã‚れã¾ã™ã€‚ オブジェクトをå³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œç·¨é›†ã€ã‚’é–‹ãã¨ã€è¨å®šå†…容を表示ã§ãã¾ã™ã€‚" - name="Object Management"> - <action description="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡" - longdescription="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã«ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="object deed" value="36" /> - <action - description="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰" - longdescription="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" - name="object manipulate" value="38" /> - <action description="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®š" - longdescription="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®šã«ã™ã‚‹ã«ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" - name="object set sale" value="39" /> + <action_set description="ã“れらã®ã€Œèƒ½åŠ›ã€ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ 変更ã¯ã€Œåˆ¶ä½œãƒ„ール〠> 「一般ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚ オブジェクトをå³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œç·¨é›†ã€ã‚’é–‹ãã¨è¨å®šå†…容を確èªã§ãã¾ã™ã€‚" name="Object Management"> + <action description="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡" longdescription="「制作ツール〠> 「一般ã€ã‚¿ãƒ–ã§ã€ã‚ªãƒ–ジェクトをグループã«è²æ¸¡ã—ã¾ã™ã€‚" name="object deed" value="36"/> + <action description="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰" longdescription="「制作ツール〠> 「一般ã€ã‚¿ãƒ–ã§ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトをæ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰ã—ã¾ã™ã€‚" name="object manipulate" value="38"/> + <action description="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®š" longdescription="「制作ツール〠> 「一般ã€ã‚¿ãƒ–ã§ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトを販売対象ã«è¨å®šã—ã¾ã™ã€‚" name="object set sale" value="39"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ãƒ¡ãƒ³ãƒãƒ¼ã«ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®è² å‚µã®æ”¯æ‰•ã„ã¨åˆ©åå—ã‘å–ã‚Šã‚’è¦æ±‚ã™ã‚‹æ¨©é™ã€ã‚°ãƒ«ãƒ¼ãƒ—å£åº§å±¥æ´ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制é™ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Accounting"> - <action description="ã‚°ãƒ«ãƒ¼ãƒ—è² å‚µã®è¿”済ã¨ã‚°ãƒ«ãƒ¼ãƒ—é…当ã®å—é ˜" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã¤ã„ã¦ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—è² å‚µã®æ”¯æ‰•ã„ã¨ã‚°ãƒ«ãƒ¼ãƒ—é…当ã®å—ã‘å–りãŒè‡ªå‹•çš„ã«è¡Œã‚れã¾ã™ã€‚ ã¤ã¾ã‚Šã€ã“れらã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æ¯Žæ—¥é…当ã•れるグループ所有ã®åœŸåœ°ã®å£²ã‚Šä¸Šã’金ã®ä¸€éƒ¨ã‚’å—ã‘å–ã‚‹ã¨å…±ã«ã€åŒºç”»ã®åºƒå‘Šè²»ãªã©ã‚’è² æ‹…ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚" - name="accounting accountable" value="40" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ãƒ¡ãƒ³ãƒãƒ¼ã«ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®è² å‚µã®æ”¯æ‰•ã„ã¨åˆ©åå—ã‘å–ã‚Šã‚’è¦æ±‚ã™ã‚‹æ¨©é™ã€ã‚°ãƒ«ãƒ¼ãƒ—å£åº§å±¥æ´ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制é™ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Accounting"> + <action description="ã‚°ãƒ«ãƒ¼ãƒ—è² å‚µã®è¿”済ã¨ã‚°ãƒ«ãƒ¼ãƒ—é…当ã®å—é ˜" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã¤ã„ã¦ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—è² å‚µã®æ”¯æ‰•ã„ã¨ã‚°ãƒ«ãƒ¼ãƒ—é…当ã®å—ã‘å–りãŒè‡ªå‹•çš„ã«è¡Œã‚れã¾ã™ã€‚ ã¤ã¾ã‚Šã€ã“れらã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æ¯Žæ—¥é…当ã•れるグループ所有ã®åœŸåœ°ã®å£²ã‚Šä¸Šã’金ã®ä¸€éƒ¨ã‚’å—ã‘å–ã‚‹ã¨å…±ã«ã€åŒºç”»ã®åºƒå‘Šè²»ãªã©ã‚’è² æ‹…ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚" name="accounting accountable" value="40"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—通知ã®é€ä¿¡ã€å—ä¿¡ã€è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Notices"> - <action description="通知をé€ä¿¡" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œé€šçŸ¥ã€ã‚¿ãƒ–ã§é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="notices send" value="42" /> - <action description="通知ã®å—ä¿¡ã¨éŽåŽ»ã®é€šçŸ¥ã®é–²è¦§" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€é€šçŸ¥ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œé€šçŸ¥ã€ã‚¿ãƒ–ã§éŽåŽ»ã®é€šçŸ¥ã‚’閲覧ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="notices receive" value="43" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—通知ã®é€ä¿¡ã€å—ä¿¡ã€è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Notices"> + <action description="通知をé€ä¿¡" longdescription="ã“ã®ã€Œèƒ½åŠ›ã€ã‚’æŒã¤ã€Œå½¹å‰²ã€ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—〠> 「通知ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰é€šçŸ¥ã‚’é€ä¿¡ã§ãã¾ã™ã€‚" name="notices send" value="42"/> + <action description="通知ã®å—ä¿¡ã¨éŽåŽ»ã®é€šçŸ¥ã®é–²è¦§" longdescription="ã“ã®ã€Œèƒ½åŠ›ã€ã‚’æŒã¤ã€Œå½¹å‰²ã€ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—〠> 「通知ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§é€šçŸ¥ã‚’å—ä¿¡ã—ãŸã‚ŠéŽåŽ»ã®é€šçŸ¥ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚" name="notices receive" value="43"/> </action_set> - <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ææ¡ˆã®ä½œæˆã¨æŠ•ç¥¨ã€æŠ•ç¥¨å±¥æ´ã®è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" - name="Proposals"> - <action description="ææ¡ˆã‚’作æˆ" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æŠ•票ã®å¯¾è±¡ã¨ãªã‚‹å•題æèµ·ã‚’ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œå•題æèµ·ã€ã‚¿ãƒ–上ã§ä½œæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="proposal start" value="44" /> - <action description="å•題æèµ·ã«æŠ•票ã™ã‚‹" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ï¼žææ¡ˆã‚¿ãƒ–ã§ææ¡ˆã«æŠ•ç¥¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - name="proposal vote" value="45" /> + <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ææ¡ˆã®ä½œæˆã¨æŠ•ç¥¨ã€æŠ•ç¥¨å±¥æ´ã®è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Proposals"> + <action description="ææ¡ˆã‚’作æˆ" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æŠ•票ã®å¯¾è±¡ã¨ãªã‚‹å•題æèµ·ã‚’ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œå•題æèµ·ã€ã‚¿ãƒ–上ã§ä½œæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="proposal start" value="44"/> + <action description="å•題æèµ·ã«æŠ•票ã™ã‚‹" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ï¼žææ¡ˆã‚¿ãƒ–ã§ææ¡ˆã«æŠ•ç¥¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="proposal vote" value="45"/> </action_set> - <action_set - description=" -ã“れらã®ã‚¢ãƒ“リティã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚„グループ・ボイス・ãƒãƒ£ãƒƒãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è¨±å¯ã‚„制é™ã®æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ -" - name="Chat"> - <action description="グループ・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹" - longdescription=" -ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ†ã‚ストãŠã‚ˆã³ãƒœã‚¤ã‚¹ã§å‚åŠ ã§ãã¾ã™ã€‚ -" - name="join group chat" /> - <action description="グループ・ボイス・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹" - longdescription=" -ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«å‚åŠ ã§ãã¾ã™ã€‚ 注: ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹ã‚¢ãƒ“リティãŒå¿…è¦ã§ã™ã€‚ -" - name="join voice chat" /> - <action description="グループ・ãƒãƒ£ãƒƒãƒˆã‚’管ç†ã™ã‚‹" - longdescription=" -ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—・テã‚スト・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚„å‚åŠ ã‚’ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -" - name="moderate group chat" /> + <action_set description=" ã“れらã®ã‚¢ãƒ“リティã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚„グループ・ボイス・ãƒãƒ£ãƒƒãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è¨±å¯ã‚„制é™ã®æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ " name="Chat"> + <action description="グループ・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹" longdescription=" ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ†ã‚ストãŠã‚ˆã³ãƒœã‚¤ã‚¹ã§å‚åŠ ã§ãã¾ã™ã€‚ " name="join group chat"/> + <action description="グループ・ボイス・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹" longdescription=" ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«å‚åŠ ã§ãã¾ã™ã€‚ 注: ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹ã‚¢ãƒ“リティãŒå¿…è¦ã§ã™ã€‚ " name="join voice chat"/> + <action description="グループ・ãƒãƒ£ãƒƒãƒˆã‚’管ç†ã™ã‚‹" longdescription=" ã“ã®ã‚¢ãƒ“リティをæŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・ボイス・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—・テã‚スト・ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚„å‚åŠ ã‚’ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ " name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml index ac41d7ce2b0..4fba4b15673 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="容姿" name="appearance panel"> +<panel label="アウトフィット" name="appearance panel"> <string name="No Outfit" value="アウトフィットãªã—"/> <panel name="panel_currentlook"> <button label="編集" name="editappearance_btn"/> <text name="currentlook_title"> - ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィット: + (ä¿å˜ã•れã¦ã„ã¾ã›ã‚“) </text> <text name="currentlook_name"> - マイ アウトフィット + MyOutfit With a really Long Name like MOOSE </text> </panel> - <filter_editor label="フィルター" name="Filter"/> + <filter_editor label="アウトフィットã®ãƒ•ィルター" name="Filter"/> <button label="装ç€" name="wear_btn"/> <button label="æ–°ã—ã„アウトフィット" name="newlook_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index c2a61f738ff..0c97fed901f 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -2,7 +2,7 @@ <panel label="ã‚‚ã®" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="æƒ…å ±" name="info_btn"/> + <button label="プãƒãƒ•ィール" name="info_btn"/> <button label="装ç€" name="wear_btn"/> <button label="プレイ" name="play_btn"/> <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml index 9544e7756c2..c6a13fa2125 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ã®ãƒ—ãƒãƒ‘ティ"> +<panel name="item properties" title="オブジェクトã®ãƒ—ãƒãƒ•ィール"> <panel.string name="unknown"> ï¼ˆä¸æ˜Žï¼‰ </panel.string> @@ -15,6 +15,8 @@ <panel.string name="acquiredDate"> [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] </panel.string> + <text name="title" value="オブジェクトã®ãƒ—ãƒãƒ•ィール"/> + <text name="where" value="(æŒã¡ç‰©ï¼‰"/> <panel label=""> <text name="LabelItemNameTitle"> åå‰ï¼š @@ -28,53 +30,50 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="プãƒãƒ•ィール..." name="BtnCreator"/> + <button label="プãƒãƒ•ィール" name="BtnCreator"/> <text name="LabelOwnerTitle"> 所有者: </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="プãƒãƒ•ィール..." name="BtnOwner"/> + <button label="プãƒãƒ•ィール" name="BtnOwner"/> <text name="LabelAcquiredTitle"> å–得: </text> <text name="LabelAcquiredDate"> Wed May 24 12:50:46 2006 </text> - <text name="OwnerLabel"> - ã‚ãªãŸï¼š - </text> - <check_box label="編集" name="CheckOwnerModify"/> - <check_box label="コピー" name="CheckOwnerCopy"/> - <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 全員: - </text> - <check_box label="コピー" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - グループ: - </text> - <check_box label="共有" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - æ¬¡ã®æ‰€æœ‰è€…: - </text> - <check_box label="編集" name="CheckNextOwnerModify"/> - <check_box label="コピー" name="CheckNextOwnerCopy"/> - <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckNextOwnerTransfer"/> + <panel name="perms_inv"> + <text name="perm_modify"> + ã‚ãªãŸãŒã§ãã‚‹ã“ã¨ï¼š + </text> + <check_box label="ä¿®æ£" name="CheckOwnerModify"/> + <check_box label="コピー" name="CheckOwnerCopy"/> + <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + 全員: + </text> + <check_box label="コピー" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + グループ: + </text> + <check_box label="共有" name="CheckShareWithGroup" tool_tip="è¨å®šã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼å…¨å“¡ã«ã“ã®ã‚ªãƒ–ジェクトã®ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã€‚ è²æ¸¡ã—ãªã„é™ã‚Šã€å½¹å‰²åˆ¶é™ã‚’有効ã«ã¯ã§ãã¾ã›ã‚“。"/> + <text name="NextOwnerLabel"> + æ¬¡ã®æ‰€æœ‰è€…: + </text> + <check_box label="ä¿®æ£" name="CheckNextOwnerModify"/> + <check_box label="コピー" name="CheckNextOwnerCopy"/> + <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckNextOwnerTransfer" tool_tip="æ¬¡ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™"/> + </panel> <check_box label="販売ã™ã‚‹" name="CheckPurchase"/> <combo_box name="combobox sale copy"> <combo_box.item label="コピー" name="Copy"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> - <spinner label="ä¾¡æ ¼ï¼š" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <spinner label="ä¾¡æ ¼ï¼š L$" name="Edit Cost"/> </panel> <panel name="button_panel"> - <button label="編集" name="edit_btn"/> <button label="ã‚ャンセル" name="cancel_btn"/> - <button label="ä¿å˜" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index 5bf37954c50..c2d2af5346c 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="オブジェクトã®ãƒ—ãƒãƒ‘ティ"> +<panel name="object properties" title="オブジェクトã®ãƒ—ãƒãƒ•ィール"> <panel.string name="text deed continued"> è²æ¸¡ </panel.string> @@ -36,6 +36,8 @@ <panel.string name="Sale Mixed"> Mixed Sale </panel.string> + <text name="title" value="オブジェクトã®ãƒ—ãƒãƒ•ィール"/> + <text name="where" value="(ワールド内)"/> <panel label=""> <text name="Name:"> åå‰ï¼š @@ -43,11 +45,11 @@ <text name="Description:"> 説明: </text> - <text name="Creator:"> + <text name="CreatorNameLabel"> 制作者: </text> <text name="Creator Name"> - Esbee Linden + Erica Linden </text> <text name="Owner:"> 所有者: @@ -55,13 +57,12 @@ <text name="Owner Name"> Erica Linden </text> - <text name="Group:"> + <text name="Group_label"> グループ: </text> <button name="button set group" tool_tip="ã“ã®ã‚ªãƒ–ジェクト権é™ã‚’共有ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠž"/> <name_box initial_value="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°..." name="Group Name Proxy"/> <button label="è²æ¸¡" label_selected="è²æ¸¡" name="button deed" tool_tip="ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’è²æ¸¡ã™ã‚‹ã¨ã€Œæ¬¡ã®æ‰€æœ‰è€…ã€ã®æ¨©é™ãŒé©ç”¨ã•れã¾ã™ã€‚ グループ共有オブジェクトã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ィサーãŒè²æ¸¡ã§ãã¾ã™ã€‚"/> - <check_box label="共有" name="checkbox share with group" tool_tip="è¨å®šã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼å…¨å“¡ã«ã“ã®ã‚ªãƒ–ジェクトã®ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã€‚ è²æ¸¡ã—ãªã„é™ã‚Šã€å½¹å‰²åˆ¶é™ã‚’有効ã«ã¯ã§ãã¾ã›ã‚“。"/> <text name="label click action"> クリックã§ï¼š </text> @@ -72,55 +73,56 @@ <combo_box.item label="ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†" name="Payobject"/> <combo_box.item label="é–‹ã" name="Open"/> </combo_box> - <check_box label="販売対象:" name="checkbox for sale"/> - <combo_box name="sale type"> - <combo_box.item label="コピー" name="Copy"/> - <combo_box.item label="ä¸èº«" name="Contents"/> - <combo_box.item label="オリジナル" name="Original"/> - </combo_box> - <spinner label="ä¾¡æ ¼ï¼š L$" name="Edit Cost"/> - <check_box label="検索ã«è¡¨ç¤º" name="search_check" tool_tip="ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ¤œç´¢çµæžœã«è¡¨ç¤ºã—ã¾ã™"/> - <panel name="perms_build"> + <panel name="perms_inv"> <text name="perm_modify"> - ã‚ãªãŸã¯ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™ + ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™ </text> <text name="Anyone can:"> 全員: </text> - <check_box label="移動" name="checkbox allow everyone move"/> <check_box label="コピー" name="checkbox allow everyone copy"/> - <text name="Next owner can:"> + <check_box label="移動" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + グループ: + </text> + <check_box label="共有" name="checkbox share with group" tool_tip="è¨å®šã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼å…¨å“¡ã«ã“ã®ã‚ªãƒ–ジェクトã®ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã€‚ è²æ¸¡ã—ãªã„é™ã‚Šã€å½¹å‰²åˆ¶é™ã‚’有効ã«ã¯ã§ãã¾ã›ã‚“。"/> + <text name="NextOwnerLabel"> æ¬¡ã®æ‰€æœ‰è€…: </text> <check_box label="ä¿®æ£" name="checkbox next owner can modify"/> <check_box label="コピー" name="checkbox next owner can copy"/> <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="checkbox next owner can transfer" tool_tip="æ¬¡ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™"/> - <text name="B:"> - B. - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> </panel> + <check_box label="販売ä¸" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="ä¸èº«" name="Contents"/> + <combo_box.item label="オリジナル" name="Original"/> + </combo_box> + <spinner label="ä¾¡æ ¼ï¼š L$" name="Edit Cost"/> + <check_box label="検索ã«è¡¨ç¤º" name="search_check" tool_tip="ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ¤œç´¢çµæžœã«è¡¨ç¤ºã—ã¾ã™"/> + <text name="B:"> + B. + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> </panel> <panel name="button_panel"> - <button label="編集" name="edit_btn"/> <button label="é–‹ã" name="open_btn"/> <button label="支払ã†" name="pay_btn"/> <button label="è²·ã†" name="buy_btn"/> - <button label="ã‚ャンセル" name="cancel_btn"/> - <button label="ä¿å˜" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 2006d1cbdc2..d2a1977fc97 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -10,6 +10,9 @@ <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life Grid </string> @@ -49,6 +52,9 @@ <string name="LoginInitializingMultimedia"> マルãƒãƒ¡ãƒ‡ã‚£ã‚¢ã‚’åˆæœŸåŒ–ã—ã¦ã„ã¾ã™... </string> + <string name="LoginInitializingFonts"> + フォントをãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ä¸... + </string> <string name="LoginVerifyingCache"> ã‚ャッシュ・ファイルを検証ã—ã¦ã„ã¾ã™(æ‰€è¦æ™‚é–“ã¯60~90ç§’)... </string> @@ -79,6 +85,9 @@ <string name="LoginDownloadingClothing"> æœã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™... </string> + <string name="LoginFailedNoNetwork"> + ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ï¼š 接続を確立ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãŠä½¿ã„ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã‚’ã”確èªãã ã•ã„。 + </string> <string name="Quit"> 終了 </string> @@ -174,7 +183,7 @@ 地図ã«è¡¨ç¤º </string> <string name="BUTTON_CLOSE_DARWIN"> - é–‰ã˜ã‚‹ (⌘W) + é–‰ã˜ã‚‹ (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> é–‰ã˜ã‚‹ (Ctrl+W) @@ -191,9 +200,6 @@ <string name="BUTTON_DOCK"> ドッã‚ング </string> - <string name="BUTTON_UNDOCK"> - 切り離㙠- </string> <string name="BUTTON_HELP"> ヘルプを表示 </string> @@ -626,11 +632,14 @@ <string name="ControlYourCamera"> カメラã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ« </string> + <string name="NotConnected"> + 接続ã•れã¦ã„ã¾ã›ã‚“ + </string> <string name="SIM_ACCESS_PG"> - PG + 一般 </string> <string name="SIM_ACCESS_MATURE"> - Mature + 控ãˆã‚ </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -818,6 +827,9 @@ <string name="InventoryNoMatchingItems"> 一致ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ãŒæŒã¡ç‰©ã«ã‚りã¾ã›ã‚“ã§ã—㟠</string> + <string name="FavoritesNoMatchingItems"> + ã“ã“ã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’ドラッグã—ã¦ã€ãŠæ°—ã«å…¥ã‚Šã«è¿½åŠ ã—ã¾ã™ã€‚ + </string> <string name="InventoryNoTexture"> æŒã¡ç‰©å†…ã«ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ã‚³ãƒ”ーãŒã‚りã¾ã›ã‚“ </string> @@ -1288,6 +1300,156 @@ <string name="RegionInfoAllowedGroups"> 許å¯ã•れãŸã‚°ãƒ«ãƒ¼ãƒ—: ([ALLOWEDGROUPS]ã€æœ€å¤§ [MAXACCESS] グループ) </string> + <string name="ScriptLimitsParcelScriptMemory"> + 区画スクリプトメモリ + </string> + <string name="ScriptLimitsParcelsOwned"> + 区画一覧: [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + 使用ã•れãŸãƒ¡ãƒ¢ãƒªï¼š [MAX] kb ä¸ [COUNT] kb:[AVAILABLE] kb åˆ©ç”¨å¯ + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + 使用ã•れãŸãƒ¡ãƒ¢ãƒªï¼š [COUNT] kb + </string> + <string name="ScriptLimitsParcelScriptURLs"> + 区画ã®ã‚¹ã‚¯ãƒªãƒ—トURL + </string> + <string name="ScriptLimitsURLsUsed"> + 使用ã•れãŸURL: [MAX] ä¸ [COUNT] :[AVAILABLE] åˆ©ç”¨å¯ + </string> + <string name="ScriptLimitsURLsUsedSimple"> + 使用ã•れãŸURL: [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + æƒ…å ±ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠+ </string> + <string name="ScriptLimitsRequestWrongRegion"> + エラー: ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±ã¯ç¾åœ¨åœ°ã®ã¿å–å¾—ã§ãã¾ã™ + </string> + <string name="ScriptLimitsRequestWaiting"> + æƒ…å ±ã‚’å–å¾—ä¸... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + ã“ã®åŒºç”»ã‚’調査ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 + </string> + <string name="SITTING_ON"> + ç€å¸ä¸ + </string> + <string name="ATTACH_CHEST"> + 胸部 + </string> + <string name="ATTACH_HEAD"> + é + </string> + <string name="ATTACH_LSHOULDER"> + 左肩 + </string> + <string name="ATTACH_RSHOULDER"> + å³è‚© + </string> + <string name="ATTACH_LHAND"> + 左手 + </string> + <string name="ATTACH_RHAND"> + 峿‰‹ + </string> + <string name="ATTACH_LFOOT"> + 左足 + </string> + <string name="ATTACH_RFOOT"> + å³è¶³ + </string> + <string name="ATTACH_BACK"> + èƒŒä¸ + </string> + <string name="ATTACH_PELVIS"> + 骨盤 + </string> + <string name="ATTACH_MOUTH"> + å£ + </string> + <string name="ATTACH_CHIN"> + ã‚ã” + </string> + <string name="ATTACH_LEAR"> + 左耳 + </string> + <string name="ATTACH_REAR"> + å³è€³ + </string> + <string name="ATTACH_LEYE"> + 左目 + </string> + <string name="ATTACH_REYE"> + å³ç›® + </string> + <string name="ATTACH_NOSE"> + é¼» + </string> + <string name="ATTACH_RUARM"> + å³è…•(上) + </string> + <string name="ATTACH_RLARM"> + å³è…•(下) + </string> + <string name="ATTACH_LUARM"> + 左腕(上) + </string> + <string name="ATTACH_LLARM"> + 左腕(下) + </string> + <string name="ATTACH_RHIP"> + å³è…° + </string> + <string name="ATTACH_RULEG"> + å³è„šï¼ˆä¸Šï¼‰ + </string> + <string name="ATTACH_RLLEG"> + å³è„šï¼ˆä¸‹ï¼‰ + </string> + <string name="ATTACH_LHIP"> + 左腰 + </string> + <string name="ATTACH_LULEG"> + 左脚(上) + </string> + <string name="ATTACH_LLLEG"> + 左脚(下) + </string> + <string name="ATTACH_BELLY"> + ãŠè…¹ + </string> + <string name="ATTACH_RPEC"> + å³èƒ¸ç‹ + </string> + <string name="ATTACH_LPEC"> + å·¦èƒ¸ç‹ + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD(ä¸å¤® 2) + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUDå³ä¸Š + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD(上・ä¸å¤®ï¼‰ + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD 左上 + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD(ä¸å¤® 1) + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD(左下) + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD(下) + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD(å³ä¸‹ï¼‰ + </string> <string name="CursorPos"> [LINE] 行目ã€[COLUMN] 列目 </string> @@ -1338,6 +1500,12 @@ <string name="ClassifiedUpdateAfterPublish"> (掲載後更新) </string> + <string name="NoPicksClassifiedsText"> + ã“ã“ã«ã¯ãƒ”ック・クラシファイド広告ã¯ã‚りã¾ã›ã‚“。 + </string> + <string name="PicksClassifiedsLoadingText"> + ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... + </string> <string name="MultiPreviewTitle"> プレビュー </string> @@ -1414,23 +1582,35 @@ 䏿˜Žã®æ‹¡å¼µå: %s 使用å¯èƒ½ãªæ‹¡å¼µå: .wav, .tga, .bmp, .jpg, .jpeg, or .bvh </string> + <string name="MuteObject2"> + ブãƒãƒƒã‚¯ + </string> + <string name="MuteAvatar"> + ブãƒãƒƒã‚¯ + </string> + <string name="UnmuteObject"> + ブãƒãƒƒã‚¯è§£é™¤ + </string> + <string name="UnmuteAvatar"> + ブãƒãƒƒã‚¯è§£é™¤ + </string> <string name="AddLandmarkNavBarMenu"> - ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’è¿½åŠ ... + マイ ランドマークã«è¿½åŠ ... </string> <string name="EditLandmarkNavBarMenu"> - ランドマークを編集... + マイ ランドマークを編集... </string> <string name="accel-mac-control"> - ⌃ + ⌃ </string> <string name="accel-mac-command"> - ⌘ + ⌘ </string> <string name="accel-mac-option"> - ⌥ + ⌥ </string> <string name="accel-mac-shift"> - ⇧ + ⇧ </string> <string name="accel-win-control"> Ctrl+ @@ -1616,7 +1796,7 @@ 致命的ãªã‚¨ãƒ©ãƒ¼ </string> <string name="MBRequiresAltiVec"> - [APP_NAME] ã¯ã€AltiVecæè¼‰ã®ãƒ—ãƒã‚»ãƒƒã‚µãŒå¿…è¦ã§ã™ã€‚(G4 以é™ï¼‰ + [APP_NAME] ã¯ã€AltiVecæè¼‰ã®ãƒ—ãƒã‚»ãƒƒã‚µãŒå¿…è¦ã§ã™ã€‚(G4 以é™ï¼‰ </string> <string name="MBAlreadyRunning"> [APP_NAME] ã¯ã™ã§ã«å®Ÿè¡Œä¸ã§ã™ã€‚ @@ -1628,7 +1808,7 @@ ã‚¯ãƒ©ãƒƒã‚·ãƒ¥å ±å‘Šã‚’é€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ </string> <string name="MBAlert"> - è¦å‘Š + 通知 </string> <string name="MBNoDirectX"> [APP_NAME] 㯠DirectX 9.0b åŠã³ãれ以é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’検出ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ @@ -2010,12 +2190,6 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="Eyes Bugged"> 下ã¾ã¶ãŸãŒãŸã‚‹ã‚“ã ç›® </string> - <string name="Eyes Shear Left Up"> - å·¦å´ã‚’上㫠- </string> - <string name="Eyes Shear Right Up"> - å³å´ã‚’上㫠- </string> <string name="Face Shear"> é¡”ã®ã‚†ãŒã¿ </string> @@ -3018,6 +3192,27 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="LocationCtrlComboBtnTooltip"> マイãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³å±¥æ´ </string> + <string name="LocationCtrlForSaleTooltip"> + ã“ã®åœŸåœ°ã‚’購入 + </string> + <string name="LocationCtrlVoiceTooltip"> + ã“ã“ã§ã¯ãƒœã‚¤ã‚¹ã®åˆ©ç”¨ãŒã§ãã¾ã›ã‚“ + </string> + <string name="LocationCtrlFlyTooltip"> + 飛行ã¯ç¦æ¢ã•れã¦ã„ã¾ã™ + </string> + <string name="LocationCtrlPushTooltip"> + ãƒ—ãƒƒã‚·ãƒ¥ç¦æ¢ + </string> + <string name="LocationCtrlBuildTooltip"> + オブジェクトã®åˆ¶ä½œãƒ»ãƒ‰ãƒãƒƒãƒ—ã¯ç¦æ¢ã•れã¦ã„ã¾ã™ + </string> + <string name="LocationCtrlScriptsTooltip"> + スクリプトä¸å¯ + </string> + <string name="LocationCtrlDamageTooltip"> + 体力 + </string> <string name="UpdaterWindowTitle"> [APP_NAME] アップデート </string> @@ -3075,6 +3270,33 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="IM_moderator_label"> (モデレータ) </string> + <string name="started_call"> + ボイスコールを開始ã—ã¾ã™ + </string> + <string name="joined_call"> + ボイスコールã«å‚åŠ ã—ã¾ã—㟠+ </string> + <string name="ringing-im"> + ボイスコールã«å‚åŠ ... + </string> + <string name="connected-im"> + 接続ã—ã¾ã—ãŸã€‚コール終了をクリックã—ã¦åˆ‡ã‚Šã¾ã™ + </string> + <string name="hang_up-im"> + ボイスコールã‹ã‚‰é€€å¸ã—ã¾ã—㟠+ </string> + <string name="answering-im"> + 接続ä¸... + </string> + <string name="conference-title"> + アドホックコンファレンス + </string> + <string name="inventory_item_offered-im"> + æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ãŒé€ã‚‰ã‚Œã¦ãã¾ã—㟠+ </string> + <string name="share_alert"> + æŒã¡ç‰©ã‹ã‚‰ã“ã“ã«ã‚¢ã‚¤ãƒ†ãƒ をドラッグã—ã¾ã™ + </string> <string name="only_user_message"> ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã„るユーザーã¯ã‚ãªãŸã ã‘ã§ã™ã€‚ </string> @@ -3084,6 +3306,12 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="invite_message"> ã“ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«å¿œç”/接続ã™ã‚‹å ´åˆã¯ã€[BUTTON NAME]をクリックã—ã¦ãã ã•ã„。 </string> + <string name="muted_message"> + ã“ã®ä½äººã‚’ブãƒãƒƒã‚¯ã—ã¦ã„ã¾ã™ã€‚ メッセージをé€ã‚‹ã¨ã€ãƒ–ãƒãƒƒã‚¯ãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã™ã€‚ + </string> + <string name="generic"> + リクエストä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã‚ã¨ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </string> <string name="generic_request_error"> è¦æ±‚ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 </string> @@ -3102,19 +3330,37 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="not_a_mod_error"> ã‚ãªãŸã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ»ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ã§ã¯ã‚りã¾ã›ã‚“。 </string> + <string name="muted"> + グループã®ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ãƒ¼ãŒã€ã‚ãªãŸã®ãƒ†ã‚ストãƒãƒ£ãƒƒãƒˆã‚’ç¦æ¢ã—ã¾ã—ãŸã€‚ + </string> <string name="muted_error"> グループモデレータãŒã‚ãªãŸã®ãƒ†ã‚ストãƒãƒ£ãƒƒãƒˆã‚’無効化ã—ã¾ã—㟠</string> <string name="add_session_event"> [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ </string> + <string name="message"> + [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </string> <string name="message_session_event"> [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ </string> + <string name="mute"> + モデレートä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + </string> + <string name="removed"> + グループã‹ã‚‰è„±é€€ã—ã¾ã—ãŸã€‚ + </string> <string name="removed_from_group"> ã‚ãªãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰å‰Šé™¤ã•れã¾ã—ãŸã€‚ </string> <string name="close_on_no_ability"> ã“ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’継続ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ </string> + <string name="unread_chat_single"> + [SOURCES] ã¯ä½•ã‹æ–°ã—ã„ã“ã¨ã‚’言ã„ã¾ã—ãŸã€‚ + </string> + <string name="unread_chat_multiple"> + [SOURCES] ã¯ä½•ã‹æ–°ã—ã„ã“ã¨ã‚’言ã„ã¾ã—ãŸã€‚ + </string> </strings> -- GitLab From dc0b34cf00f0e91de20f6d608013fb0b44bb01ce Mon Sep 17 00:00:00 2001 From: brad kittenbrink <brad@lindenlab.com> Date: Tue, 26 Jan 2010 15:33:08 -0800 Subject: [PATCH 132/521] Fix for stray tab character breaking the coding standard policy hook. --- scripts/template_verifier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py index d5fc1192700..adcfcbcae63 100755 --- a/scripts/template_verifier.py +++ b/scripts/template_verifier.py @@ -103,7 +103,7 @@ def die(msg): PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer) DEVELOPMENT_ACCEPTABLE = ( compatibility.Same, compatibility.Newer, - compatibility.Older, compatibility.Mixed) + compatibility.Older, compatibility.Mixed) MAX_MASTER_AGE = 60 * 60 * 4 # refresh master cache every 4 hours -- GitLab From d4b5ee8a0c893150c68c5e506e62813f0704c9a4 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Tue, 26 Jan 2010 16:39:10 -0800 Subject: [PATCH 133/521] DEV-43688 cycle2 changes from Simone for DE --- .../default/xui/de/floater_avatar_picker.xml | 2 +- .../default/xui/de/floater_color_picker.xml | 2 +- .../default/xui/de/floater_notification.xml | 2 +- .../skins/default/xui/de/floater_sys_well.xml | 2 +- .../default/xui/de/floater_world_map.xml | 2 +- .../xui/de/menu_inventory_gear_default.xml | 2 +- .../xui/de/menu_teleport_history_gear.xml | 2 +- .../skins/default/xui/de/menu_viewer.xml | 6 ++--- .../skins/default/xui/de/notifications.xml | 4 ++-- .../default/xui/de/panel_main_inventory.xml | 2 +- .../default/xui/de/panel_place_profile.xml | 2 +- .../skins/default/xui/de/panel_places.xml | 2 +- .../xui/de/panel_preferences_setup.xml | 2 +- .../xui/de/panel_preferences_sound.xml | 2 +- .../newview/skins/default/xui/de/strings.xml | 24 +++++++++---------- 15 files changed, 29 insertions(+), 29 deletions(-) diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml index ed8de62b695..bc78ccd7f8b 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml @@ -34,7 +34,7 @@ </panel> <panel label="In meiner Nähe" name="NearMePanel"> <text name="InstructSelectResident"> - Wählen Sie eine Person aus, die sich in der Nähe befindet: + Wählen Sie eine Person aus: </text> <slider bottom_delta="-36" label="Bereich" name="near_me_range"/> <text name="meters"> diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml index 552bd2e2bfc..aed4bacb30f 100644 --- a/indra/newview/skins/default/xui/de/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml @@ -26,6 +26,6 @@ Aktuelle Farbe: </text> <text name="(Drag below to save.)"> - (Zum Speichern nach unten ziehen.) + (Nach unten ziehen) </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml index c0806ef50c5..7752d22b521 100644 --- a/indra/newview/skins/default/xui/de/floater_notification.xml +++ b/indra/newview/skins/default/xui/de/floater_notification.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification" title="BENACHRICHTIGUNGEN"> +<floater name="notification" title="MELDUNGEN"> <text_editor name="payload"> Wird geladen... </text_editor> diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml index 0aa0014baaf..982786b66e4 100644 --- a/indra/newview/skins/default/xui/de/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN"> +<floater name="notification_chiclet" title="MELDUNGEN"> <string name="title_im_well_window"> IM-SITZUNGEN </string> diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index 89af5d4a30c..accc023b8fe 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -28,7 +28,7 @@ <text name="auction_label"> Land-Auktion </text> - <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="An meinen Heimatort teleportieren"/> + <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> <text name="Home_label"> Startseite </text> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml index 472d7bc4fda..e2b980c7b60 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Fenster: Neues Inventar" name="new_window"/> + <menu_item_call label="Neues Inventar-Fenster" name="new_window"/> <menu_item_call label="Nach Name sortieren" name="sort_by_name"/> <menu_item_call label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/> <menu_item_call label="Filter anzeigen" name="show_filters"/> diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml index 2bfdadf22a4..68b8e21802a 100644 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml @@ -2,5 +2,5 @@ <menu name="Teleport History Gear Context Menu"> <menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/> <menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/> - <menu_item_call label="Teleport-Verlauf löschen" name="Clear Teleport History"/> + <menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index e972e5d1f53..c6bbea285fd 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -23,7 +23,7 @@ <menu_item_call label="Meine Freunde" name="My Friends"/> <menu_item_call label="Meine Gruppen" name="My Groups"/> <menu_item_check label="Lokaler Chat" name="Nearby Chat"/> - <menu_item_call label="Leute in dern Nähe" name="Active Speakers"/> + <menu_item_call label="Leute in der Nähe" name="Active Speakers"/> <menu_item_check label="Medien in der Nähe" name="Nearby Media"/> </menu> <menu label="Welt" name="World"> @@ -208,7 +208,7 @@ <menu label="Konsolen" name="Consoles"> <menu_item_check label="Textur" name="Texture Console"/> <menu_item_check label="Fehler beseitigen" name="Debug Console"/> - <menu_item_call label="Konsole: Meldungen" name="Notifications"/> + <menu_item_call label="Meldungen" name="Notifications"/> <menu_item_check label="Texturgröße" name="Texture Size"/> <menu_item_check label="Texture-Kategorie" name="Texture Category"/> <menu_item_check label="Schnelle Timer" name="Fast Timers"/> @@ -281,7 +281,7 @@ <menu label="Netzwerk" name="Network"> <menu_item_check label="Agent pausieren" name="AgentPause"/> <menu_item_call label="Meldungsprotokoll aktivieren" name="Enable Message Log"/> - <menu_item_call label="Meldungs-Protokoll deaktivieren" name="Disable Message Log"/> + <menu_item_call label="Meldungsprotokoll deaktivieren" name="Disable Message Log"/> <menu_item_check label="Objektposition laut Geschwindigkeit interpolieren" name="Velocity Interpolate Objects"/> <menu_item_check label="Positionen der interpolierten Objekte anfragen" name="Ping Interpolate Object Positions"/> <menu_item_call label="Ein Paket fallenlassen" name="Drop a Packet"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 65d3b74bd56..d94bbd8564f 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -417,7 +417,7 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. </notification> <notification name="StartRegionEmpty"> Sie haben keine Start-Region festgelegt. -Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Heimatort“ als Startposition aus. +Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Zuhause“ als Startposition aus. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CouldNotStartStopScript"> @@ -2572,7 +2572,7 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ConfirmClearTeleportHistory"> - Möchten Sie Ihren Teleport-Verlauf löschen? + Möchten Sie Ihre Teleport-Liste löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="BottomTrayButtonCanNotBeShown"> diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml index 026e766ab58..aa0b43b5506 100644 --- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml @@ -29,7 +29,7 @@ <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/> <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> </menu> - <menu label="Bauen" name="Create"> + <menu label="Erstellen" name="Create"> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> <menu_item_call label="Neue Notizkarte" name="New Note"/> diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml index b933a0a4990..94a43833bf4 100644 --- a/indra/newview/skins/default/xui/de/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml @@ -6,7 +6,7 @@ <string name="available" value="verfügbar"/> <string name="allocated" value="vergeben"/> <string name="title_place" value="Ortsprofil"/> - <string name="title_teleport_history" value="Teleport-Verlauf"/> + <string name="title_teleport_history" value="Speicherort der Teleport-Liste"/> <string name="not_available" value="k.A."/> <string name="unknown" value="(unbekannt)"/> <string name="public" value="(öffentlich)"/> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index d57ba9d0ab1..8ee26f4e5fc 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Orte" name="places panel"> <string name="landmarks_tab_title" value="MEINE LANDMARKEN"/> - <string name="teleport_history_tab_title" value="TELEPORT-VERLAUF"/> + <string name="teleport_history_tab_title" value="TELEPORT-LISTE"/> <filter_editor label="Orte filtern" name="Filter"/> <panel name="button_panel"> <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index 89433378bb5..00be3920ca0 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Hardware & Web" name="Input panel"> +<panel label="Hardware/Internet" name="Input panel"> <button label="Andere Geräte" name="joystick_setup_button"/> <text name="Mouselook:"> Mouselook: diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 6060b1e6107..2398da71d02 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -10,7 +10,7 @@ <check_box label="Voice aktivieren" name="enable_voice_check"/> <slider label="Sprache" name="Voice Volume"/> <text name="Listen from"> - Hören von: + Zuhören von: </text> <radio_group name="ear_location"> <radio_item label="Kameraposition" name="0"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 29c07f9f660..8fd1c59ca0b 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -825,7 +825,7 @@ ESC drücken, um zur Normalansicht zurückzukehren </string> <string name="InventoryNoMatchingItems"> - Im Inventar wurden keine passenden Artikel gefunden. + Im Inventar wurden keine passenden Objekte gefunden. </string> <string name="FavoritesNoMatchingItems"> Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen. @@ -1924,7 +1924,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Volumen: Oben </string> <string name="Big Head"> - Großer Kopf + Groß </string> <string name="Big Pectorals"> Große Brustmuskeln @@ -1960,13 +1960,13 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Sommersprossen </string> <string name="Body Thick"> - Körper - breit + breit </string> <string name="Body Thickness"> Körperbreite </string> <string name="Body Thin"> - Körper - schmal + schmal </string> <string name="Bow Legged"> o-beinig @@ -2323,7 +2323,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Absatzform </string> <string name="Height"> - Höhe + Größe </string> <string name="High"> Hoch @@ -2605,16 +2605,16 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Mehr </string> <string name="More Sloped"> - Mehr + Flach </string> <string name="More Square"> - Mehr + Eckiger </string> <string name="More Upper Lip"> Mehr </string> <string name="More Vertical"> - Mehr + Steil </string> <string name="More Volume"> Mehr @@ -2929,10 +2929,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Falten </string> <string name="Shoe Height"> - Höhe + Schuhart </string> <string name="Short"> - Kurz + Sandale </string> <string name="Short Arms"> Kurze Arme @@ -3013,7 +3013,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Kleine Hände </string> <string name="Small Head"> - Kleiner Kopf + Klein </string> <string name="Smooth"> Glätten @@ -3061,7 +3061,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Nach vorne </string> <string name="Tall"> - Groß + Stiefel </string> <string name="Taper Back"> Ansatzbreite hinten -- GitLab From 03dbeb6f4da302f4c5f118c4d848b744495a7445 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:32:12 -0800 Subject: [PATCH 134/521] CID-400 Checker: UNINIT_CTOR Function: LLDirPicker::LLDirPicker() File: /indra/newview/lldirpicker.cpp --- indra/newview/lldirpicker.cpp | 14 ++++++++++---- indra/newview/lldirpicker.h | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index a720dc46b54..d1abbb0f513 100644 --- a/indra/newview/lldirpicker.cpp +++ b/indra/newview/lldirpicker.cpp @@ -61,7 +61,9 @@ LLDirPicker LLDirPicker::sInstance; // #if LL_WINDOWS -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { } @@ -125,7 +127,9 @@ std::string LLDirPicker::getDirName() /////////////////////////////////////////////DARWIN #elif LL_DARWIN -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { reset(); @@ -262,13 +266,15 @@ std::string LLDirPicker::getDirName() void LLDirPicker::reset() { - mLocked = FALSE; + mLocked = false; mDir.clear(); } #elif LL_LINUX || LL_SOLARIS -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { mFilePicker = new LLFilePicker(); reset(); diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h index 26f76915aee..b48d2c66c41 100644 --- a/indra/newview/lldirpicker.h +++ b/indra/newview/lldirpicker.h @@ -97,7 +97,7 @@ class LLDirPicker std::string* mFileName; std::string mDir; - BOOL mLocked; + bool mLocked; static LLDirPicker sInstance; -- GitLab From 7ed71ecf71e275fd8b36f88d0ad9826a56a0ef3d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:35:25 -0800 Subject: [PATCH 135/521] CID-399 Checker: UNINIT_CTOR Function: LLFilePicker::LLFilePicker() File: /indra/newview/llfilepicker.cpp --- indra/newview/llfilepicker.cpp | 13 +++++++------ indra/newview/llfilepicker.h | 3 +-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 028e1cc098c..2873057c19a 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -68,7 +68,7 @@ LLFilePicker LLFilePicker::sInstance; // LLFilePicker::LLFilePicker() : mCurrentFile(0), - mLocked(FALSE) + mLocked(false) { reset(); @@ -92,6 +92,7 @@ LLFilePicker::LLFilePicker() mOFN.lCustData = 0L; mOFN.lpfnHook = NULL; mOFN.lpTemplateName = NULL; + mFilesW[0] = '\0'; #endif #if LL_DARWIN @@ -120,7 +121,7 @@ const std::string LLFilePicker::getNextFile() { if (mCurrentFile >= getFileCount()) { - mLocked = FALSE; + mLocked = false; return std::string(); } else @@ -133,7 +134,7 @@ const std::string LLFilePicker::getCurFile() { if (mCurrentFile >= getFileCount()) { - mLocked = FALSE; + mLocked = false; return std::string(); } else @@ -144,7 +145,7 @@ const std::string LLFilePicker::getCurFile() void LLFilePicker::reset() { - mLocked = FALSE; + mLocked = false; mFiles.clear(); mCurrentFile = 0; } @@ -276,7 +277,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter) } else { - mLocked = TRUE; + mLocked = true; WCHAR* tptrw = mFilesW; std::string dirname; while(1) @@ -866,7 +867,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter) if (getFileCount()) success = true; if (getFileCount() > 1) - mLocked = TRUE; + mLocked = true; } // Account for the fact that the app has been stalled. diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h index 7ecbc3db601..4f254ff67eb 100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h @@ -176,8 +176,7 @@ class LLFilePicker std::vector<std::string> mFiles; S32 mCurrentFile; - BOOL mLocked; - BOOL mMultiFile; + bool mLocked; static LLFilePicker sInstance; -- GitLab From 40144d47774925b372b7145bfd248448f52fdc45 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:48:52 -0800 Subject: [PATCH 136/521] CID-397 Checker: UNINIT_CTOR Function: LLPanelLandObjects::LLPanelLandObjects(LLSafeHandle<LLParcelSelection> &) File: /indra/newview/llfloaterland.cpp --- indra/newview/llfloaterland.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 42c961a956b..0ad283d7c69 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1029,7 +1029,30 @@ void LLPanelLandGeneral::onClickStopSellLand(void* data) //--------------------------------------------------------------------------- LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel) : LLPanel(), - mParcel(parcel) + + mParcel(parcel), + mParcelObjectBonus(NULL), + mSWTotalObjects(NULL), + mObjectContribution(NULL), + mTotalObjects(NULL), + mOwnerObjects(NULL), + mBtnShowOwnerObjects(NULL), + mBtnReturnOwnerObjects(NULL), + mGroupObjects(NULL), + mBtnShowGroupObjects(NULL), + mBtnReturnGroupObjects(NULL), + mOtherObjects(NULL), + mBtnShowOtherObjects(NULL), + mBtnReturnOtherObjects(NULL), + mSelectedObjects(NULL), + mCleanOtherObjectsTime(NULL), + mOtherTime(0), + mBtnRefresh(NULL), + mBtnReturnOwnerList(NULL), + mOwnerList(NULL), + mFirstReply(TRUE), + mSelectedCount(0), + mSelectedIsGroup(FALSE) { } -- GitLab From 5d2da8a4d01c86141c6fa067194969e85dc68765 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:50:15 -0800 Subject: [PATCH 137/521] CID-396 Checker: UNINIT_CTOR Function: LLFloaterPay::LLFloaterPay(const LLSD &) File: /indra/newview/llfloaterpay.cpp --- indra/newview/llfloaterpay.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index c2389e73a06..00959322e5a 100644 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -135,7 +135,8 @@ LLFloaterPay::LLFloaterPay(const LLSD& key) mCallback(NULL), mObjectNameText(NULL), mTargetUUID(key.asUUID()), - mTargetIsGroup(FALSE) + mTargetIsGroup(FALSE), + mHaveName(FALSE) { } -- GitLab From cbbfe761caffdd292c464db7b015a50a4ed5e731 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:53:03 -0800 Subject: [PATCH 138/521] CID-395 Checker: UNINIT_CTOR Function: LLPanelEstateCovenant::LLPanelEstateCovenant() File: /indra/newview/llfloaterregioninfo.cpp --- indra/newview/llfloaterregioninfo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 03ff2cc3706..85353ce308f 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -2544,7 +2544,9 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re } LLPanelEstateCovenant::LLPanelEstateCovenant() -: mCovenantID(LLUUID::null) + : + mCovenantID(LLUUID::null), + mAssetStatus(ASSET_ERROR) { } -- GitLab From 8d88308b36add28edd8a9976dd22b8877be0272e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:56:36 -0800 Subject: [PATCH 139/521] CID-394 Checker: UNINIT_CTOR Function: LLPanelScriptLimitsRegionMemory::LLPanelScriptLimitsRegionMemory() File: /indra/newview/llfloaterscriptlimits.h --- indra/newview/llfloaterscriptlimits.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 7e2b536eb6b..e0fdf052ebb 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -145,7 +145,14 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote public: LLPanelScriptLimitsRegionMemory() - : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), mParcelId(LLUUID()), mGotParcelMemoryUsed(FALSE), mGotParcelMemoryMax(FALSE) {}; + : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),, + + mParcelId(LLUUID()), + mGotParcelMemoryUsed(FALSE), + mGotParcelMemoryMax(FALSE), + mParcelMemoryMax(0), + mParcelMemoryUsed(0) {}; + ~LLPanelScriptLimitsRegionMemory() { LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this); @@ -167,9 +174,9 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote private: - void onNameCache( const LLUUID& id, - const std::string& first_name, - const std::string& last_name); + void onNameCache(const LLUUID& id, + const std::string& first_name, + const std::string& last_name); LLUUID mParcelId; BOOL mGotParcelMemoryUsed; -- GitLab From bc03cbaab906bf8f5d0a624379d30a89018ae9e2 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 17:58:47 -0800 Subject: [PATCH 140/521] CID-393 Checker: UNINIT_CTOR Function: LLPanelScriptLimitsRegionURLs::LLPanelScriptLimitsRegionURLs() File: /indra/newview/llfloaterscriptlimits.h --- indra/newview/llfloaterscriptlimits.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index e0fdf052ebb..748ff28bd9a 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -207,7 +207,16 @@ class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo public: LLPanelScriptLimitsRegionURLs() - : LLPanelScriptLimitsInfo(), mParcelId(LLUUID()), mGotParcelURLsUsed(FALSE), mGotParcelURLsMax(FALSE) {}; + : LLPanelScriptLimitsInfo(), + + mParcelId(LLUUID()), + mGotParcelURLsUsed(FALSE), + mGotParcelURLsMax(FALSE), + mParcelURLsMax(0), + mParcelURLsUsed(0) + { + }; + ~LLPanelScriptLimitsRegionURLs() { }; -- GitLab From 30a2efb142c9f87fb0bea3bf241147e388587918 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 18:05:18 -0800 Subject: [PATCH 141/521] supplementary fix --- indra/newview/llfloaterscriptlimits.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 748ff28bd9a..e675d145156 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -145,7 +145,7 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote public: LLPanelScriptLimitsRegionMemory() - : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),, + : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), mParcelId(LLUUID()), mGotParcelMemoryUsed(FALSE), -- GitLab From fb0ff294e8257bf2054f342413c6f72f6f6f65d7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 18:06:28 -0800 Subject: [PATCH 142/521] CID-392 Checker: UNINIT_CTOR Function: LLNearbyChatToastPanel::LLNearbyChatToastPanel() File: /indra/newview/llchatitemscontainerctrl.h --- indra/newview/llchatitemscontainerctrl.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h index f4b86550541..4d730573d96 100644 --- a/indra/newview/llchatitemscontainerctrl.h +++ b/indra/newview/llchatitemscontainerctrl.h @@ -1,5 +1,5 @@ /** - * @file llchatitemscontainer.h + * @file llchatitemscontainerctrl.h * @brief chat history scrolling panel implementation * * $LicenseInfo:firstyear=2004&license=viewergpl$ @@ -30,12 +30,12 @@ * $/LicenseInfo$ */ -#ifndef LL_LLCHATITEMSCONTAINER_H_ -#define LL_LLCHATITEMSCONTAINER_H_ +#ifndef LL_LLCHATITEMSCONTAINERCTRL_H_ +#define LL_LLCHATITEMSCONTAINERCTRL_H_ +#include "llchat.h" #include "llpanel.h" #include "llscrollbar.h" -#include "string" #include "llviewerchat.h" #include "lltoastpanel.h" @@ -49,10 +49,12 @@ typedef enum e_show_item_header class LLNearbyChatToastPanel: public LLToastPanelBase { protected: - LLNearbyChatToastPanel():mIsDirty(false){}; + LLNearbyChatToastPanel() + : + mIsDirty(false), + mSourceType(CHAT_SOURCE_OBJECT) + {}; public: - - ~LLNearbyChatToastPanel(){} static LLNearbyChatToastPanel* createInstance(); -- GitLab From 25057b311c2aa9a79d33184739f2a73de0bd21e4 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 18:12:32 -0800 Subject: [PATCH 143/521] CID-390 Checker: UNINIT_CTOR Function: LLEventInfo::LLEventInfo() File: /indra/newview/lleventinfo.h --- indra/newview/lleventinfo.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/indra/newview/lleventinfo.h b/indra/newview/lleventinfo.h index 493c6599837..4f33a7925a2 100644 --- a/indra/newview/lleventinfo.h +++ b/indra/newview/lleventinfo.h @@ -43,7 +43,15 @@ class LLMessageSystem; class LLEventInfo { public: - LLEventInfo() {} + LLEventInfo() : + mID(0), + mDuration(0), + mUnixTime(0), + mHasCover(FALSE), + mCover(0), + mEventFlags(0), + mSelected(FALSE) + {} void unpack(LLMessageSystem *msg); -- GitLab From a3e7c8c48031bb715277644ef517d1158933d9b2 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 26 Jan 2010 18:17:24 -0800 Subject: [PATCH 144/521] CID-389 Checker: UNINIT_CTOR Function: LLPanelObject::LLPanelObject() File: /indra/newview/llpanelobject.cpp --- indra/newview/llpanelobject.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index d17c287cc75..30221da12a8 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -316,11 +316,14 @@ BOOL LLPanelObject::postBuild() LLPanelObject::LLPanelObject() : LLPanel(), + mComboMaterialItemCount(0), mIsPhysical(FALSE), mIsTemporary(FALSE), mIsPhantom(FALSE), mCastShadows(TRUE), - mSelectedType(MI_BOX) + mSelectedType(MI_BOX), + mSculptTextureRevert(LLUUID::null), + mSculptTypeRevert(0) { } -- GitLab From 86cab299b01081c8c89587fd72d81460318e4ec1 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Tue, 26 Jan 2010 17:33:23 -0800 Subject: [PATCH 145/521] Fix for EXT-4708 (ressing cursor or modifier keys while MoaP has input focus gives an error in the log "WARNING: ll_apr_warn_status: APR: File exists") The attempt to create a directory should no longer be necessary with webkit. This code has been removed. --- indra/newview/llviewermedia.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 98d8780b343..9ced0194a27 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1811,11 +1811,6 @@ void LLViewerMediaImpl::navigateStop() bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask) { bool result = false; - // *NOTE:Mani - if this doesn't exist llmozlib goes crashy in the debug build. - // LLMozlib::init wants to write some files to <exe_dir>/components - std::string debug_init_component_dir( gDirUtilp->getExecutableDir() ); - debug_init_component_dir += "/components"; - LLAPRFile::makeDir(debug_init_component_dir.c_str()); if (mMediaSource) { -- GitLab From 74a362ba1e49f6a2e7ea2a7cbd88abee96af41a3 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 27 Jan 2010 12:32:03 +0200 Subject: [PATCH 146/521] Fixed low bug EXT-4375 - Gestures floater Gear menu: menuitem 'Inspect' duplicates menuitem 'Edit'. --HG-- branch : product-engine --- indra/newview/llfloatergesture.cpp | 3 +-- .../newview/skins/default/xui/en/menu_gesture_gear.xml | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index de65c6f876c..005213fb4ae 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -401,8 +401,7 @@ bool LLFloaterGesture::isActionEnabled(const LLSD& command) } return false; } - else if("copy_uuid" == command_name || "edit_gesture" == command_name - || "inspect" == command_name) + else if("copy_uuid" == command_name || "edit_gesture" == command_name) { return mGestureList->getAllSelected().size() == 1; } diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index d96f3c54940..649f0edff77 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -62,14 +62,4 @@ function="Gesture.EnableAction" parameter="edit_gesture" /> </menu_item_call> - <menu_item_call - label="Inspect" - layout="topleft" - name="inspect"> - <on_click - function="Gesture.Action.ShowPreview" /> - <on_enable - function="Gesture.EnableAction" - parameter="inspect" /> - </menu_item_call> </menu> -- GitLab From a5180babefa3f81de5321a9d6d5148ef1bd8e03a Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Wed, 27 Jan 2010 13:10:31 +0200 Subject: [PATCH 147/521] =?UTF-8?q?EXT-3783=20=E2=80=9CSystem=20messages?= =?UTF-8?q?=20displayed=20in=20nearby=20chat=E2=80=9D,=20added=20missing?= =?UTF-8?q?=20floater=5Fcall=5Finfo.xml;=20avoided=20recreation=20of=20LLC?= =?UTF-8?q?allInfoDialog=20with=20the=20same=20message;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llimview.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index f90a51c3f37..6ac7378c586 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -3239,7 +3239,13 @@ void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args) LLSD payload; payload["msg"] = message; - LLFloaterReg::showInstance("call_info", payload); + LLFloater* inst = LLFloaterReg::findInstance("call_info"); + + // avoid recreate instance with the same message + if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue()) + { + LLFloaterReg::showInstance("call_info", payload); + } } LLHTTPRegistration<LLViewerChatterBoxSessionStartReply> -- GitLab From 8ea2c7a37380162ba2926bd23a01583023884408 Mon Sep 17 00:00:00 2001 From: Paul Guslisty <pguslisty@productengine.com> Date: Wed, 27 Jan 2010 14:16:37 +0200 Subject: [PATCH 148/521] Implemeted normal Sub-Task EXT - 2753 (Implement Avatar icons on IM multifloater tabs) --HG-- branch : product-engine --- indra/llui/llbutton.cpp | 22 +++++- indra/llui/llbutton.h | 20 +++++ indra/llui/lltabcontainer.cpp | 75 +++++++++---------- indra/llui/lltabcontainer.h | 1 + indra/newview/app_settings/settings.xml | 44 +++++++++++ indra/newview/llgroupmgr.cpp | 38 ++++++++++ indra/newview/llgroupmgr.h | 15 ++++ indra/newview/llimfloatercontainer.cpp | 46 ++++++------ indra/newview/llimfloatercontainer.h | 7 +- .../skins/default/xui/en/widgets/button.xml | 4 + 10 files changed, 197 insertions(+), 75 deletions(-) diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 9ce8ce8d55d..4944ed4fe72 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -81,6 +81,10 @@ LLButton::Params::Params() image_pressed_selected("image_pressed_selected"), image_overlay("image_overlay"), image_overlay_alignment("image_overlay_alignment", std::string("center")), + image_left_pad("image_left_pad"), + image_right_pad("image_right_pad"), + image_top_pad("image_top_pad"), + image_bottom_pad("image_bottom_pad"), label_color("label_color"), label_color_selected("label_color_selected"), // requires is_toggle true label_color_disabled("label_color_disabled"), @@ -140,6 +144,10 @@ LLButton::LLButton(const LLButton::Params& p) mImageOverlay(p.image_overlay()), mImageOverlayColor(p.image_overlay_color()), mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)), + mImageOverlayLeftPad(p.image_left_pad), + mImageOverlayRightPad(p.image_right_pad), + mImageOverlayTopPad(p.image_top_pad), + mImageOverlayBottomPad(p.image_bottom_pad), mIsToggle(p.is_toggle), mScaleImage(p.scale_image), mDropShadowedText(p.label_shadow), @@ -763,6 +771,12 @@ void LLButton::draw() center_x++; } + S32 text_width_delta = overlay_width + 1; + // if image paddings set, they should participate in scaling process + S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad; + overlay_width = overlay_width - image_size_delta; + overlay_height = overlay_height - image_size_delta; + // fade out overlay images on disabled buttons LLColor4 overlay_color = mImageOverlayColor.get(); if (!enabled) @@ -774,8 +788,8 @@ void LLButton::draw() switch(mImageOverlayAlignment) { case LLFontGL::LEFT: - text_left += overlay_width + 1; - text_width -= overlay_width + 1; + text_left += overlay_width + mImageOverlayRightPad + 1; + text_width -= text_width_delta; mImageOverlay->draw( mLeftHPad, center_y - (overlay_height / 2), @@ -792,8 +806,8 @@ void LLButton::draw() overlay_color); break; case LLFontGL::RIGHT: - text_right -= overlay_width + 1; - text_width -= overlay_width + 1; + text_right -= overlay_width + mImageOverlayLeftPad+ 1; + text_width -= text_width_delta; mImageOverlay->draw( getRect().getWidth() - mRightHPad - overlay_width, center_y - (overlay_height / 2), diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index cd149e31131..8e5f19602f7 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -106,6 +106,12 @@ class LLButton Optional<S32> pad_left; Optional<S32> pad_bottom; // under text label + //image overlay paddings + Optional<S32> image_left_pad; + Optional<S32> image_right_pad; + Optional<S32> image_top_pad; + Optional<S32> image_bottom_pad; + // callbacks Optional<CommitCallbackParam> click_callback, // alias -> commit_callback mouse_down_callback, @@ -186,6 +192,15 @@ class LLButton void setLeftHPad( S32 pad ) { mLeftHPad = pad; } void setRightHPad( S32 pad ) { mRightHPad = pad; } + void setImageOverlayLeftPad( S32 pad ) { mImageOverlayLeftPad = pad; } + S32 getImageOverlayLeftPad() const { return mImageOverlayLeftPad; } + void setImageOverlayRightPad( S32 pad ) { mImageOverlayRightPad = pad; } + S32 getImageOverlayRightPad() const { return mImageOverlayRightPad; } + void setImageOverlayTopPad( S32 pad ) { mImageOverlayTopPad = pad; } + S32 getImageOverlayTopPad() const { return mImageOverlayTopPad; } + void setImageOverlayBottomPad( S32 pad ) { mImageOverlayBottomPad = pad; } + S32 getImageOverlayBottomPad() const { return mImageOverlayBottomPad; } + const std::string getLabelUnselected() const { return wstring_to_utf8str(mUnselectedLabel); } const std::string getLabelSelected() const { return wstring_to_utf8str(mSelectedLabel); } @@ -313,6 +328,11 @@ class LLButton S32 mRightHPad; S32 mBottomVPad; // under text label + S32 mImageOverlayLeftPad; + S32 mImageOverlayRightPad; + S32 mImageOverlayTopPad; + S32 mImageOverlayBottomPad; + F32 mHoverGlowStrength; F32 mCurGlowStrength; diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 43c44f2253e..dcb3542e186 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1373,6 +1373,8 @@ BOOL LLTabContainer::setTab(S32 which) { LLTabTuple* tuple = *iter; BOOL is_selected = ( tuple == selected_tuple ); + tuple->mButton->setUseEllipses(TRUE); + tuple->mButton->setHAlign(LLFontGL::LEFT); tuple->mTabPanel->setVisible( is_selected ); // tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here. tuple->mButton->setToggleState( is_selected ); @@ -1478,63 +1480,54 @@ void LLTabContainer::setTabPanelFlashing(LLPanel* child, BOOL state ) void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const LLColor4& color) { - static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); LLTabTuple* tuple = getTabByPanel(child); if( tuple ) { - tuple->mButton->setImageOverlay(image_name, LLFontGL::RIGHT, color); - - if (!mIsVertical) - { - // remove current width from total tab strip width - mTotalTabWidth -= tuple->mButton->getRect().getWidth(); - - S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? - tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : - 0; - - tuple->mPadding = image_overlay_width; - - tuple->mButton->setRightHPad(6); - tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), - tuple->mButton->getRect().getHeight()); - // add back in button width to total tab strip width - mTotalTabWidth += tuple->mButton->getRect().getWidth(); - - // tabs have changed size, might need to scroll to see current tab - updateMaxScrollPos(); - } + tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color); + reshape_tuple(tuple); } } void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const LLColor4& color) { - static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); LLTabTuple* tuple = getTabByPanel(child); if( tuple ) { - tuple->mButton->setImageOverlay(image_id, LLFontGL::RIGHT, color); + tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color); + reshape_tuple(tuple); + } +} - if (!mIsVertical) - { - // remove current width from total tab strip width - mTotalTabWidth -= tuple->mButton->getRect().getWidth(); +void LLTabContainer::reshape_tuple(LLTabTuple* tuple) +{ + static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); + static LLUICachedControl<S32> image_left_padding ("UIButtonImageLeftPadding", 4); + static LLUICachedControl<S32> image_right_padding ("UIButtonImageRightPadding", 4); + static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2); + static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2); - S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? - tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : - 0; + if (!mIsVertical) + { + tuple->mButton->setImageOverlayLeftPad(image_left_padding); + tuple->mButton->setImageOverlayRightPad(image_right_padding); + tuple->mButton->setImageOverlayTopPad(image_top_padding); + tuple->mButton->setImageOverlayBottomPad(image_bottom_padding); - tuple->mPadding = image_overlay_width; + // remove current width from total tab strip width + mTotalTabWidth -= tuple->mButton->getRect().getWidth(); - tuple->mButton->setRightHPad(6); - tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), - tuple->mButton->getRect().getHeight()); - // add back in button width to total tab strip width - mTotalTabWidth += tuple->mButton->getRect().getWidth(); + S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? + tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0; - // tabs have changed size, might need to scroll to see current tab - updateMaxScrollPos(); - } + tuple->mPadding = image_overlay_width; + + tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), + tuple->mButton->getRect().getHeight()); + // add back in button width to total tab strip width + mTotalTabWidth += tuple->mButton->getRect().getWidth(); + + // tabs have changed size, might need to scroll to see current tab + updateMaxScrollPos(); } } diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 33c49e0d6fa..2a55877d3ca 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -228,6 +228,7 @@ class LLTabContainer : public LLPanel // updates tab button images given the tuple, tab position and the corresponding params void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos); + void reshape_tuple(LLTabTuple* tuple); // Variables diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 093e4f48940..1ef79aeec09 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9915,6 +9915,50 @@ <string>S32</string> <key>Value</key> <integer>15</integer> + </map> + <key>UIButtonImageLeftPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Left Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>4</integer> + </map> + <key>UIButtonImageRightPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Right Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>4</integer> + </map> + <key>UIButtonImageTopPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Top Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>2</integer> + </map> + <key>UIButtonImageBottomPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Bottom Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>2</integer> </map> <key>UploadBakedTexOld</key> <map> diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index af58e81ca4d..8bd0e520c35 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -762,6 +762,14 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer) mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer)); } +void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +{ + if(group_id.notNull() && observer) + { + mParticularObservers[group_id].insert(observer); + } +} + void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) { if (!observer) @@ -784,6 +792,23 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) } } +void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +{ + if(group_id.isNull() || !observer) + { + return; + } + + observer_map_t::iterator obs_it = mParticularObservers.find(group_id); + if(obs_it == mParticularObservers.end()) + return; + + obs_it->second.erase(observer); + + if (obs_it->second.size() == 0) + mParticularObservers.erase(obs_it); +} + LLGroupMgrGroupData* LLGroupMgr::getGroupData(const LLUUID& id) { group_map_t::iterator gi = mGroups.find(id); @@ -1325,6 +1350,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) LLUUID group_id = gi->first; if (gi->second->mChanged) { + // notify LLGroupMgrObserver // Copy the map because observers may remove themselves on update observer_multimap_t observers = mObservers; @@ -1336,6 +1362,18 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) oi->second->changed(gc); } gi->second->mChanged = FALSE; + + + // notify LLParticularGroupMgrObserver + observer_map_t::iterator obs_it = mParticularObservers.find(group_id); + if(obs_it == mParticularObservers.end()) + return; + + observer_set_t& obs = obs_it->second; + for (observer_set_t::iterator ob_it = obs.begin(); ob_it != obs.end(); ++ob_it) + { + (*ob_it)->changed(group_id, gc); + } } } } diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 487fdd4c5b4..588b4a90344 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -53,6 +53,13 @@ class LLGroupMgrObserver LLUUID mID; }; +class LLParticularGroupMgrObserver +{ +public: + virtual ~LLParticularGroupMgrObserver(){} + virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0; +}; + class LLGroupRoleData; class LLGroupMemberData @@ -306,7 +313,9 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr> ~LLGroupMgr(); void addObserver(LLGroupMgrObserver* observer); + void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); void removeObserver(LLGroupMgrObserver* observer); + void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); LLGroupMgrGroupData* getGroupData(const LLUUID& id); void sendGroupPropertiesRequest(const LLUUID& group_id); @@ -355,13 +364,19 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr> private: void notifyObservers(LLGroupChange gc); + void notifyObserver(const LLUUID& group_id, LLGroupChange gc); void addGroup(LLGroupMgrGroupData* group_datap); LLGroupMgrGroupData* createGroupData(const LLUUID &id); typedef std::multimap<LLUUID,LLGroupMgrObserver*> observer_multimap_t; observer_multimap_t mObservers; + typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t; group_map_t mGroups; + + typedef std::set<LLParticularGroupMgrObserver*> observer_set_t; + typedef std::map<LLUUID,observer_set_t> observer_map_t; + observer_map_t mParticularObservers; }; diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 06a7b4a29c2..784c2eaaf96 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -48,10 +48,7 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed) mAutoResize = FALSE; } -LLIMFloaterContainer::~LLIMFloaterContainer() -{ - LLGroupMgr::getInstance()->removeObserver(this); -} +LLIMFloaterContainer::~LLIMFloaterContainer(){} BOOL LLIMFloaterContainer::postBuild() { @@ -95,11 +92,10 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, if(gAgent.isInGroup(session_id)) { mSessions[session_id] = floaterp; - mID = session_id; - mGroupID.push_back(session_id); LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id); LLGroupMgr* gm = LLGroupMgr::getInstance(); - gm->addObserver(this); + gm->addObserver(session_id, this); + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); if (group_data && group_data->mInsigniaID.notNull()) { @@ -107,6 +103,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, } else { + mTabContainer->setTabImage(floaterp, "Generic_Group"); gm->sendGroupPropertiesRequest(session_id); } } @@ -119,13 +116,14 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, mSessions[avatar_id] = floaterp; LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id); - if(!icon_id_ptr) + if(icon_id_ptr && icon_id_ptr->notNull()) { - app.sendAvatarPropertiesRequest(avatar_id); + mTabContainer->setTabImage(floaterp, *icon_id_ptr); } else { - mTabContainer->setTabImage(floaterp, *icon_id_ptr); + mTabContainer->setTabImage(floaterp, "Generic_Person"); + app.sendAvatarPropertiesRequest(avatar_id); } } } @@ -134,31 +132,28 @@ void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorTy { if (APT_PROPERTIES == type) { - LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); - if (avatar_data) + LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); + if (avatar_data) + { + LLUUID avatar_id = avatar_data->avatar_id; + LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id); + if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId) { - LLUUID avatar_id = avatar_data->avatar_id; - if(avatar_data->image_id != *LLAvatarIconIDCache::getInstance()->get(avatar_id)) - { - LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id); - } + LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id); mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id); } + } } } -void LLIMFloaterContainer::changed(LLGroupChange gc) +void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc) { if (GC_PROPERTIES == gc) { - for(groupIDs_t::iterator it = mGroupID.begin(); it!=mGroupID.end(); it++) + LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); + if (group_data && group_data->mInsigniaID.notNull()) { - LLUUID group_id = *it; - LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); - if (group_data && group_data->mInsigniaID.notNull()) - { - mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID); - } + mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID); } } } @@ -166,6 +161,7 @@ void LLIMFloaterContainer::changed(LLGroupChange gc) void LLIMFloaterContainer::onCloseFloater(LLUUID id) { LLAvatarPropertiesProcessor::instance().removeObserver(id, this); + LLGroupMgr::instance().removeObserver(id, this); } LLIMFloaterContainer* LLIMFloaterContainer::findInstance() diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index 1333b098bc2..e4a32dbe1dc 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -43,7 +43,7 @@ class LLTabContainer; -class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLGroupMgrObserver +class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver { public: LLIMFloaterContainer(const LLSD& seed); @@ -57,7 +57,7 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END); void processProperties(void* data, EAvatarProcessorType type); - void changed(LLGroupChange gc); + void changed(const LLUUID& group_id, LLGroupChange gc); static LLFloater* getCurrentVoiceFloater(); @@ -69,9 +69,6 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t; avatarID_panel_map_t mSessions; - typedef std::vector<LLUUID> groupIDs_t; - groupIDs_t mGroupID; - void onCloseFloater(LLUUID avatar_id); }; diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 51f85e65e2b..74d84785513 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -7,6 +7,10 @@ image_selected="PushButton_Selected" image_disabled_selected="PushButton_Selected_Disabled" image_disabled="PushButton_Disabled" + image_left_pad="0" + image_right_pad="0" + image_top_pad="0" + image_bottom_pad="0" label_color="ButtonLabelColor" label_color_selected="ButtonLabelSelectedColor" label_color_disabled="ButtonLabelDisabledColor" -- GitLab From 684cfb722e433c7625c7c945aca05e0154915c8f Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 27 Jan 2010 14:06:44 +0200 Subject: [PATCH 149/521] Work on critical bug EXT-4725 (Viewer crashes if try to call from 'Nearby voice' floater) - reverted workaround implemented in the d1e9333a6203 changeset. Bug will be fixed in the correct way. --HG-- branch : product-engine --- indra/newview/llparticipantlist.cpp | 6 ------ .../newview/skins/default/xui/en/menu_participant_list.xml | 3 +++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index d54cbfe2031..f83f3eba968 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -433,12 +433,6 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu() LLContextMenu* main_menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>( "menu_participant_list.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance()); - // AD *TODO: This is workaround for EXT-4725- way to properly enable/disable "Call" menu item in - // enableContextMenuItem() should be found. - bool not_agent = mUUIDs.front() != gAgentID; - bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); - main_menu->setItemEnabled("Call", can_call); - // Don't show sort options for P2P chat bool is_sort_visible = (mParent.mAvatarList && mParent.mAvatarList->size() > 1); main_menu->setItemVisible("SortByName", is_sort_visible); diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 04e02d0f6cc..805ffbae668 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -57,6 +57,9 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> + <menu_item_call.on_enable + function="ParticipantList.EnableItem" + parameter="can_call" /> </menu_item_call> <menu_item_call enabled="true" -- GitLab From b68ccadd46d2ff094147ffd72318fd3a728c28eb Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 27 Jan 2010 14:24:37 +0200 Subject: [PATCH 150/521] Fixed critical bug EXT-4725 (Viewer crashes if try to call from 'Nearby voice' floater) - reason: LLContextMenu was not not deleted when LLPanelPeopleMenus::ContextMenu was destroyed. Associated callbacks were called by Menu Holder for last selected menu_item_call for destroyed LLParticipantList::LLParticipantListMenu - fix: added destruction of LLContextMenu when LLPanelPeopleMenus::ContextMenu is destructed. --HG-- branch : product-engine --- indra/newview/llpanelpeoplemenus.cpp | 9 +++++++++ indra/newview/llpanelpeoplemenus.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index d9651a60450..501dac5dff4 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -55,6 +55,15 @@ ContextMenu::ContextMenu() { } +ContextMenu::~ContextMenu() +{ + // do not forget delete LLContextMenu* mMenu. + // It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw() + // via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel. + // we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725 + if (mMenu) mMenu->die(); +} + void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) { if (mMenu) diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 14ae2985f02..7251f6dbbdb 100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -45,7 +45,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu { public: ContextMenu(); - virtual ~ContextMenu() {} + virtual ~ContextMenu(); /** * Show the menu at specified coordinates. -- GitLab From 313e3c92c7f348e0c6856183955e2f34fefa1b0a Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Wed, 27 Jan 2010 14:52:58 +0200 Subject: [PATCH 151/521] fixed EXT-4667 color and texture eyedrop selectors do not work in appearance mode --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_color_picker.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index fbecebc363d..0daef29bc57 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -181,7 +181,7 @@ image_unselected="eye_button_inactive.tga" layout="topleft" left_pad="50" - name="Pipette" + name="color_pipette" width="28" /> <button follows="right|bottom" -- GitLab From aea3d79be74210d537cb9f9afc54a4f2e240bc99 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 27 Jan 2010 15:31:22 +0200 Subject: [PATCH 152/521] Fixed low bug EXT-4381 - No visual difference between active and inactive gestures. --HG-- branch : product-engine --- indra/newview/llfloatergesture.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index 005213fb4ae..b684e1f9855 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -367,7 +367,14 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur element["columns"][3]["font"]["name"] = "SANSSERIF"; element["columns"][3]["font"]["style"] = font_style; } - list->addElement(element, ADD_BOTTOM); + + LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM); + if(sl_item) + { + LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL; + // *TODO find out why ["font"]["style"] does not affect font style + ((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style); + } } void LLFloaterGesture::getSelectedIds(std::vector<LLUUID>& ids) -- GitLab From 837f6c7cbefa7ac1c64c9506d2fabd640ae652ec Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 27 Jan 2010 17:29:44 +0200 Subject: [PATCH 153/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- Implemented storage to save favorite landmarks order in local file. -- Previously implemented solution to store sort index in Landmark's name replaced with using the storage. For now all landmarks are shown as is (with sort LM prefix if it exists). -- Some deprecated methods are marked to be removed later -- Reverted fixes for: EXT-4306, EXT-1237, EXT-1615 as not necessary, these bugs should be verified again. --HG-- branch : product-engine --- indra/newview/llpanelgroupnotices.cpp | 2 +- indra/newview/llpanellandmarkinfo.cpp | 1 - indra/newview/lltoastgroupnotifypanel.cpp | 12 +- indra/newview/llviewerinventory.cpp | 142 +++++++++++++++++----- indra/newview/llviewerinventory.h | 1 - indra/newview/llviewermessage.cpp | 30 ----- 6 files changed, 114 insertions(+), 74 deletions(-) diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 45fc3d46882..6210973dae2 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -614,7 +614,7 @@ void LLPanelGroupNotices::showNotice(const std::string& subject, mViewInventoryIcon->setVisible(TRUE); std::stringstream ss; - ss << " " << LLViewerInventoryItem::getDisplayName(inventory_name); + ss << " " << inventory_name; mViewInventoryName->setText(ss.str()); mBtnOpenAttachment->setEnabled(TRUE); diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index c792fd4fe3a..c75fc390893 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -367,7 +367,6 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id) } LLStringUtil::replaceChar(desc, '\n', ' '); - LLViewerInventoryItem::insertDefaultSortField(name); // If no folder chosen use the "Landmarks" folder. LLLandmarkActions::createLandmarkHere(name, desc, diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index e49044cdca3..add61c00cfd 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -127,17 +127,7 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification pAttachLink->setVisible(hasInventory); pAttachIcon->setVisible(hasInventory); if (hasInventory) { - std::string dis_name; - std::string inv_name = payload["inventory_name"]; - - if (LLViewerInventoryItem::extractSortFieldAndDisplayName(inv_name, NULL, &dis_name)) - { - pAttachLink->setValue(dis_name); - } - else - { - pAttachLink->setValue(inv_name); - } + pAttachLink->setValue(payload["inventory_name"]); mInventoryOffer = new LLOfferInfo(payload["inventory_offer"]); childSetActionTextbox("attachment", boost::bind( diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index b330c1ba83c..f7529dd553f 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -34,6 +34,7 @@ #include "llviewerinventory.h" #include "llnotificationsutil.h" +#include "llsdserialize.h" #include "message.h" #include "indra_constants.h" @@ -1174,17 +1175,125 @@ const std::string& LLViewerInventoryItem::getName() const return getDisplayName(); } +/** + * Class to store sorting order of favorites landmarks in a local file. EXT-3985. + * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix. + */ +class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> +{ +public: + /** + * Sets sort index for specified with LLUUID favorite landmark + */ + void setSortIndex(const LLUUID& inv_item_id, S32 sort_index); + + /** + * Gets sort index for specified with LLUUID favorite landmark + */ + S32 getSortIndex(const LLUUID& inv_item_id); + void removeSortIndex(const LLUUID& inv_item_id); + + const static S32 NO_INDEX; +private: + friend class LLSingleton<LLFavoritesOrderStorage>; + LLFavoritesOrderStorage() { load(); } + ~LLFavoritesOrderStorage() { save(); } + + const static std::string SORTING_DATA_FILE_NAME; + + void load(); + void save(); + + typedef std::map<LLUUID, S32> sort_index_map_t; + sort_index_map_t mSortIndexes; +}; + +const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml"; +const S32 LLFavoritesOrderStorage::NO_INDEX = -1; + +void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index) +{ + mSortIndexes[inv_item_id] = sort_index; +} + +S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id) +{ + sort_index_map_t::const_iterator it = mSortIndexes.find(inv_item_id); + if (it != mSortIndexes.end()) + { + return it->second; + } + return NO_INDEX; +} + +void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id) +{ + mSortIndexes.erase(inv_item_id); +} + +void LLFavoritesOrderStorage::load() +{ + // load per-resident sorting information + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); + + LLSD settings_llsd; + llifstream file; + file.open(filename); + if (file.is_open()) + { + LLSDSerialize::fromXML(settings_llsd, file); + } + + for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); + iter != settings_llsd.endMap(); ++iter) + { + mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); + } +} + +void LLFavoritesOrderStorage::save() +{ + // If we quit from the login screen we will not have an SL account + // name. Don't try to save, otherwise we'll dump a file in + // C:\Program Files\SecondLife\ or similar. JC + std::string user_dir = gDirUtilp->getLindenUserDir(); + if (!user_dir.empty()) + { + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); + LLSD settings_llsd; + + for(sort_index_map_t::const_iterator iter = mSortIndexes.begin(); iter != mSortIndexes.end(); ++iter) + { + settings_llsd[iter->first.asString()] = iter->second; + } + + llofstream file; + file.open(filename); + LLSDSerialize::toPrettyXML(settings_llsd, file); + } +} + + + +// *TODO: mantipov: REMOVE, EXT-3985 const std::string& LLViewerInventoryItem::getDisplayName() const { + return LLInventoryItem::getName(); +/* std::string result; BOOL hasSortField = extractSortFieldAndDisplayName(0, &result); + mDisplayName = LLInventoryItem::getName(); + return mDisplayName = hasSortField ? result : LLInventoryItem::getName(); +*/ } +// *TODO: mantipov: REMOVE, EXT-3985 // static std::string LLViewerInventoryItem::getDisplayName(const std::string& name) { + llassert(false); std::string result; BOOL hasSortField = extractSortFieldAndDisplayName(name, 0, &result); @@ -1193,34 +1302,12 @@ std::string LLViewerInventoryItem::getDisplayName(const std::string& name) S32 LLViewerInventoryItem::getSortField() const { - S32 result; - BOOL hasSortField = extractSortFieldAndDisplayName(&result, 0); - - return hasSortField ? result : -1; + return LLFavoritesOrderStorage::instance().getSortIndex(mUUID); } void LLViewerInventoryItem::setSortField(S32 sortField) { - using std::string; - - std::stringstream ss; - ss << sortField; - - string newSortField = ss.str(); - - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); - - if (separatorPos < string::npos) - { - // the name of the LLViewerInventoryItem already consists of sort field and display name. - mName = newSortField + separator + mName.substr(separatorPos + 1, string::npos); - } - else - { - // there is no sort field in the name of LLViewerInventoryItem, we should add it - mName = newSortField + separator + mName; - } + LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField); } void LLViewerInventoryItem::rename(const std::string& n) @@ -1334,6 +1421,7 @@ U32 LLViewerInventoryItem::getCRC32() const return LLInventoryItem::getCRC32(); } +// *TODO: mantipov: REMOVE, EXT-3985 BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName) { using std::string; @@ -1369,12 +1457,6 @@ BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& na return result; } -void LLViewerInventoryItem::insertDefaultSortField(std::string& name) -{ - name.insert(0, std::string("1") + getSeparator()); -} - - // This returns true if the item that this item points to // doesn't exist in memory (i.e. LLInventoryModel). The baseitem // might still be in the database but just not loaded yet. diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 7f3f019b070..cf104503a86 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -82,7 +82,6 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr virtual U32 getCRC32() const; // really more of a checksum. static BOOL extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName); - static void insertDefaultSortField(std::string& name); // construct a complete viewer inventory item LLViewerInventoryItem(const LLUUID& uuid, const LLUUID& parent_uuid, diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d6ce356c4b0..96dd063a7ce 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1434,31 +1434,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const return false; } -std::string get_display_name(const std::string& name) -{ - // We receive landmark name as \'<n>@name\' where <n> is a number - // LLViewerInventoryItem::getDisplayName will remove \'<n>@ though we need the \' - // Lets save all chars preceding @ and insert them back after <n>@ was removed - - std::string saved; - - if(std::string::npos != name.find(LLViewerInventoryItem::getSeparator())) - { - int n = 0; - while(!isdigit(name[n]) && LLViewerInventoryItem::getSeparator() != name[n]) - { - ++n; - } - saved = name.substr(0, n); - } - - std::string d_name = LLViewerInventoryItem::getDisplayName(name); - d_name.insert(0, saved); - LLStringUtil::trim(d_name); - - return d_name; -} - void inventory_offer_handler(LLOfferInfo* info) { //Until throttling is implmented, busy mode should reject inventory instead of silently @@ -1496,11 +1471,6 @@ void inventory_offer_handler(LLOfferInfo* info) LLStringUtil::truncate(msg, indx); } - if(LLAssetType::AT_LANDMARK == info->mType) - { - msg = get_display_name(msg); - } - LLSD args; args["[OBJECTNAME]"] = msg; -- GitLab From 4b9abb162cd7b4cfca3c98a0611cb2272d336476 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Wed, 27 Jan 2010 18:05:46 +0200 Subject: [PATCH 154/521] fixed minor bug EXT-3941 Quick clicks on chiclets are treated as double clicks Handling of mouseDown event was delegated to chiclet's button. Also double callback was connected with onMouseDown handler to ride from missed click behavior. --HG-- branch : product-engine --- indra/newview/llchiclet.cpp | 26 ++++++++------------------ indra/newview/llchiclet.h | 17 ++++------------- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index f1de4e29824..f646bcccb58 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -459,6 +459,14 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p) enableCounterControl(p.enable_counter); } +/* virtual*/ +BOOL LLIMChiclet::postBuild() +{ + mChicletButton = getChild<LLButton>("chiclet_button"); + mChicletButton->setCommitCallback(boost::bind(&LLIMChiclet::onMouseDown, this)); + mChicletButton->setDoubleClickCallback(boost::bind(&LLIMChiclet::onMouseDown, this)); + return TRUE; +} void LLIMChiclet::setShowSpeaker(bool show) { bool needs_resize = getShowSpeaker() != show; @@ -583,12 +591,6 @@ void LLIMChiclet::setToggleState(bool toggle) mChicletButton->setToggleState(toggle); } -BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - void LLIMChiclet::draw() { LLUICtrl::draw(); @@ -1905,12 +1907,6 @@ void LLScriptChiclet::onMouseDown() LLScriptFloaterManager::getInstance()->toggleScriptFloater(getSessionId()); } -BOOL LLScriptChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -1975,10 +1971,4 @@ void LLInvOfferChiclet::onMouseDown() LLScriptFloaterManager::instance().toggleScriptFloater(getSessionId()); } -BOOL LLInvOfferChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - // EOF diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index bb4846aa575..b006ae34207 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -327,6 +327,10 @@ class LLIMChiclet : public LLChiclet virtual ~LLIMChiclet() {}; + /** + * It is used for default setting up of chicklet:click handler, etc. + */ + BOOL postBuild(); /** * Sets IM session name. This name will be displayed in chiclet tooltip. */ @@ -428,8 +432,6 @@ class LLIMChiclet : public LLChiclet LLIMChiclet(const LLIMChiclet::Params& p); - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: bool mShowSpeaker; @@ -640,11 +642,6 @@ class LLScriptChiclet : public LLIMChiclet */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: LLScriptChiclet(const Params&); @@ -684,12 +681,6 @@ class LLInvOfferChiclet: public LLIMChiclet */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - - protected: LLInvOfferChiclet(const Params&); friend class LLUICtrlFactory; -- GitLab From b23a5dda5a730b1d0196d171dc5005e03b2328d4 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Wed, 27 Jan 2010 18:19:52 +0200 Subject: [PATCH 155/521] Fixed low bug EXT-4647 ("Leaving nearby voice ..." appears when you're not connected to nearby voice channel). - Added flag to check whether to show "Leaving ...". It is false only if voice in parcel is disabled and channel we leave is nearby. --HG-- branch : product-engine --- indra/newview/llimview.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 6ac7378c586..c4b1d7a9f4b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -66,6 +66,7 @@ #include "llspeakers.h" //for LLIMSpeakerMgr #include "lltextutil.h" #include "llviewercontrol.h" +#include "llviewerparcelmgr.h" const static std::string IM_TIME("time"); @@ -1601,6 +1602,9 @@ void LLOutgoingCallDialog::show(const LLSD& key) { mPayload = key; + //will be false only if voice in parcel is disabled and channel we leave is nearby(checked further) + bool show_oldchannel = LLViewerParcelMgr::getInstance()->allowAgentVoice(); + // hide all text at first hideAllText(); @@ -1624,10 +1628,11 @@ void LLOutgoingCallDialog::show(const LLSD& key) } childSetTextArg("leaving", "[CURRENT_CHAT]", old_caller_name); + show_oldchannel = true; } else { - childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat")); + childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat")); } if (!mPayload["disconnected_channel_name"].asString().empty()) @@ -1672,10 +1677,16 @@ void LLOutgoingCallDialog::show(const LLSD& key) { case LLVoiceChannel::STATE_CALL_STARTED : getChild<LLTextBox>("calling")->setVisible(true); - getChild<LLTextBox>("leaving")->setVisible(true); + if(show_oldchannel) + { + getChild<LLTextBox>("leaving")->setVisible(true); + } break; case LLVoiceChannel::STATE_RINGING : - getChild<LLTextBox>("leaving")->setVisible(true); + if(show_oldchannel) + { + getChild<LLTextBox>("leaving")->setVisible(true); + } getChild<LLTextBox>("connecting")->setVisible(true); break; case LLVoiceChannel::STATE_ERROR : -- GitLab From b3763f1ec1e20226bf489042346c5827d187ba42 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 27 Jan 2010 18:40:19 +0200 Subject: [PATCH 156/521] Cleaned up including of the "llviewerinventory.h" --HG-- branch : product-engine --- indra/newview/llappearancemgr.h | 2 +- indra/newview/llfloaterbulkpermission.cpp | 1 + indra/newview/llfloaterbulkpermission.h | 2 -- indra/newview/llfolderviewitem.cpp | 1 - indra/newview/llinventoryfilter.cpp | 1 - indra/newview/llinventoryfunctions.cpp | 1 - indra/newview/llpanelcontents.cpp | 2 +- indra/newview/llpanelteleporthistory.cpp | 1 - indra/newview/llsidepanelinventorysubpanel.cpp | 1 - indra/newview/llwearablelist.cpp | 1 - 10 files changed, 3 insertions(+), 10 deletions(-) diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index dd50b482cf3..38d1e01d085 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -35,11 +35,11 @@ #include "llsingleton.h" #include "llinventorymodel.h" -#include "llviewerinventory.h" #include "llcallbacklist.h" class LLWearable; class LLWearableHoldingPattern; +class LLInventoryCallback; class LLAppearanceManager: public LLSingleton<LLAppearanceManager> { diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 5c3a54e34bb..b2f700069f9 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -43,6 +43,7 @@ #include "llviewerregion.h" #include "lscript_rt_interface.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewerobject.h" #include "llviewerregion.h" #include "llresmgr.h" diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index 31f4f5c3e16..bffcff7059a 100644 --- a/indra/newview/llfloaterbulkpermission.h +++ b/indra/newview/llfloaterbulkpermission.h @@ -44,8 +44,6 @@ #include "llfloater.h" #include "llscrolllistctrl.h" -#include "llviewerinventory.h" - class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener { friend class LLFloaterReg; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 4b48626b22a..b05eb84e521 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -40,7 +40,6 @@ #include "llinventoryfilter.h" #include "llpanel.h" #include "llviewercontrol.h" // gSavedSettings -#include "llviewerinventory.h" #include "llviewerwindow.h" // Argh, only for setCursor() // linden library includes diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index b4dcb566e48..cd20d64ca8e 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -39,7 +39,6 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" // gInventory.backgroundFetchActive() #include "llviewercontrol.h" -#include "llviewerinventory.h" #include "llfolderview.h" // linden library includes diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 2885ba13fae..33623539e96 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -76,7 +76,6 @@ #include "lltabcontainer.h" #include "lltooldraganddrop.h" #include "lluictrlfactory.h" -#include "llviewerinventory.h" #include "llviewermessage.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 9d591ef43d1..2a7d097f942 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -50,7 +50,6 @@ // project includes #include "llagent.h" -#include "llfloaterbulkpermission.h" #include "llpanelobjectinventory.h" #include "llpreviewscript.h" #include "llresmgr.h" @@ -60,6 +59,7 @@ #include "lltoolmgr.h" #include "lltrans.h" #include "llviewerassettype.h" +#include "llviewerinventory.h" #include "llviewerobject.h" #include "llviewerregion.h" #include "llviewerwindow.h" diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 1b8fb496418..954f3995c1d 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -46,7 +46,6 @@ #include "llnotificationsutil.h" #include "lltextbox.h" #include "llviewermenu.h" -#include "llviewerinventory.h" #include "lllandmarkactions.h" #include "llclipboard.h" diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp index 56e342c3cea..f51462dcce8 100644 --- a/indra/newview/llsidepanelinventorysubpanel.cpp +++ b/indra/newview/llsidepanelinventorysubpanel.cpp @@ -44,7 +44,6 @@ #include "lllineeditor.h" #include "llradiogroup.h" #include "llviewercontrol.h" -#include "llviewerinventory.h" #include "llviewerobjectlist.h" diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 56362568569..d6a9837b860 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -38,7 +38,6 @@ #include "llassetstorage.h" #include "llagent.h" #include "llvoavatar.h" -#include "llviewerinventory.h" #include "llviewerstats.h" #include "llnotificationsutil.h" #include "llinventorymodel.h" -- GitLab From a904e887bdee8656694551697e860a06bbfe9b6c Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Wed, 27 Jan 2010 19:00:12 +0200 Subject: [PATCH 157/521] Fixed normal bug (EXT-4700) Creating a landmark brings up the Landmark sidepanel info twice. - Disabled "Close" and "Back" buttons to prevent closing "Create Landmark" panel until created landmark is loaded. --HG-- branch : product-engine --- indra/newview/llpanelplaces.cpp | 26 ++++++++++++++++++-------- indra/newview/llpanelplaces.h | 2 ++ indra/newview/llviewermessage.cpp | 5 +++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 7272a8a652c..29cfbbe606d 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -272,11 +272,11 @@ BOOL LLPanelPlaces::postBuild() if (!mPlaceProfile || !mLandmarkInfo) return FALSE; - LLButton* back_btn = mPlaceProfile->getChild<LLButton>("back_btn"); - back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); + mPlaceProfileBackBtn = mPlaceProfile->getChild<LLButton>("back_btn"); + mPlaceProfileBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); - back_btn = mLandmarkInfo->getChild<LLButton>("back_btn"); - back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); + mLandmarkInfoBackBtn = mLandmarkInfo->getChild<LLButton>("back_btn"); + mLandmarkInfoBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); LLLineEditor* title_editor = mLandmarkInfo->getChild<LLLineEditor>("title_editor"); title_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this), NULL); @@ -327,9 +327,12 @@ void LLPanelPlaces::onOpen(const LLSD& key) mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); - // Disable Save button because there is no item to save yet. - // The button will be enabled in onLandmarkLoaded callback. + // Disabling "Save", "Close" and "Back" buttons to prevent closing "Create Landmark" + // panel before created landmark is loaded. + // These buttons will be enabled when created landmark is added to inventory. mSaveBtn->setEnabled(FALSE); + mCloseBtn->setEnabled(FALSE); + mLandmarkInfoBackBtn->setEnabled(FALSE); } else if (mPlaceInfoType == LANDMARK_INFO_TYPE) { @@ -437,6 +440,8 @@ void LLPanelPlaces::setItem(LLInventoryItem* item) mEditBtn->setEnabled(is_landmark_editable); mSaveBtn->setEnabled(is_landmark_editable); + mCloseBtn->setEnabled(TRUE); + mLandmarkInfoBackBtn->setEnabled(TRUE); if (is_landmark_editable) { @@ -488,8 +493,6 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) landmark->getGlobalPos(mPosGlobal); mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); - mSaveBtn->setEnabled(TRUE); - updateVerbs(); } @@ -1030,6 +1033,13 @@ void LLPanelPlaces::updateVerbs() { mTeleportBtn->setEnabled(have_3d_pos); } + + // Do not enable landmark info Back button when we are waiting + // for newly created landmark to load. + if (!is_create_landmark_visible) + { + mLandmarkInfoBackBtn->setEnabled(TRUE); + } } else { diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index a0989746599..5de78b15951 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -115,6 +115,8 @@ class LLPanelPlaces : public LLPanel LLToggleableMenu* mPlaceMenu; LLToggleableMenu* mLandmarkMenu; + LLButton* mPlaceProfileBackBtn; + LLButton* mLandmarkInfoBackBtn; LLButton* mTeleportBtn; LLButton* mShowOnMapBtn; LLButton* mEditBtn; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d6ce356c4b0..36710e7532e 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -906,7 +906,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f if ("inventory_handler" == from_name) { //we have to filter inventory_handler messages to avoid notification displaying - LLSideTray::getInstance()->showPanel("panel_places", + LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "landmark").with("id", item->getUUID())); } else if("group_offer" == from_name) @@ -925,8 +925,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unknown"); LLNotificationsUtil::add("LandmarkCreated", args); // Created landmark is passed to Places panel to allow its editing. In fact panel should be already displayed. + // If the panel is closed we don't reopen it until created landmark is loaded. //TODO*:: dserduk(7/12/09) remove LLPanelPlaces dependency from here - LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->showPanel("panel_places", LLSD())); + LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places")); if (places_panel) { // we are creating a landmark -- GitLab From f5344270f24702711df67f02160b9225d269669b Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Wed, 27 Jan 2010 21:18:13 +0200 Subject: [PATCH 158/521] Fixed normal bug (EXT-4592) Negative 'new balance' value in Buy L$ floater - Restricted currency purchase amount to a 10 digit number. --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_buy_currency.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 8f67f564a26..703a02d9952 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -114,6 +114,7 @@ </text> <line_editor type="string" + max_length="10" halign="right" font="SansSerifMedium" select_on_focus="true" -- GitLab From 4cad6333ab447713e96fb14a278e529f5bc4f2a1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 11:53:17 -0800 Subject: [PATCH 159/521] CID-417 Checker: UNINIT_CTOR Function: LLFoundData::LLFoundData() File: /indra/newview/llappearancemgr.cpp --- indra/newview/llappearancemgr.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 1dec8c7bd85..8f4ce4498ef 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -292,11 +292,11 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback struct LLFoundData { - LLFoundData() {} + LLFoundData() : mAssetType(LLAssetType::AT_NONE), mWearable(NULL) {} LLFoundData(const LLUUID& item_id, - const LLUUID& asset_id, - const std::string& name, - LLAssetType::EType asset_type) : + const LLUUID& asset_id, + const std::string& name, + LLAssetType::EType asset_type) : mItemID(item_id), mAssetID(asset_id), mName(name), -- GitLab From 3acf25d5fc7d3efcc2e13096ff781897ebf31346 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 11:55:34 -0800 Subject: [PATCH 160/521] CID-416 Checker: NULL_RETURNS Function: LLTabContainer::onTabBtn(const LLSD &, LLPanel *) File: /indra/llui/lltabcontainer.cpp --- indra/llui/lltabcontainer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index dcb3542e186..6be76605fdf 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1590,7 +1590,10 @@ void LLTabContainer::onTabBtn( const LLSD& data, LLPanel* panel ) LLTabTuple* tuple = getTabByPanel(panel); selectTabPanel( panel ); - tuple->mTabPanel->setFocus(TRUE); + if (tuple) + { + tuple->mTabPanel->setFocus(TRUE); + } } void LLTabContainer::onNextBtn( const LLSD& data ) -- GitLab From f714e527c57741a6e60fe4bf5fa242b5d8e3d861 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 11:57:55 -0800 Subject: [PATCH 161/521] CID-415 Checker: DEADCODE Function: LLToolPie::handleTooltipObject(LLViewerObject *, std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::basic_string<char, std::char_traits<char>, std::allocator<char>>) File: /indra/newview/lltoolpie.cpp --- indra/newview/lltoolpie.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index c79a66892d5..39e71974fdc 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -922,7 +922,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; if (mep) { - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); LLPluginClassMedia* media_plugin = NULL; if (media_impl.notNull() && (media_impl->hasMedia())) -- GitLab From 73665e5ad68ebbe2a6058128f92d251da4cd9d3b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 11:59:55 -0800 Subject: [PATCH 162/521] CID-1 Checker: BAD_COMPARE Function: checkExceptionHandler() File: /indra/llplugin/slplugin/slplugin.cpp (not a bug, but rearranged a little) --- indra/llplugin/slplugin/slplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index 23dc532ba56..77240ce5468 100644 --- a/indra/llplugin/slplugin/slplugin.cpp +++ b/indra/llplugin/slplugin/slplugin.cpp @@ -156,7 +156,7 @@ bool checkExceptionHandler() if (prev_filter == NULL) { ok = FALSE; - if (myWin32ExceptionHandler == NULL) + if (NULL == myWin32ExceptionHandler) { LL_WARNS("AppInit") << "Exception handler uninitialized." << LL_ENDL; } -- GitLab From a0bc58aac498dff7f06070bf3be025b5e396f84f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 12:07:05 -0800 Subject: [PATCH 163/521] CID-26 Checker: CTOR_DTOR_LEAK Function: LLViewerWindow::LLViewerWindow(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, int, int, int, int, int, int) File: /indra/newview/llviewerwindow.cpp --- indra/newview/llviewerwindow.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c1817496b14..424b84a756f 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1659,6 +1659,9 @@ LLViewerWindow::~LLViewerWindow() { llinfos << "Destroying Window" << llendl; destroyWindow(); + + delete mDebugText; + mDebugText = NULL; } -- GitLab From 2f062b9e5c761bce6d4d29e1a40283e37dfdfd53 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:02:19 -0800 Subject: [PATCH 164/521] CID-105 Checker: INVALIDATE_ITERATOR Function: LLLocationHistory::addItem(const LLLocationHistoryItem &) File: /indra/newview/lllocationhistory.cpp --- indra/newview/lllocationhistory.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index ae1b8f85408..f494f7d7c1d 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -50,18 +50,19 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) { // check if this item doesn't duplicate any existing one location_list_t::iterator item_iter = std::find(mItems.begin(), mItems.end(),item); - if(item_iter != mItems.end()){ + if(item_iter != mItems.end()) // if it already exists, erase the old one + { mItems.erase(item_iter); } mItems.push_back(item); - // If the vector size exceeds the maximum, purge the oldest items. - if ((S32)mItems.size() > max_items) { - for(location_list_t::iterator i = mItems.begin(); i != mItems.end()-max_items; ++i) { - mItems.erase(i); - } + // If the vector size exceeds the maximum, purge the oldest items (at the start of the mItems vector). + if ((S32)mItems.size() > max_items) + { + mItems.erase(mItems.begin(), mItems.end()-max_items); } + llassert(mItems.size() <= max_items); } /* -- GitLab From c48f2d7873568c26d835d6ce1d80c3c3533854a6 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:04:22 -0800 Subject: [PATCH 165/521] CID-104 Checker: INVALIDATE_ITERATOR Function: LLViewerWindowListener::saveSnapshot(const LLSD &) const File: /indra/newview/llviewerwindowlistener.cpp not a bug. --- indra/newview/llviewerwindowlistener.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp index de577882711..fae98cf49ae 100644 --- a/indra/newview/llviewerwindowlistener.cpp +++ b/indra/newview/llviewerwindowlistener.cpp @@ -77,6 +77,7 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const { LL_ERRS("LLViewerWindowListener") << "LLViewerWindowListener::saveSnapshot(): " << "unrecognized type " << event["type"] << LL_ENDL; + return; } type = found->second; } -- GitLab From 706fd4d0735e446ea6c9eab7387990375af53c48 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:06:26 -0800 Subject: [PATCH 166/521] CID-103 Checker: INVALIDATE_ITERATOR Function: LLMenuGL::scrollItemsDown() File: /indra/llui/llmenugl.cpp --- indra/llui/llmenugl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index c172a2b714f..171269e30d5 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1883,7 +1883,8 @@ void LLMenuGL::scrollItemsDown() } } - if ((*next_item_iter)->getVisible()) + if (next_item_iter != mItems.end() && + (*next_item_iter)->getVisible()) { mFirstVisibleItem = *next_item_iter; } -- GitLab From 668e72e2901ebf377661572fd30954d41e0e7c15 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:08:15 -0800 Subject: [PATCH 167/521] CID-103 Checker: INVALIDATE_ITERATOR Function: LLMenuGL::scrollItemsDown() File: /indra/llui/llmenugl.cpp --- indra/llui/llmenugl.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 171269e30d5..ead28426cd4 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1875,18 +1875,21 @@ void LLMenuGL::scrollItemsDown() item_list_t::iterator next_item_iter; - for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) + if (cur_item_iterator != mItems.end()) { - if( (*next_item_iter)->getVisible()) + for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) { - break; + if( (*next_item_iter)->getVisible()) + { + break; + } + } + + if (next_item_iter != mItems.end() && + (*next_item_iter)->getVisible()) + { + mFirstVisibleItem = *next_item_iter; } - } - - if (next_item_iter != mItems.end() && - (*next_item_iter)->getVisible()) - { - mFirstVisibleItem = *next_item_iter; } mNeedsArrange = TRUE; -- GitLab From 05260ba76d020072e5b08bd07fa77408aee4442e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:09:25 -0800 Subject: [PATCH 168/521] follow-up fix --- indra/llui/llmenugl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index ead28426cd4..ceb1e9820eb 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1875,7 +1875,7 @@ void LLMenuGL::scrollItemsDown() item_list_t::iterator next_item_iter; - if (cur_item_iterator != mItems.end()) + if (cur_item_iter != mItems.end()) { for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) { -- GitLab From 599e96f32815733eb2bbd9aef5984d410644a10a Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:11:02 -0800 Subject: [PATCH 169/521] CID-102 Checker: INVALIDATE_ITERATOR Function: LLNotifications::getChannel(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/llui/llnotifications.cpp not a bug. --- indra/llui/llnotifications.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 86989012ee4..a67094b8cea 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1058,6 +1058,7 @@ LLNotificationChannelPtr LLNotifications::getChannel(const std::string& channelN if(p == mChannels.end()) { llerrs << "Did not find channel named " << channelName << llendl; + return LLNotificationChannelPtr(); } return p->second; } -- GitLab From 3aed137a33712f9000333aa814f76183158183cb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:15:13 -0800 Subject: [PATCH 170/521] CID-101 Checker: INVALIDATE_ITERATOR Function: LLTextureCache::writeComplete(unsigned int, bool) File: /indra/newview/lltexturecache.cpp not really a bug, but rearranged a little. --- indra/newview/lltexturecache.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 051c189013e..7dfd0c83fac 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1617,20 +1617,19 @@ bool LLTextureCache::writeComplete(handle_t handle, bool abort) { lockWorkers(); handle_map_t::iterator iter = mWriters.find(handle); - llassert_always(iter != mWriters.end()); - LLTextureCacheWorker* worker = iter->second; - if (worker->complete() || abort) + if (llverify(iter != mWriters.end())) { - mWriters.erase(handle); - unlockWorkers(); - worker->scheduleDelete(); - return true; - } - else - { - unlockWorkers(); - return false; + LLTextureCacheWorker* worker = iter->second; + if (worker->complete() || abort) + { + mWriters.erase(handle); + unlockWorkers(); + worker->scheduleDelete(); + return true; + } } + unlockWorkers(); + return false; } void LLTextureCache::prioritizeWrite(handle_t handle) -- GitLab From c69ee5ced1ba3b8e96a08e2f0344eedd971ef3c1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:18:49 -0800 Subject: [PATCH 171/521] CID-100 Checker: INVALIDATE_ITERATOR Function: buildBlock(unsigned char *, int, const LLMessageBlock *, LLMsgData *) File: /indra/llmessage/lltemplatemessagebuilder.cpp --- indra/llmessage/lltemplatemessagebuilder.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp index 6400310c465..55379fc6fdc 100644 --- a/indra/llmessage/lltemplatemessagebuilder.cpp +++ b/indra/llmessage/lltemplatemessagebuilder.cpp @@ -737,10 +737,14 @@ static S32 buildBlock(U8* buffer, S32 buffer_size, const LLMessageBlock* templat } --block_count; - ++block_iter; + if (block_iter != message_data->mMemberBlocks.end()) { - mbci = block_iter->second; + ++block_iter; + if (block_iter != message_data->mMemberBlocks.end()) + { + mbci = block_iter->second; + } } } -- GitLab From eeb30616f601a8e75403d7eb8ffed272a5915a17 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:26:05 -0800 Subject: [PATCH 172/521] CID-99 Checker: INVALIDATE_ITERATOR Function: LLAllocatorHeapProfile::parse(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/llcommon/llallocator_heap_profile.cpp not a bug, but make it clearer to coverity. --- indra/llcommon/llallocator_heap_profile.cpp | 31 +++++++++++---------- indra/newview/lltexturecache.cpp | 3 +- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp index 0a807702d0a..d01b33c8c40 100644 --- a/indra/llcommon/llallocator_heap_profile.cpp +++ b/indra/llcommon/llallocator_heap_profile.cpp @@ -113,20 +113,23 @@ void LLAllocatorHeapProfile::parse(std::string const & prof_text) ++j; while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens - llassert_always(j != line_elems.end()); - ++j; // skip the '@' - - mLines.push_back(line(live_count, live_size, tot_count, tot_size)); - line & current_line = mLines.back(); - - for(; j != line_elems.end(); ++j) - { - if(!j->empty()) { - U32 marker = boost::lexical_cast<U32>(*j); - current_line.mTrace.push_back(marker); - } - } - } + llassert(j != line_elems.end()); + if (j != line_elems.end()) + { + ++j; // skip the '@' + + mLines.push_back(line(live_count, live_size, tot_count, tot_size)); + line & current_line = mLines.back(); + + for(; j != line_elems.end(); ++j) + { + if(!j->empty()) + { + U32 marker = boost::lexical_cast<U32>(*j); + current_line.mTrace.push_back(marker); + } + } + } // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 7dfd0c83fac..a7f26f1df15 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1617,7 +1617,8 @@ bool LLTextureCache::writeComplete(handle_t handle, bool abort) { lockWorkers(); handle_map_t::iterator iter = mWriters.find(handle); - if (llverify(iter != mWriters.end())) + llassert(iter != mWriters.end()); + if (iter != mWriters.end()) { LLTextureCacheWorker* worker = iter->second; if (worker->complete() || abort) -- GitLab From 3616ed1e996f276b3ad195e1f2c9b2f87a5b1455 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:28:13 -0800 Subject: [PATCH 173/521] sigh, follow-up fix. --- indra/llcommon/llallocator_heap_profile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp index d01b33c8c40..e50d59fd4b6 100644 --- a/indra/llcommon/llallocator_heap_profile.cpp +++ b/indra/llcommon/llallocator_heap_profile.cpp @@ -130,7 +130,7 @@ void LLAllocatorHeapProfile::parse(std::string const & prof_text) } } } - + } // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it } -- GitLab From bada10e2f2fcd15eff4aeec82288c4c64ad258ef Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:32:21 -0800 Subject: [PATCH 174/521] CID-114 Checker: MISSING_BREAK Function: renderBoundingBox(LLDrawable *, int) File: /indra/newview/llspatialpartition.cpp --- indra/newview/llspatialpartition.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 514d8facb44..465221c4942 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2607,6 +2607,7 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE) break; case LL_PCODE_LEGACY_TREE: gGL.color4f(0,0.5f,0,1); + break; default: gGL.color4f(1,0,1,1); break; -- GitLab From 5aedcb39362b64c22fc5e70135b44d1388cbd5a2 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:34:49 -0800 Subject: [PATCH 175/521] CID-112 Checker: MISSING_BREAK Function: LLViewerObject::processUpdateMessage(LLMessageSystem *, void **, unsigned int, e_object_update_type, LLDataPacker *) File: /indra/newview/llviewerobject.cpp not a bug. commented. --- indra/newview/llviewerobject.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 3c79045cc58..037393a8f9f 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1172,6 +1172,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 60: // this is a terse 32 update // pos @@ -1211,6 +1212,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 32: // this is a terse 16 update this_update_precision = 16; -- GitLab From c84aa46ac8544704861a1fe12ef217d38e3f6276 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:36:27 -0800 Subject: [PATCH 176/521] CID-111 Checker: MISSING_BREAK Function: LLViewerObject::processUpdateMessage(LLMessageSystem *, void **, unsigned int, e_object_update_type, LLDataPacker *) File: /indra/newview/llviewerobject.cpp not a bug. commented. --- indra/newview/llviewerobject.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 037393a8f9f..886f1d9ef54 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -861,6 +861,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 60: this_update_precision = 32; // this is a terse update @@ -900,6 +901,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 32: this_update_precision = 16; test_pos_parent.quantize16(-0.5f*size, 1.5f*size, MIN_HEIGHT, MAX_HEIGHT); -- GitLab From e67d2bb5556adbccedc9e75443f7ac873c8d8259 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:37:45 -0800 Subject: [PATCH 177/521] CID-110 Checker: MISSING_BREAK Function: LLTransferSourceChannel::updateTransfers() File: /indra/llmessage/lltransfermanager.cpp not a bug, commented. --- indra/llmessage/lltransfermanager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index d67911e8e2a..0a71ad95f2b 100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -855,6 +855,7 @@ void LLTransferSourceChannel::updateTransfers() break; case LLTS_ERROR: llwarns << "Error in transfer dataCallback!" << llendl; + // fall through case LLTS_DONE: // We need to clean up this transfer source. //llinfos << "LLTransferSourceChannel::updateTransfers() " << tsp->getID() << " done" << llendl; -- GitLab From 4421a51cfeb43b3be6de520acb9f94052fc7e2df Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:39:59 -0800 Subject: [PATCH 178/521] CID-109 Checker: MISSING_BREAK Function: operator <<(std::basic_ostream<char, std::char_traits<char>>&, const LLNameValue &) File: /indra/llmessage/llnamevalue.cpp --- indra/llmessage/llnamevalue.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp index 01e922eba24..43429b0ab37 100644 --- a/indra/llmessage/llnamevalue.cpp +++ b/indra/llmessage/llnamevalue.cpp @@ -963,6 +963,7 @@ std::ostream& operator<<(std::ostream& s, const LLNameValue &a) U64_to_str(*a.mNameValueReference.u64, u64_string, sizeof(u64_string)); s << u64_string; } + break; case NVT_VEC3: s << *(a.mNameValueReference.vec3); break; -- GitLab From 481bf863c2194400fec15c3ebaac4a0f4d69ed6d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:49:44 -0800 Subject: [PATCH 179/521] CID-129 Checker: NO_EFFECT Function: LLTexLayerTemplate::getLayer(unsigned int) File: /indra/newview/lltexlayer.cpp --- indra/newview/lltexlayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 84c8b9d5f06..b8419e088ad 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -1860,7 +1860,7 @@ U32 LLTexLayerTemplate::updateWearableCache() } LLTexLayer* LLTexLayerTemplate::getLayer(U32 i) { - if (mWearableCache.size() <= i || i < 0) + if (mWearableCache.size() <= i) { return NULL; } -- GitLab From e998513aa5e0aad186a16518e1d693fd2b3cf2b7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:53:40 -0800 Subject: [PATCH 180/521] CID-128 Checker: NO_EFFECT Function: LLSpatialGroup::~LLSpatialGroup() File: /indra/newview/llspatialpartition.cpp --- indra/newview/llspatialpartition.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 465221c4942..2a57d48f16b 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -294,7 +294,7 @@ LLSpatialGroup::~LLSpatialGroup() sNodeCount--; - if (gGLManager.mHasOcclusionQuery && mOcclusionQuery) + if (gGLManager.mHasOcclusionQuery && mOcclusionQuery[LLViewerCamera::sCurCameraID]) { sQueryPool.release(mOcclusionQuery[LLViewerCamera::sCurCameraID]); } -- GitLab From f7f4dae3d82d8ea97f60170c3468fa622639a6ad Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:56:53 -0800 Subject: [PATCH 181/521] CID-127 Checker: NO_EFFECT Function: LLOctreeNode<LLDrawable>::updateMinMax() File: /indra/llmath/lloctree.h --- indra/llmath/lloctree.h | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index ba8776690a3..2f34fb1bb04 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -183,7 +183,6 @@ class LLOctreeNode : public LLTreeNode<T> { mMax.mdV[i] = mCenter.mdV[i] + mSize.mdV[i]; mMin.mdV[i] = mCenter.mdV[i] - mSize.mdV[i]; - mCenter.mdV[i] = mCenter.mdV[i]; } } -- GitLab From 132cb6dbfe256cbf1a7b7558b091a63f99a364be Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:58:04 -0800 Subject: [PATCH 182/521] CID-126 Checker: NO_EFFECT Function: LLFontBitmapCache::getImageGL(unsigned int) const File: /indra/llrender/llfontbitmapcache.cpp --- indra/llrender/llfontbitmapcache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp index f01878642a4..cc9a012f98a 100644 --- a/indra/llrender/llfontbitmapcache.cpp +++ b/indra/llrender/llfontbitmapcache.cpp @@ -72,7 +72,7 @@ LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const LLImageGL *LLFontBitmapCache::getImageGL(U32 bitmap_num) const { - if ((bitmap_num < 0) || (bitmap_num >= mImageGLVec.size())) + if (bitmap_num >= mImageGLVec.size()) return NULL; return mImageGLVec[bitmap_num]; -- GitLab From ccacd7d7acb1a24b754008cd35e9552fed93a1d1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 13:58:48 -0800 Subject: [PATCH 183/521] CID-125 Checker: NO_EFFECT Function: LLFontBitmapCache::getImageRaw(unsigned int) const File: /indra/llrender/llfontbitmapcache.cpp --- indra/llrender/llfontbitmapcache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp index cc9a012f98a..fa231c9e6ad 100644 --- a/indra/llrender/llfontbitmapcache.cpp +++ b/indra/llrender/llfontbitmapcache.cpp @@ -64,7 +64,7 @@ void LLFontBitmapCache::init(S32 num_components, LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const { - if ((bitmap_num < 0) || (bitmap_num >= mImageRawVec.size())) + if (bitmap_num >= mImageRawVec.size()) return NULL; return mImageRawVec[bitmap_num]; -- GitLab From d3f361752e5988800228cff11fcc50289b2f88c7 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Wed, 27 Jan 2010 14:00:02 -0800 Subject: [PATCH 184/521] Plumb getting and setting the system audio mute through appviewer Next step is to actually implement the OS-specific calls to do so. Until then, behavior is the same; the status bar will mute/unmute the "master" audio for the viewer *only* --- indra/newview/llappviewer.cpp | 14 +++++++++++++- indra/newview/llappviewer.h | 4 ++++ indra/newview/llappviewermacosx.cpp | 14 ++++++++++++++ indra/newview/llappviewermacosx.h | 3 +++ indra/newview/llstatusbar.cpp | 6 +++--- 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0e248ff88bf..9aa15789edc 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2685,7 +2685,7 @@ void LLAppViewer::handleViewerCrash() gMessageSystem->stopLogging(); } - LLWorld::getInstance()->getInfo(gDebugInfo); + if (LLWorld::instanceExists()) LLWorld::getInstance()->getInfo(gDebugInfo); // Close the debug file pApp->writeDebugInfo(); @@ -4405,3 +4405,15 @@ void LLAppViewer::launchUpdater() // LLAppViewer::instance()->forceQuit(); } + +//virtual +void LLAppViewer::setMasterSystemAudioMute(bool mute) +{ + gSavedSettings.setBOOL("MuteAudio", mute); +} + +//virtual +bool LLAppViewer::getMasterSystemAudioMute() +{ + return gSavedSettings.getBOOL("MuteAudio"); +} diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 40e74061b54..a011c5ebfd6 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -168,6 +168,10 @@ class LLAppViewer : public LLApp void purgeCache(); // Clear the local cache. + // mute/unmute the system's master audio + virtual void setMasterSystemAudioMute(bool mute); + virtual bool getMasterSystemAudioMute(); + protected: virtual bool initWindow(); // Initialize the viewer's window. virtual bool initLogging(); // Initialize log files, logging system, return false on failure. diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 1282e437f2f..cc38a0940cb 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -444,6 +444,20 @@ std::string LLAppViewerMacOSX::generateSerialNumber() return serial_md5; } +//virtual +void LLAppViewerMacOSX::setMasterSystemAudioMute(bool mute) +{ + // XXX TODO: make this actually set the OS's audio mute state + gSavedSettings.setBOOL("MuteAudio", mute); +} + +//virtual +bool LLAppViewerMacOSX::getMasterSystemAudioMute() +{ + // XXX TODO: make this actually get the OS's audio mute state + return gSavedSettings.getBOOL("MuteAudio"); +} + OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn) { OSErr result = noErr; diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index bc841fc3a72..cbf7e6c2095 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -48,6 +48,9 @@ class LLAppViewerMacOSX : public LLAppViewer // virtual bool init(); // Override to do application initialization + // mute/unmute the system's master audio + virtual void setMasterSystemAudioMute(bool mute); + virtual bool getMasterSystemAudioMute(); protected: virtual bool restoreErrorTrap(); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 8a36475510f..bff32af228c 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -354,7 +354,7 @@ void LLStatusBar::refresh() childSetEnabled("stat_btn", net_stats_visible); // update the master volume button state - BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio"); + bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute(); mBtnVolume->setToggleState(mute_audio); } @@ -523,8 +523,8 @@ void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl) static void onClickVolume(void* data) { // toggle the master mute setting - BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio"); - gSavedSettings.setBOOL("MuteAudio", !mute_audio); + bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute(); + LLAppViewer::instance()->setMasterSystemAudioMute(!mute_audio); } // sets the static variables necessary for the date -- GitLab From e70d7fca4b55d15547082a67101d5f8935d3a40a Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:04:02 -0800 Subject: [PATCH 185/521] CID-155 Checker: OVERRUN_DYNAMIC Function: LLImageGL::updatePickMask(int, int, const unsigned char *) File: /indra/llrender/llimagegl.cpp not a bug, AFAICT. --- indra/llrender/llimagegl.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 46478ba3c95..8bcc4723ae2 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1716,10 +1716,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) { U32 pick_idx = pick_bit/8; U32 pick_offset = pick_bit%8; - if (pick_idx >= size) - { - llerrs << "WTF?" << llendl; - } + llassert(pick_idx < size); mPickMask[pick_idx] |= 1 << pick_offset; } -- GitLab From 78f725cb97cd05e5c716b0014b3cb4d30066d1ca Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:08:40 -0800 Subject: [PATCH 186/521] CID-161 Checker: OVERRUN_STATIC Function: LLViewerLogin::setGridChoice(EGridInfo) File: /indra/newview/llviewernetwork.cpp not a bug. clarified for coverity. --- indra/newview/llviewernetwork.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index d7b55d7e978..987d23630a9 100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -169,6 +169,7 @@ void LLViewerLogin::setGridChoice(EGridInfo grid) if(grid < 0 || grid >= GRID_INFO_COUNT) { llerrs << "Invalid grid index specified." << llendl; + return; } if(mGridChoice != grid || gSavedSettings.getS32("ServerChoice") != grid) -- GitLab From 68422d9505ecf78e793bb5fb29eb8db58e6b6f89 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:15:02 -0800 Subject: [PATCH 187/521] CID 159 CID 158 CID 157 Checker: OVERRUN_STATIC Function: LLVertexBuffer::drawRange(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const File: /indra/llrender/llvertexbuffer.cpp --- indra/llrender/llvertexbuffer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 572ae139099..ecfe845b342 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -237,7 +237,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; @@ -267,7 +267,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; @@ -292,7 +292,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; -- GitLab From f257f26746eb68e5d192021120e1818800a626a3 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:27:57 -0800 Subject: [PATCH 188/521] CID 201 Checker: RESOURCE_LEAK Function: LLInitialWearablesFetch::processWearablesMessage() File: /indra/newview/llagentwearables.cpp --- indra/newview/llagentwearables.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index c21cdf95085..acb9e2ebb15 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -2527,8 +2527,13 @@ void LLInitialWearablesFetch::processWearablesMessage() { llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID " << wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl; + delete wearable_data; } } + else + { + delete wearable_data; + } // Add all current attachments to the requested items as well. LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); -- GitLab From 744def1ae9520a5085057b94f7053bca1b03ddee Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:34:07 -0800 Subject: [PATCH 189/521] CID-200 Checker: RESOURCE_LEAK Function: LLPanelEstateInfo::onKickUserCommit(const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char>>>> &, std::vector<LLUUID, std::allocator<LLUUID>>&) File: /indra/newview/llfloaterregioninfo.cpp we don't use this structure, all the way back to 1.23 --- indra/newview/llfloaterregioninfo.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 85353ce308f..d54736e942b 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -1521,11 +1521,6 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data) //--------------------------------------------------------------------------- // Kick from estate methods //--------------------------------------------------------------------------- -struct LLKickFromEstateInfo -{ - LLPanelEstateInfo *mEstatePanelp; - LLUUID mAgentID; -}; void LLPanelEstateInfo::onClickKickUser() { @@ -1547,11 +1542,6 @@ void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, return; } - //keep track of what user they want to kick and other misc info - LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo(); - kick_info->mEstatePanelp = this; - kick_info->mAgentID = ids[0]; - //Bring up a confirmation dialog LLSD args; args["EVIL_USER"] = names[0]; -- GitLab From 0345701368d9c125c801b98d8f8c0621429e90b5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:37:59 -0800 Subject: [PATCH 190/521] CID-199 Checker: RESOURCE_LEAK Function: LLTaskInvFVBridge::removeItem() File: /indra/newview/llpanelobjectinventory.cpp we haven't actually used this new()'d structure, all the way back to 1.23 :/ --- indra/newview/llpanelobjectinventory.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index d4376550d6c..5c5c35141ea 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -463,10 +463,6 @@ BOOL LLTaskInvFVBridge::removeItem() } else { - remove_data_t* data = new remove_data_t; - data->first = mPanel; - data->second.first = mPanel->getTaskUUID(); - data->second.second.push_back(mUUID); LLSD payload; payload["task_id"] = mPanel->getTaskUUID(); payload["inventory_ids"].append(mUUID); -- GitLab From da3ee22daad52806bbf788a4acee7e7a653ef7d3 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:39:59 -0800 Subject: [PATCH 191/521] CID-198 Checker: RESOURCE_LEAK Function: LLTextureFetchWorker::doWork(int) File: /indra/newview/lltexturefetch.cpp --- indra/newview/lltexturefetch.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 5ce68842390..404b79bfaf9 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -661,6 +661,8 @@ bool LLTextureFetchWorker::doWork(S32 param) } setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); mState = SEND_HTTP_REQ; + delete responder; + responder = NULL; } } -- GitLab From 45e15b0b50bca05aba333d9f2a41748bfc1e9496 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:42:32 -0800 Subject: [PATCH 192/521] CID-197 Checker: RESOURCE_LEAK Function: LLToolDragAndDrop::giveInventoryCategory(const LLUUID &, LLInventoryCategory *, const LLUUID &) File: /indra/newview/lltooldraganddrop.cpp --- indra/newview/lltooldraganddrop.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 4420b046d8f..125c62474ec 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1404,18 +1404,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj, gFloaterTools->dirty(); } -struct LLGiveInventoryInfo -{ - LLUUID mToAgentID; - LLUUID mInventoryObjectID; - LLUUID mIMSessionID; - LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) : - mToAgentID(to_agent), - mInventoryObjectID(obj_id), - mIMSessionID(im_session_id) - {} -}; - void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, LLInventoryItem* item, const LLUUID& im_session_id) @@ -1584,8 +1572,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent, } else { - LLGiveInventoryInfo* info = NULL; - info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id); LLSD args; args["COUNT"] = llformat("%d",giveable.countNoCopy()); LLSD payload; -- GitLab From f8f34c14c4913d008182a5853613ffbf154d9a26 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:45:44 -0800 Subject: [PATCH 193/521] follow-up fix to leak fix. --- indra/newview/llagentwearables.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index acb9e2ebb15..401d74c4efd 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -2530,10 +2530,6 @@ void LLInitialWearablesFetch::processWearablesMessage() delete wearable_data; } } - else - { - delete wearable_data; - } // Add all current attachments to the requested items as well. LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); -- GitLab From b6684dce80db985803c7866c6955d1ca896b1b5c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:54:06 -0800 Subject: [PATCH 194/521] CID-196 Checker: RESOURCE_LEAK Function: process_improved_im(LLMessageSystem *, void **) File: /indra/newview/llviewermessage.cpp partial fix. either coverity doesn't grok that the remaining case gets freed way down the line by the callbacks, or.. it really doesnt. --- indra/newview/llpanelgroup.cpp | 8 ++++---- indra/newview/llviewermessage.cpp | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index 1d447a22d73..ac58c35b060 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -560,10 +560,10 @@ void LLPanelGroup::chatGroup() } void LLPanelGroup::showNotice(const std::string& subject, - const std::string& message, - const bool& has_inventory, - const std::string& inventory_name, - LLOfferInfo* inventory_offer) + const std::string& message, + const bool& has_inventory, + const std::string& inventory_name, + LLOfferInfo* inventory_offer) { LLPanelGroupNotices* panel_notices = findChild<LLPanelGroupNotices>("group_notices_tab_panel"); if(!panel_notices) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 36710e7532e..764c54da1ae 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1987,6 +1987,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LLPanelGroup::showNotice(subj,mes,group_id,has_inventory,item_name,info); } + else + { + delete info; + } } break; case IM_GROUP_INVITATION: -- GitLab From 576c69dfd9b4418263caa7e14d2d3e52ea8cf5e4 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 14:57:02 -0800 Subject: [PATCH 195/521] CID-196 Checker: RESOURCE_LEAK Function: process_improved_im(LLMessageSystem *, void **) File: /indra/newview/llviewermessage.cpp --- indra/newview/llviewermessage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 764c54da1ae..29b7324a0d6 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2051,6 +2051,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (sizeof(offer_agent_bucket_t) != binary_bucket_size) { LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL; + delete info; break; } bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0]; @@ -2062,6 +2063,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (sizeof(S8) != binary_bucket_size) { LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL; + delete info; break; } info->mType = (LLAssetType::EType) binary_bucket[0]; -- GitLab From 7dc1e2eedbf29396b6614f8e7e39b7938dd5e301 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:04:12 -0800 Subject: [PATCH 196/521] CID-195 Checker: RESOURCE_LEAK Function: LLAgentWearables::addLocalTextureObject(EWearableType, LLVOAvatarDefines::ETextureIndex, unsigned int) File: /indra/newview/llagentwearables.cpp --- indra/newview/llagentwearables.cpp | 3 ++- indra/newview/llwearable.cpp | 4 ++-- indra/newview/llwearable.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 401d74c4efd..b0ff3a56261 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1130,8 +1130,9 @@ void LLAgentWearables::addLocalTextureObject(const EWearableType wearable_type, if (!wearable) { llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl; + return; } - LLLocalTextureObject* lto = new LLLocalTextureObject(); + LLLocalTextureObject lto; wearable->setLocalTextureObject(texture_type, lto); } diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index b789bd3650a..8cfb8b11035 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -818,7 +818,7 @@ const LLLocalTextureObject* LLWearable::getConstLocalTextureObject(S32 index) co return NULL; } -void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto) +void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) { if( mTEMap.find(index) != mTEMap.end() ) { @@ -826,7 +826,7 @@ void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto) } if( lto ) { - mTEMap[index] = new LLLocalTextureObject(*lto); + mTEMap[index] = new LLLocalTextureObject(lto); } } diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 7a579b248e6..dae983bcf33 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -114,7 +114,7 @@ class LLWearable LLLocalTextureObject* getLocalTextureObject(S32 index); const LLLocalTextureObject* getConstLocalTextureObject(S32 index) const; - void setLocalTextureObject(S32 index, LLLocalTextureObject *lto); + void setLocalTextureObject(S32 index, LLLocalTextureObject <o); void addVisualParam(LLVisualParam *param); void setVisualParams(); void setVisualParamWeight(S32 index, F32 value, BOOL upload_bake); -- GitLab From c5abe04923c8968c38fbca67182d7e3fbd0723d9 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:07:04 -0800 Subject: [PATCH 197/521] CID-188 Checker: RESOURCE_LEAK Function: LLTemplateParser::LLTemplateParser(LLTemplateTokenizer &) File: /indra/llmessage/llmessagetemplateparser.cpp --- indra/llmessage/llmessagetemplateparser.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp index 283547ea009..2ddbf3e0df0 100644 --- a/indra/llmessage/llmessagetemplateparser.cpp +++ b/indra/llmessage/llmessagetemplateparser.cpp @@ -403,6 +403,10 @@ LLTemplateParser::LLTemplateParser(LLTemplateTokenizer & tokens): { mMessages.push_back(templatep); } + else + { + delete templatep; + } } if(!tokens.wantEOF()) -- GitLab From 635290cc8774f0db67d2ee633d287ecf7d767907 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:09:25 -0800 Subject: [PATCH 198/521] CID-186 Checker: RESOURCE_LEAK Function: LLStringUtilBase<unsigned int>::addCRLF(std::basic_string<unsigned int, std::char_traits<unsigned int>, std::allocator<unsigned int>>&) File: /indra/llcommon/llstring.h --- indra/llcommon/llstring.h | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 31e70e0fe4d..62cedcde4e4 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -882,6 +882,7 @@ void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string) } string.assign(t, size); + delete[] t; } } -- GitLab From fa886566b66639d65db4a7d4399cdbf2552a3d50 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:10:34 -0800 Subject: [PATCH 199/521] CID-184 Checker: RESOURCE_LEAK Function: LLPluginProcessChild::receiveMessageRaw(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/llplugin/llpluginprocesschild.cpp --- indra/llplugin/llpluginprocesschild.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 07fc82c770f..11c924cadfd 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -359,6 +359,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message) else { LL_WARNS("Plugin") << "Couldn't create a shared memory segment!" << LL_ENDL; + delete region; } } -- GitLab From 43218577740fa97a99160008568e6e0a36f892e5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:37:28 -0800 Subject: [PATCH 200/521] CID-220 Checker: STREAM_FORMAT_STATE Function: encode_character(std::basic_ostream<char, std::char_traits<char>>&, char) File: /indra/llcommon/lluri.cpp --- indra/llcommon/lluri.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index f6e8f01f0ef..9d4f3a98f04 100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp @@ -46,10 +46,21 @@ void encode_character(std::ostream& ostr, std::string::value_type val) { - ostr << "%" << std::uppercase << std::hex << std::setw(2) << std::setfill('0') + ostr << "%" + + << std::uppercase + << std::hex + << std::setw(2) + << std::setfill('0') + // VWR-4010 Cannot cast to U32 because sign-extension on // chars > 128 will result in FFFFFFC3 instead of F3. - << static_cast<S32>(static_cast<U8>(val)); + << static_cast<S32>(static_cast<U8>(val)) + + // reset stream state + << std::nouppercase + << std::dec + << std::setfill(' '); } // static -- GitLab From a7c3fde789b0f15f0ccf650e59dc352451fc4e4a Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:45:07 -0800 Subject: [PATCH 201/521] partial fix for CID-219 Checker: STREAM_FORMAT_STATE Function: LLDate::toStream(std::basic_ostream<char, std::char_traits<char>>&) const File: /indra/llcommon/lldate.cpp --- indra/llcommon/lldate.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index ca7e471bf25..e3323fcfbf8 100644 --- a/indra/llcommon/lldate.cpp +++ b/indra/llcommon/lldate.cpp @@ -152,7 +152,8 @@ void LLDate::toStream(std::ostream& s) const s << '.' << std::setw(2) << (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100)); } - s << 'Z'; + s << 'Z' + << setfill(' '); } bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const -- GitLab From 9e2ba40d13cd03525ce137435fd817a55758bc8c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:45:41 -0800 Subject: [PATCH 202/521] less dumb partial fix for CID-219 --- indra/llcommon/lldate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index e3323fcfbf8..de7f2ead74e 100644 --- a/indra/llcommon/lldate.cpp +++ b/indra/llcommon/lldate.cpp @@ -153,7 +153,7 @@ void LLDate::toStream(std::ostream& s) const << (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100)); } s << 'Z' - << setfill(' '); + << std::setfill(' '); } bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const -- GitLab From e133a9824695d0286ca7717b1eb6a1c57748b898 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:49:22 -0800 Subject: [PATCH 203/521] CID-227 Checker: STRING_OVERFLOW Function: CProcessor::AnalyzeIntelProcessor() File: /indra/llcommon/llprocessor.cpp --- indra/llcommon/llprocessor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 469e544b16f..8a4a4a8f9af 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -281,7 +281,8 @@ bool CProcessor::AnalyzeIntelProcessor() // already have a string here from GetCPUInfo(). JC if ( CPUInfo.uiBrandID < LL_ARRAY_SIZE(INTEL_BRAND) ) { - strcpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID]); + strncpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID], sizeof(CPUInfo.strBrandID)-1); + CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID)-1]='\0'; if (CPUInfo.uiBrandID == 3 && CPUInfo.uiModel == 6) { -- GitLab From e7c17cb29b63fb85bf345133ed78a026a224af30 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:53:56 -0800 Subject: [PATCH 204/521] a follow-up fix. --- indra/newview/llwearable.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 8cfb8b11035..d093031beae 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -824,10 +824,7 @@ void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) { mTEMap.erase(index); } - if( lto ) - { - mTEMap[index] = new LLLocalTextureObject(lto); - } + mTEMap[index] = new LLLocalTextureObject(lto); } -- GitLab From 94e5625f2c5bfef9d6cd7e5ffdda3a0e64717d93 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:58:02 -0800 Subject: [PATCH 205/521] CID-255 Checker: UNINIT Function: process_improved_im(LLMessageSystem *, void **) File: /indra/newview/llviewermessage.cpp --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 29b7324a0d6..aa77c9602fe 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1933,7 +1933,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (has_inventory) { - info = new LLOfferInfo; + info = new LLOfferInfo(); info->mIM = IM_GROUP_NOTICE; info->mFromID = from_id; -- GitLab From b3c1d0dc07a16b47626968ae55b5e6a725d8d722 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 15:59:56 -0800 Subject: [PATCH 206/521] CID-254 Checker: UNINIT Function: LLCacheName::Impl::processUUIDRequest(LLMessageSystem *, bool) File: /indra/llmessage/llcachename.cpp --- indra/llmessage/llcachename.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 3078d80552b..dbec2816c84 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -125,7 +125,7 @@ class ReplySender }; ReplySender::ReplySender(LLMessageSystem* msg) - : mMsg(msg), mPending(false) + : mMsg(msg), mPending(false), mCurrIsGroup(false) { } ReplySender::~ReplySender() -- GitLab From 1afc7ecc142c9ec066e5761497a4011698b50c8e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:11:32 -0800 Subject: [PATCH 207/521] CID-388 Checker: UNINIT_CTOR Function: LLPanelPlaceInfo::LLPanelPlaceInfo() File: /indra/newview/llpanelplaceinfo.cpp --- indra/newview/llpanellandmarkinfo.cpp | 2 +- indra/newview/llpanellandmarkinfo.h | 2 +- indra/newview/llpanelplaceinfo.cpp | 3 ++- indra/newview/llpanelplaceinfo.h | 8 +++++--- indra/newview/llpanelplaceprofile.cpp | 2 +- indra/newview/llpanelplaceprofile.h | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index c792fd4fe3a..7a17d4a1f02 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -108,7 +108,7 @@ void LLPanelLandmarkInfo::resetLocation() } // virtual -void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type) +void LLPanelLandmarkInfo::setInfoType(EInfoType type) { LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel"); diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h index 2a9949ae41c..b3dc3f5ad9d 100644 --- a/indra/newview/llpanellandmarkinfo.h +++ b/indra/newview/llpanellandmarkinfo.h @@ -49,7 +49,7 @@ class LLPanelLandmarkInfo : public LLPanelPlaceInfo /*virtual*/ void resetLocation(); - /*virtual*/ void setInfoType(INFO_TYPE type); + /*virtual*/ void setInfoType(EInfoType type); /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 5f75668722e..9ebc8ca2b93 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -58,6 +58,7 @@ LLPanelPlaceInfo::LLPanelPlaceInfo() mPosRegion(), mScrollingPanelMinHeight(0), mScrollingPanelWidth(0), + mInfoType(UNKNOWN), mScrollingPanel(NULL), mScrollContainer(NULL) {} @@ -120,7 +121,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id) } //virtual -void LLPanelPlaceInfo::setInfoType(INFO_TYPE type) +void LLPanelPlaceInfo::setInfoType(EInfoType type) { mTitle->setText(mCurrentTitle); diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index 3091f7ed24a..deedbd2b0f6 100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h @@ -54,8 +54,10 @@ class LLViewerInventoryCategory; class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver { public: - enum INFO_TYPE + enum EInfoType { + UNKNOWN, + AGENT, CREATE_LANDMARK, LANDMARK, @@ -79,7 +81,7 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver // Depending on how the panel was triggered // (from landmark or current location, or other) // sets a corresponding title and contents. - virtual void setInfoType(INFO_TYPE type); + virtual void setInfoType(EInfoType type); // Requests remote parcel info by parcel ID. void sendParcelInfoRequest(); @@ -114,7 +116,7 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver std::string mCurrentTitle; S32 mScrollingPanelMinHeight; S32 mScrollingPanelWidth; - INFO_TYPE mInfoType; + EInfoType mInfoType; LLScrollContainer* mScrollContainer; LLPanel* mScrollingPanel; diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 3c798639d4e..8d689b2c5e4 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -207,7 +207,7 @@ void LLPanelPlaceProfile::resetLocation() } // virtual -void LLPanelPlaceProfile::setInfoType(INFO_TYPE type) +void LLPanelPlaceProfile::setInfoType(EInfoType type) { bool is_info_type_agent = type == AGENT; diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index 8ca95268750..e77b4415671 100644 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -48,7 +48,7 @@ class LLPanelPlaceProfile : public LLPanelPlaceInfo /*virtual*/ void resetLocation(); - /*virtual*/ void setInfoType(INFO_TYPE type); + /*virtual*/ void setInfoType(EInfoType type); /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); -- GitLab From 23147ee1ee3fd37025fb777507a8e19810d94f3b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:13:11 -0800 Subject: [PATCH 208/521] CID-387 Checker: UNINIT_CTOR Function: LLTeleportHistoryPanel::ContextMenu::ContextMenu() File: /indra/newview/llpanelteleporthistory.cpp --- indra/newview/llpanelteleporthistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 1b8fb496418..6005881148d 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -308,7 +308,7 @@ void LLTeleportHistoryFlatItemStorage::purge() //////////////////////////////////////////////////////////////////////////////// LLTeleportHistoryPanel::ContextMenu::ContextMenu() : - mMenu(NULL) + mMenu(NULL), mIndex(0) { } -- GitLab From 7814eaec0082dfc505076afca33b51eeb6f591fe Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:16:28 -0800 Subject: [PATCH 209/521] CID-386 Checker: UNINIT_CTOR Function: LLFolderBridge::LLFolderBridge(LLInventoryPanel *, const LLUUID &) File: /indra/newview/llinventorybridge.h --- indra/newview/llinventorybridge.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 759d0cba18a..eeb8246b112 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -320,8 +320,12 @@ class LLFolderBridge : public LLInvFVBridge LLViewerInventoryCategory* getCategory() const; protected: - LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) : - LLInvFVBridge(inventory, uuid), mCallingCards(FALSE), mWearables(FALSE) {} + LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) + : LLInvFVBridge(inventory, uuid), + + mCallingCards(FALSE), + mWearables(FALSE), + mMenu(NULL) {} // menu callbacks static void pasteClipboard(void* user_data); -- GitLab From bfda8b2cfee5512f6737ea2802b69bdac66ed3ab Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:19:32 -0800 Subject: [PATCH 210/521] CID-385 Checker: UNINIT_CTOR Function: LLToolBar::LLToolBar() File: /indra/newview/lltoolbar.cpp --- indra/newview/lltoolbar.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index edbaa0d45a4..6df574a21ae 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -95,9 +95,12 @@ F32 LLToolBar::sInventoryAutoOpenTime = 1.f; // LLToolBar::LLToolBar() -: LLPanel() + : LLPanel(), + + mInventoryAutoOpen(FALSE), + mNumUnreadIMs(0) #if LL_DARWIN - , mResizeHandle(NULL) + , mResizeHandle(NULL), #endif // LL_DARWIN { setIsChrome(TRUE); -- GitLab From bfd21c0886ccb9ebbb1f32785b008134c20e3de5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:20:44 -0800 Subject: [PATCH 211/521] CID-384 Checker: UNINIT_CTOR Function: LLSelectNode::LLSelectNode(const LLSelectNode&) File: /indra/newview/llselectmgr.cpp --- indra/newview/llselectmgr.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 60a095506b1..6f76715e732 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5093,6 +5093,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep) mName = nodep.mName; mDescription = nodep.mDescription; mCategory = nodep.mCategory; + mInventorySerial = 0; mSavedPositionLocal = nodep.mSavedPositionLocal; mSavedPositionGlobal = nodep.mSavedPositionGlobal; mSavedScale = nodep.mSavedScale; -- GitLab From 344eaeb39bc8fa059960d44b0b0853d92530c411 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:27:02 -0800 Subject: [PATCH 212/521] CID-376 Checker: UNINIT_CTOR Function: LLViewerPart::LLViewerPart() File: /indra/newview/llviewerpartsim.cpp --- indra/newview/llviewerpartsim.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 841a7ccc5e8..6b480ccf8e5 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -81,6 +81,7 @@ F32 calc_desired_size(LLViewerCamera* camera, LLVector3 pos, LLVector2 scale) LLViewerPart::LLViewerPart() : mPartID(0), mLastUpdateTime(0.f), + mSkipOffset(0.f), mVPCallback(NULL), mImagep(NULL) { -- GitLab From 0ea467ad06acc8e90f46cf9b97d1509e287bbe5d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:31:41 -0800 Subject: [PATCH 213/521] CID-375 Checker: UNINIT_CTOR Function: LLViewerFetchedTexture::LLViewerFetchedTexture(const LLImageRaw *, int) File: /indra/newview/llviewertexture.cpp --- indra/newview/llviewertexture.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index b80dc7d9025..0ad269392d1 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1029,6 +1029,8 @@ void LLViewerFetchedTexture::init(bool firstinit) // does not contain this image. mIsMissingAsset = FALSE; + mLoadedCallbackDesiredDiscardLevel = 0; + mNeedsCreateTexture = FALSE; mIsRawImageValid = FALSE; @@ -1041,6 +1043,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mFetchPriority = 0; mDownloadProgress = 0.f; mFetchDeltaTime = 999999.f; + mRequestDeltaTime = 0.f; mForSculpt = FALSE ; mIsFetched = FALSE ; -- GitLab From 73d92f0847936f51fc0e8f12140d0880f73a2b11 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:38:02 -0800 Subject: [PATCH 214/521] CID-374 Checker: UNINIT_CTOR Function: LLPickInfo::LLPickInfo(const LLCoordGL &, unsigned int, int, int, void (*)(const LLPickInfo&)) File: /indra/newview/llviewerwindow.cpp remove some fat, dead members. --- indra/newview/llviewerwindow.cpp | 8 ++++---- indra/newview/llviewerwindow.h | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 424b84a756f..b4c73dba262 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -4849,10 +4849,10 @@ LLPickInfo::LLPickInfo() } LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, - MASK keyboard_mask, - BOOL pick_transparent, - BOOL pick_uv_coords, - void (*pick_callback)(const LLPickInfo& pick_info)) + MASK keyboard_mask, + BOOL pick_transparent, + BOOL pick_uv_coords, + void (*pick_callback)(const LLPickInfo& pick_info)) : mMousePt(mouse_pos), mKeyMask(keyboard_mask), mPickCallback(pick_callback), diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index b488276a18e..c0a9180b530 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -126,9 +126,6 @@ class LLPickInfo void updateXYCoords(); BOOL mWantSurfaceInfo; // do we populate mUVCoord, mNormal, mBinormal? - U8 mPickBuffer[PICK_DIAMETER * PICK_DIAMETER * 4]; - F32 mPickDepthBuffer[PICK_DIAMETER * PICK_DIAMETER]; - BOOL mPickParcelWall; }; -- GitLab From 373f6264082256a5c7877fb8b99336bf9cf1ca6b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:41:11 -0800 Subject: [PATCH 215/521] CID-373 Checker: UNINIT_CTOR Function: LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf *) File: /indra/newview/lltexlayer.cpp --- indra/newview/lltexlayer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index b8419e088ad..ddb6405c412 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -567,6 +567,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) : mAvatar( avatar ), mUpdatesEnabled( FALSE ), mIsVisible( TRUE ), + mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD), mInfo( NULL ) { } -- GitLab From f2e202e6a4bd033e3d9aad3197f5aa491076245b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:43:48 -0800 Subject: [PATCH 216/521] CID-368 Checker: UNINIT_CTOR Function: LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject *, LLFlexibleObjectData *) File: /indra/newview/llflexibleobject.cpp --- indra/newview/llflexibleobject.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index fc8790c1722..aea2de8e92f 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -66,6 +66,7 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD mInitializedRes = -1; mSimulateRes = 0; mFrameNum = 0; + mCollisionSphereRadius = 0.f; mRenderRes = 1; if(mVO->mDrawable.notNull()) -- GitLab From 8bf32990fcb2426a9d177da6db631a0eda2d3219 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:45:42 -0800 Subject: [PATCH 217/521] CID-367 Checker: UNINIT_CTOR Function: LLFace::LLFace(LLDrawable *, LLViewerObject *) File: /indra/newview/llface.h --- indra/newview/llface.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index eef774426a0..965ac1cad0b 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -157,6 +157,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mGeomIndex = 0; mIndicesCount = 0; mIndicesIndex = 0; + mIndexInTex = 0; mTexture = NULL; mTEOffset = -1; -- GitLab From 6c92a724a1893eceac644a65ff5660e73ba6d42e Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Wed, 27 Jan 2010 16:48:09 -0800 Subject: [PATCH 218/521] Implemented LLAppViewerMacOSX::setMasterSystemAudioMute() and LLAppViewerMacOSX::getMasterSystemAudioMute() using CoreAudio APIs. This required adding a reference to the CoreAudio framework in indra/newview/CMakeLists.txt --- indra/newview/CMakeLists.txt | 2 ++ indra/newview/llappviewermacosx.cpp | 50 ++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 7ddeb90d295..4c0c895a7df 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1064,11 +1064,13 @@ if (DARWIN) find_library(APPKIT_LIBRARY AppKit) find_library(COCOA_LIBRARY Cocoa) find_library(IOKIT_LIBRARY IOKit) + find_library(COREAUDIO_LIBRARY CoreAudio) set(viewer_LIBRARIES ${COCOA_LIBRARY} ${AGL_LIBRARY} ${IOKIT_LIBRARY} + ${COREAUDIO_LIBRARY} ) # Add resource files to the project. diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index cc38a0940cb..f8f8f50cd6c 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -50,6 +50,7 @@ #include <Carbon/Carbon.h> #include "lldir.h" #include <signal.h> +#include <CoreAudio/CoreAudio.h> // for systemwide mute class LLMediaCtrl; // for LLURLDispatcher namespace @@ -444,18 +445,57 @@ std::string LLAppViewerMacOSX::generateSerialNumber() return serial_md5; } +static AudioDeviceID get_default_audio_output_device(void) +{ + AudioDeviceID device = 0; + UInt32 size; + OSStatus err; + + size = sizeof(device); + err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device); + if(err != noErr) + { + LL_DEBUGS("SystemMute") << "Couldn't get default audio output device (0x" << std::hex << err << ")" << LL_ENDL; + } + + return device; +} + //virtual -void LLAppViewerMacOSX::setMasterSystemAudioMute(bool mute) +void LLAppViewerMacOSX::setMasterSystemAudioMute(bool new_mute) { - // XXX TODO: make this actually set the OS's audio mute state - gSavedSettings.setBOOL("MuteAudio", mute); + AudioDeviceID device = get_default_audio_output_device(); + + if(device != 0) + { + UInt32 mute = new_mute; + OSStatus err = AudioDeviceSetProperty(device, NULL, 0, false, kAudioDevicePropertyMute, sizeof(mute), &mute); + if(err != noErr) + { + LL_INFOS("SystemMute") << "Couldn't set audio mute property (0x" << std::hex << err << ")" << LL_ENDL; + } + } } //virtual bool LLAppViewerMacOSX::getMasterSystemAudioMute() { - // XXX TODO: make this actually get the OS's audio mute state - return gSavedSettings.getBOOL("MuteAudio"); + // Assume the system isn't muted + UInt32 mute = 0; + + AudioDeviceID device = get_default_audio_output_device(); + + if(device != 0) + { + UInt32 size = sizeof(mute); + OSStatus err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyMute, &size, &mute); + if(err != noErr) + { + LL_DEBUGS("SystemMute") << "Couldn't get audio mute property (0x" << std::hex << err << ")" << LL_ENDL; + } + } + + return (mute != 0); } OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn) -- GitLab From 63aef899bc6274d2b7fd90de8ed7e01cb6bb7359 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:49:51 -0800 Subject: [PATCH 219/521] CID-365 Checker: UNINIT_CTOR Function: LLSurfacePatch::LLSurfacePatch() File: /indra/newview/llsurfacepatch.cpp --- indra/newview/llsurfacepatch.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 0ce794addb6..48e4a6ccc75 100644 --- a/indra/newview/llsurfacepatch.cpp +++ b/indra/newview/llsurfacepatch.cpp @@ -60,6 +60,7 @@ LLSurfacePatch::LLSurfacePatch() : mHeightsGenerated(FALSE), mDataOffset(0), mDataZ(NULL), + mDataNorm(NULL), mVObjp(NULL), mOriginRegion(0.f, 0.f, 0.f), mCenterRegion(0.f, 0.f, 0.f), @@ -355,12 +356,14 @@ void LLSurfacePatch::calcNormal(const U32 x, const U32 y, const U32 stride) normal %= c2; normal.normVec(); + llassert(mDataNorm); *(mDataNorm + surface_stride * y + x) = normal; } const LLVector3 &LLSurfacePatch::getNormal(const U32 x, const U32 y) const { U32 surface_stride = mSurfacep->getGridsPerEdge(); + llassert(mDataNorm); return *(mDataNorm + surface_stride * y + x); } @@ -402,6 +405,7 @@ void LLSurfacePatch::updateVerticalStats() U32 i, j, k; F32 z, total; + llassert(mDataZ); z = *(mDataZ); mMinZ = z; -- GitLab From 056ca2ae5c1a145483c75e85fa7b1bee746b2627 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:51:46 -0800 Subject: [PATCH 220/521] CID-359 Checker: UNINIT_CTOR Function: LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture *, const LLUUID &) File: /indra/newview/lllocaltextureobject.cpp --- indra/newview/lllocaltextureobject.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp index 6bcbe6f58ca..69eb5fce2fc 100644 --- a/indra/newview/lllocaltextureobject.cpp +++ b/indra/newview/lllocaltextureobject.cpp @@ -47,7 +47,9 @@ LLLocalTextureObject::LLLocalTextureObject() : mImage = NULL; } -LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) +LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) : + mIsBakedReady(FALSE), + mDiscard(MAX_DISCARD_LEVEL+1) { mImage = image; gGL.getTexUnit(0)->bind(mImage); -- GitLab From ce436d20f09269dd3715b29a1ed0addb132b35cb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:53:18 -0800 Subject: [PATCH 221/521] CID-360 Checker: UNINIT_CTOR Function: LLViewerVisualParamInfo::LLViewerVisualParamInfo() File: /indra/newview/llviewervisualparam.cpp --- indra/newview/llviewervisualparam.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp index b088ef07305..fad398e00b2 100644 --- a/indra/newview/llviewervisualparam.cpp +++ b/indra/newview/llviewervisualparam.cpp @@ -46,6 +46,7 @@ LLViewerVisualParamInfo::LLViewerVisualParamInfo() : mWearableType( WT_INVALID ), + mCrossWearable(FALSE), mCamDist( 0.5f ), mCamAngle( 0.f ), mCamElevation( 0.f ), -- GitLab From d9661c3d2a26dd4379a6f57dc8227ee2e73f8ec6 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:57:10 -0800 Subject: [PATCH 222/521] CID-358 Checker: UNINIT_CTOR Function: LLTextureCache::Entry::Entry() File: /indra/newview/lltexturecache.h --- indra/newview/lltexturecache.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 4203cbbc433..64ec881fc31 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -59,7 +59,12 @@ class LLTextureCache : public LLWorkerThread }; struct Entry { - Entry() {} + Entry() : + mBodySize(0), + mImageSize(0), + mTime(0) + { + } Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) : mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {} void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; } -- GitLab From 6d68de504f7ffd356f465916fe8bac26de47d5ae Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 16:58:58 -0800 Subject: [PATCH 223/521] CID-355 Checker: UNINIT_CTOR Function: LLVOVolume::LLVOVolume(const LLUUID &, unsigned char, LLViewerRegion *) File: /indra/newview/llvovolume.cpp --- indra/newview/llvovolume.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 295c0c80109..bfe38c14ba9 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -180,8 +180,10 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re mRelativeXform.setIdentity(); mRelativeXformInvTrans.setIdentity(); + mFaceMappingChanged = FALSE; mLOD = MIN_LOD; mTextureAnimp = NULL; + mVolumeChanged = FALSE; mVObjRadius = LLVector3(1,1,0.5f).length(); mNumFaces = 0; mLODChanged = FALSE; -- GitLab From 6e55c9549a31550b7dc73972462334c8b1e32f7c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 17:01:02 -0800 Subject: [PATCH 224/521] CID-354 Checker: UNINIT_CTOR Function: LLViewerJointMesh::LLViewerJointMesh() File: /indra/newview/llviewerjointmesh.cpp --- indra/newview/llviewerjointmesh.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index 5b8902dec48..1a67fc09664 100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp @@ -147,6 +147,7 @@ LLViewerJointMesh::LLViewerJointMesh() mTexture( NULL ), mLayerSet( NULL ), mTestImageName( 0 ), + mFaceIndexCount(0), mIsTransparent(FALSE) { -- GitLab From e48e9db756f55f1834256abfcc37038799cca8c0 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 17:04:43 -0800 Subject: [PATCH 225/521] CID-353 Checker: UNINIT_CTOR Function: LLViewerJoint::LLViewerJoint() File: /indra/newview/llviewerjoint.cpp --- indra/newview/llviewerjoint.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index c2591ac8d7d..c425d95ff80 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -66,6 +66,7 @@ LLViewerJoint::LLViewerJoint() mMinPixelArea = DEFAULT_LOD; mPickName = PN_DEFAULT; mVisible = TRUE; + mMeshID = 0; } -- GitLab From 0d2ce43c545b40a3ce5a90bc894b79ae8b11b726 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 27 Jan 2010 17:06:49 -0800 Subject: [PATCH 226/521] CID-348 Checker: UNINIT_CTOR Function: LLViewerShaderMgr::LLViewerShaderMgr() File: /indra/newview/llviewershadermgr.cpp --- indra/newview/llviewershadermgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 6dc9f5c4652..86b1a8c9100 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -135,7 +135,8 @@ LLGLSLShader gLuminanceGatherProgram; GLint gAvatarMatrixParam; LLViewerShaderMgr::LLViewerShaderMgr() : - mVertexShaderLevel(SHADER_COUNT, 0) + mVertexShaderLevel(SHADER_COUNT, 0), + mMaxAvatarShaderLevel(0) { /// Make sure WL Sky is the first program mShaderList.push_back(&gWLSkyProgram); -- GitLab From 52bd13e1f5cd661ff359e36be8c0496d06c19d1c Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Wed, 27 Jan 2010 17:21:16 -0800 Subject: [PATCH 227/521] Fix for broken mac build (surplus comma in the LLToolBar constructor initializers). --- indra/newview/lltoolbar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 6df574a21ae..e7dc7ae522c 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -100,7 +100,7 @@ LLToolBar::LLToolBar() mInventoryAutoOpen(FALSE), mNumUnreadIMs(0) #if LL_DARWIN - , mResizeHandle(NULL), + , mResizeHandle(NULL) #endif // LL_DARWIN { setIsChrome(TRUE); -- GitLab From ab68d36518dc8a320b465217e89e1207ee4b00fd Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Thu, 28 Jan 2010 08:22:26 +0200 Subject: [PATCH 228/521] working on normal EXT-4261 Cannot use Keyboard to navigate to search result in my landmarks tab --HG-- branch : product-engine --- indra/newview/llfolderview.cpp | 100 +++++++++++++++++++++++ indra/newview/llfolderview.h | 5 ++ indra/newview/llplacesinventorypanel.cpp | 17 ++++ indra/newview/llplacesinventorypanel.h | 2 + 4 files changed, 124 insertions(+) diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index b833c611bfb..c6135d3bc3c 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (next == last_selected) { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } return FALSE; } setSelection( next, FALSE, TRUE ); } + else + { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; + } } scrollToShowSelection(); mSearchString.clear(); @@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (prev == this) { + // If case we are in accordion tab notify parent to go to the previous accordion + if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; } setSelection( prev, FALSE, TRUE ); @@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition() } } +bool LLFolderView::selectFirstItem() +{ + for (folders_t::iterator iter = mFolders.begin(); + iter != mFolders.end();) + { + LLFolderViewFolder* folder = (*iter ); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getNextFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + + } + for(items_t::iterator iit = mItems.begin(); + iit != mItems.end(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} +bool LLFolderView::selectLastItem() +{ + for(items_t::reverse_iterator iit = mItems.rbegin(); + iit != mItems.rend(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + for (folders_t::reverse_iterator iter = mFolders.rbegin(); + iter != mFolders.rend();) + { + LLFolderViewFolder* folder = (*iter); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} + + +S32 LLFolderView::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + setFocus(true); + selectFirstItem(); + return 1; + + } + else if(str_action == "select_last") + { + setFocus(true); + selectLastItem(); + return 1; + } + } + return 0; +} + ///---------------------------------------------------------------------------- /// Local function definitions diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 89e1865e353..56ebdfcf79d 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -266,6 +266,8 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler LLPanel* getParentPanel() { return mParentPanel; } // DEBUG only void dumpSelectionInformation(); + + virtual S32 notify(const LLSD& info) ; private: void updateRenamerPosition(); @@ -278,6 +280,9 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler void finishRenamingItem( void ); void closeRenamer( void ); + + bool selectFirstItem(); + bool selectLastItem(); protected: LLHandle<LLView> mPopupMenuHandle; diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 4de953a59d9..8edeebaeebe 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState() getRootFolder()->scrollToShowSelection(); } +S32 LLPlacesInventoryPanel::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + return getRootFolder()->notify(info); + } + else if(str_action == "select_last") + { + return getRootFolder()->notify(info); + } + } + return 0; +} + /************************************************************************/ /* PROTECTED METHODS */ /************************************************************************/ diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 7b34045d32b..86937e7c7fc 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -57,6 +57,8 @@ class LLPlacesInventoryPanel : public LLInventoryPanel void saveFolderState(); void restoreFolderState(); + virtual S32 notify(const LLSD& info) ; + private: LLSaveFolderState* mSavedFolderState; }; -- GitLab From 3c616d627bcaa28e0e7d31eb8f6c04e3847adb3d Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Thu, 28 Jan 2010 09:16:13 +0200 Subject: [PATCH 229/521] fix for EXT-4742 Group Info panel state resets on save --HG-- branch : product-engine --- indra/newview/llpanelgroup.cpp | 15 ++++++++++++--- indra/newview/llpanelgroup.h | 7 +------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index 1d447a22d73..23db7ad226b 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild() LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), - mAllowEdit( TRUE ) - ,mShowingNotifyDialog(false) + mSkipRefresh(FALSE), + mShowingNotifyDialog(false) { // Set up the factory callbacks. // Roles sub tabs @@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild() button = getChild<LLButton>("btn_refresh"); button->setClickedCallback(onBtnRefresh, this); - button->setVisible(mAllowEdit); getChild<LLButton>("btn_create")->setVisible(false); @@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab) std::string apply_mesg; if(tab->apply( apply_mesg ) ) + { + //we skip refreshing group after ew manually apply changes since its very annoying + //for those who are editing group + mSkipRefresh = TRUE; return true; + } if ( !apply_mesg.empty() ) { @@ -539,6 +543,11 @@ void LLPanelGroup::draw() void LLPanelGroup::refreshData() { + if(mSkipRefresh) + { + mSkipRefresh = FALSE; + return; + } LLGroupMgr::getInstance()->clearGroupData(getID()); setGroupID(getID()); diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 8c846956771..6e23eedffbe 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -85,9 +85,6 @@ class LLPanelGroup : public LLPanel, virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - - static void refreshCreatedGroup(const LLUUID& group_id); static void showNotice(const std::string& subject, @@ -126,7 +123,7 @@ class LLPanelGroup : public LLPanel, LLTimer mRefreshTimer; - BOOL mAllowEdit; + BOOL mSkipRefresh; std::string mDefaultNeedsApplyMesg; std::string mWantApplyMesg; @@ -169,8 +166,6 @@ class LLPanelGroupTab : public LLPanel virtual BOOL isVisibleByAgent(LLAgent* agentp); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - virtual void setGroupID(const LLUUID& id) {mGroupID = id;}; void notifyObservers() {}; -- GitLab From b80cd227042f8e461fa0a2f9a5ae3b448842b863 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Thu, 28 Jan 2010 09:50:06 +0200 Subject: [PATCH 230/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- removed using of the LM Prefix while renaming Inventori item --HG-- branch : product-engine --- indra/newview/llviewerinventory.cpp | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index f7529dd553f..a3cbd80c84f 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1310,27 +1310,10 @@ void LLViewerInventoryItem::setSortField(S32 sortField) LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField); } +// *TODO: mantipov: REMOVE, EXT-3985 void LLViewerInventoryItem::rename(const std::string& n) { - using std::string; - - string new_name(n); - LLStringUtil::replaceNonstandardASCII(new_name, ' '); - LLStringUtil::replaceChar(new_name, '|', ' '); - LLStringUtil::trim(new_name); - LLStringUtil::truncate(new_name, DB_INV_ITEM_NAME_STR_LEN); - - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); - - if (separatorPos < string::npos) - { - mName.replace(separatorPos + 1, string::npos, new_name); - } - else - { - mName = new_name; - } + LLInventoryItem::rename(n); } const LLPermissions& LLViewerInventoryItem::getPermissions() const -- GitLab From 1631ca7173d77576ed18fb35b1843c5a28cbb5e4 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Thu, 28 Jan 2010 10:34:12 +0200 Subject: [PATCH 231/521] fix for normal EXT-4512 [BSI] Can't minimize Mini-Map also this fix EXT-2119 even if its marked as fixed... --HG-- branch : product-engine --- indra/newview/llfloatermap.cpp | 1 + indra/newview/skins/default/xui/en/floater_map.xml | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index d18f127f851..568f4b254e1 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild() sendChildToBack(getDragHandle()); setIsChrome(TRUE); + getDragHandle()->setTitleVisible(TRUE); // keep onscreen gFloaterView->adjustToFitScreen(this, FALSE); diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 3a5ceed5fb6..3ddb7bc3494 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,14 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater legacy_header_height="18" - can_minimize="false" + can_minimize="true" can_resize="true" + center_horiz="true" + center_vert="true" follows="top|right" height="225" layout="topleft" min_height="60" min_width="174" name="Map" + title="Mini Map" help_topic="map" save_rect="true" save_visibility="true" -- GitLab From 03861037aff2c22a544fb0055ecb52156fb48bc6 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Thu, 28 Jan 2010 11:32:02 +0200 Subject: [PATCH 232/521] fix for normal EXT-3807 ABOUT LAND/OBJECTS: (i) icon is badly positioned now I wonder how was this working before... --HG-- branch : product-engine --- indra/llui/llscrolllistctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 78386220d93..478e270c986 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1534,7 +1534,7 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index) S32 rect_bottom = getRowOffsetFromIndex(row_index); LLScrollListColumn* columnp = getColumn(column_index); cell_rect.setOriginAndSize(rect_left, rect_bottom, - rect_left + columnp->getWidth(), mLineHeight); + /*rect_left + */columnp->getWidth(), mLineHeight); return cell_rect; } -- GitLab From b1fa6bb3421f5a281b36156a04fcbe0ab6b4bcfb Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Thu, 28 Jan 2010 11:42:20 +0200 Subject: [PATCH 233/521] fix for EXT-4186 List items are displayed as links in the FlatList if match URL regexp allow_html attribute was updated for titles of group list items, group info panel, landmark info panel and for a title of floaters. --HG-- branch : product-engine --- indra/llui/lldraghandle.cpp | 1 + .../newview/skins/default/xui/en/panel_group_info_sidetray.xml | 1 + indra/newview/skins/default/xui/en/panel_group_list_item.xml | 1 + indra/newview/skins/default/xui/en/panel_landmark_info.xml | 1 + indra/newview/skins/default/xui/en/panel_place_profile.xml | 2 ++ 5 files changed, 6 insertions(+) diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index a93c6666486..832f1489020 100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp @@ -113,6 +113,7 @@ void LLDragHandleTop::setTitle(const std::string& title) params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT); params.font_shadow(LLFontGL::DROP_SHADOW_SOFT); params.use_ellipses = true; + params.allow_html = false; //cancel URL replacement in floater title mTitleBox = LLUICtrlFactory::create<LLTextBox> (params); addChild( mTitleBox ); } diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 0893c204e76..1968d96205c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -37,6 +37,7 @@ background_visible="true" top="2" width="23" /> <text + allow_html="false" follows="top|left|right" font="SansSerifHugeBold" height="26" diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index c243d08b97e..b674b39d9b1 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml @@ -36,6 +36,7 @@ top="2" width="20" /> <text + allow_html="false" follows="left|right" font="SansSerifSmall" height="15" diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index 67a4edbf32b..396699ad6c1 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -229,6 +229,7 @@ value="Title:" width="290" /> <text + allow_html="false" follows="left|top" height="22" layout="topleft" 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 8fc2ae39f0a..7ac771de27e 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -246,6 +246,7 @@ </layout_panel> </layout_stack> <text + allow_html="false" follows="left|top|right" font="SansSerifLarge" height="14" @@ -258,6 +259,7 @@ value="SampleRegion" width="290" /> <text + allow_html="false" follows="left|top|right" height="14" layout="topleft" -- GitLab From d002c705b7b1772194b78f8c405e3907e76f445c Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Thu, 28 Jan 2010 11:10:10 +0000 Subject: [PATCH 234/521] EXT-4693: First steps at using remote inspector. Now Object IMs that get sent to your local chat window will have secondlife:///app/objectim SLapps, which will open the remote object inspector for that object, not the avatar inspector. However, we don't have all the information needed for the remote object inspector, so I'm going to have to investigate extending the inspector to request the missing information from the server. --- indra/newview/llchathistory.cpp | 46 ++++++++++++++++++++++++++++++- indra/newview/llviewermessage.cpp | 2 +- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index d6a7edee5b4..fd438001e1a 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -35,6 +35,7 @@ #include "llinstantmessage.h" #include "llchathistory.h" +#include "llcommandhandler.h" #include "llpanel.h" #include "lluictrlfactory.h" #include "llscrollcontainer.h" @@ -46,6 +47,7 @@ #include "llfloaterreg.h" #include "llmutelist.h" #include "llstylemap.h" +#include "llslurl.h" #include "lllayoutstack.h" #include "llagent.h" @@ -55,6 +57,38 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history"); const static std::string NEW_LINE(rawstr_to_utf8("\n")); +// support for secondlife:///app/objectim/{UUID}/ SLapps +class LLObjectIMHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLObjectIMHandler() : LLCommandHandler("objectim", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + if (params.size() < 1) + { + return false; + } + + LLUUID object_id; + if (!object_id.set(params[0], FALSE)) + { + return false; + } + + LLSD payload; + payload["object_id"] = object_id; + payload["owner_id"] = query_map["owner"]; + payload["name"] = query_map["name"]; + payload["slurl"] = query_map["slurl"]; + payload["group_owned"] = query_map["groupowned"]; + LLFloaterReg::showInstance("inspect_remote_object", payload); + return true; + } +}; +LLObjectIMHandler gObjectIMHandler; + class LLChatHistoryHeader: public LLPanel { public: @@ -524,7 +558,17 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ if (utf8str_trim(chat.mFromName).size() != 0) { // Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text. - if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) + if ( chat.mSourceType == CHAT_SOURCE_OBJECT ) + { + std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, ""); + url += "?name=" + chat.mFromName; + + LLStyle::Params link_params(style_params); + link_params.color.control = "HTMLLinkColor"; + link_params.link_href = url; + mEditor->appendText(chat.mFromName + delimiter, false, link_params); + } + else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) { LLStyle::Params link_params(style_params); link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID)); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d6ce356c4b0..e190c8c44ab 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2236,7 +2236,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["SESSION_NAME"] = session_name; if (from_group) { - payload["groupowned"] = "true"; + payload["group_owned"] = "true"; } LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload); } -- GitLab From b3e25e1fbd9cfccc0363cb436ad4302ead974859 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Thu, 28 Jan 2010 12:27:17 +0000 Subject: [PATCH 235/521] EXT-4693: More robust remote object inspector. Disable buttons when we don't have enough information to perform their function, and don't display a SLurl if we don't know the object's location. --- indra/newview/llinspectremoteobject.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index e4d2eec242b..898f1cd9acd 100644 --- a/indra/newview/llinspectremoteobject.cpp +++ b/indra/newview/llinspectremoteobject.cpp @@ -31,17 +31,16 @@ #include "llviewerprecompiledheaders.h" +#include "llfloaterreg.h" #include "llinspectremoteobject.h" #include "llinspect.h" -#include "llslurl.h" #include "llmutelist.h" -#include "llurlaction.h" #include "llpanelblockedlist.h" -#include "llfloaterreg.h" +#include "llslurl.h" +#include "lltrans.h" #include "llui.h" #include "lluictrl.h" - -class LLViewerObject; +#include "llurlaction.h" ////////////////////////////////////////////////////////////////////////////// // LLInspectRemoteObject @@ -183,11 +182,25 @@ void LLInspectRemoteObject::update() owner = LLSLURL::buildCommand("agent", mOwnerID, "about"); } } + else + { + owner = LLTrans::getString("Unknown"); + } getChild<LLUICtrl>("object_owner")->setValue(owner); // display the object's SLurl - click it to teleport - std::string url = "secondlife:///app/teleport/" + mSLurl; + std::string url; + if (! mSLurl.empty()) + { + std::string url = "secondlife:///app/teleport/" + mSLurl; + } getChild<LLUICtrl>("object_slurl")->setValue(url); + + // disable the Map button if we don't have a SLurl + getChild<LLUICtrl>("map_btn")->setEnabled(! mSLurl.empty()); + + // disable the Block button if we don't have the owner ID + getChild<LLUICtrl>("block_btn")->setEnabled(! mOwnerID.isNull()); } ////////////////////////////////////////////////////////////////////////////// -- GitLab From f6fceac081a1f2d165679ce3eb233e97806cebe7 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Thu, 28 Jan 2010 15:51:49 +0200 Subject: [PATCH 236/521] fixed EXT-3841 [BSI] "Send IM..." choosable in IM floater context menu --HG-- branch : product-engine --- indra/llcommon/llchat.h | 4 +++- indra/newview/llchathistory.cpp | 8 ++++++++ indra/newview/llimfloater.cpp | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 5af79910068..46456882baa 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -87,7 +87,8 @@ class LLChat mTimeStr(), mPosAgent(), mURL(), - mChatStyle(CHAT_STYLE_NORMAL) + mChatStyle(CHAT_STYLE_NORMAL), + mSessionID() { } std::string mText; // UTF-8 line of text @@ -102,6 +103,7 @@ class LLChat LLVector3 mPosAgent; std::string mURL; EChatStyle mChatStyle; + LLUUID mSessionID; }; #endif diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index d6a7edee5b4..2cdbd18996c 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -34,6 +34,7 @@ #include "llinstantmessage.h" +#include "llimview.h" #include "llchathistory.h" #include "llpanel.h" #include "lluictrlfactory.h" @@ -183,6 +184,7 @@ class LLChatHistoryHeader: public LLPanel void setup(const LLChat& chat,const LLStyle::Params& style_params) { mAvatarID = chat.mFromID; + mSessionID = chat.mSessionID; mSourceType = chat.mSourceType; gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4)); if(chat.mFromID.isNull()) @@ -305,6 +307,11 @@ class LLChatHistoryHeader: public LLPanel menu->setItemEnabled("Remove Friend", false); } + if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID)) + { + menu->setItemVisible("Send IM", false); + } + menu->buildDrawLabels(); menu->updateParent(LLMenuGL::sMenuContainer); LLMenuGL::showPopup(this, menu, x, y); @@ -344,6 +351,7 @@ class LLChatHistoryHeader: public LLPanel std::string mFirstName; std::string mLastName; std::string mFrom; + LLUUID mSessionID; S32 mMinUserNameWidth; }; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 73597e7de33..c0f22fcea22 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -599,6 +599,7 @@ void LLIMFloater::updateMessages() LLChat chat; chat.mFromID = from_id; + chat.mSessionID = mSessionID; chat.mFromName = from; chat.mText = message; chat.mTimeStr = time; -- GitLab From 8f89681e068365a2c352c76eb408b99784621c04 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Thu, 28 Jan 2010 20:06:57 +0200 Subject: [PATCH 237/521] Fixed normal bug (EXT-4610) [BSI] parcel settings icons do not match parcel settings - Changed parcel settings behavior to match viewer 1.23. --HG-- branch : product-engine --- indra/newview/lllocationinputctrl.cpp | 6 ++++-- indra/newview/llviewerparcelmgr.cpp | 4 ++-- .../newview/skins/default/xui/en/widgets/location_input.xml | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 7f49a7defb5..050cfcc3d92 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -39,6 +39,7 @@ #include "llbutton.h" #include "llfocusmgr.h" #include "llmenugl.h" +#include "llparcel.h" #include "llstring.h" #include "lltrans.h" #include "lluictrlfactory.h" @@ -672,11 +673,12 @@ void LLLocationInputCtrl::refreshParcelIcons() if (show_properties) { LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); - bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false); + LLParcel* agent_parcel = vpm->getAgentParcel(); + bool allow_buy = vpm->canAgentBuyParcel( agent_parcel, false); bool allow_voice = vpm->allowAgentVoice(); bool allow_fly = vpm->allowAgentFly(); bool allow_push = vpm->allowAgentPush(); - bool allow_build = vpm->allowAgentBuild(); + bool allow_build = agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. bool allow_scripts = vpm->allowAgentScripts(); bool allow_damage = vpm->allowAgentDamage(); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 10a95443f1f..b3450a8f367 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -706,8 +706,8 @@ bool LLViewerParcelMgr::allowAgentScripts() const bool LLViewerParcelMgr::allowAgentDamage() const { LLViewerRegion* region = gAgent.getRegion(); - return region && region->getAllowDamage() - && mAgentParcel && mAgentParcel->getAllowDamage(); + return (region && region->getAllowDamage()) + || (mAgentParcel && mAgentParcel->getAllowDamage()); } BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 1c0a8ba7c5e..70a58b8e030 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -96,7 +96,7 @@ name="damage_icon" width="14" height="13" - top="25" + top="21" left="2" follows="right|top" image_name="Parcel_Damage_Dark" -- GitLab From fbe21db8572c6d0e6a429a3ca209da6e26badf56 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Thu, 28 Jan 2010 20:07:25 +0200 Subject: [PATCH 238/521] No ticket. Fixed possible build error. --HG-- branch : product-engine --- indra/newview/llpanelplaces.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 5de78b15951..110d7a10547 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -32,9 +32,9 @@ #ifndef LL_LLPANELPLACES_H #define LL_LLPANELPLACES_H -#include "llpanel.h" +#include "lltimer.h" -class LLTimer; +#include "llpanel.h" class LLInventoryItem; class LLFilterEditor; -- GitLab From 1b46e8894a40d46df948a034dd0413e97147748d Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Thu, 28 Jan 2010 17:17:55 +0200 Subject: [PATCH 239/521] Fixed normal bug EXT-4734 - In profile side-panels, area for homepage URL appears clickable without URL. --HG-- branch : product-engine --- indra/newview/llpanelavatar.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index fe5b20813ac..48dd5513bdc 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -635,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) childSetValue("2nd_life_pic", avatar_data->image_id); childSetValue("real_world_pic", avatar_data->fl_image_id); childSetValue("homepage_edit", avatar_data->profile_url); + + // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" + childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); } void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data) -- GitLab From fee014bd82cd78f07bcc88c45109a1ea2b2eee24 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Thu, 28 Jan 2010 15:38:55 +0000 Subject: [PATCH 240/521] EXT-4693: Pass through owner ID to remote object inspector. Plumbing to pass the owner ID for a chatting object down into the LLChatHistory::appendMessage() method where we create the objectim SLapp that will bring up the remote object inspector. Pheww. For object notifications that are displayed as text chat, we --- indra/newview/llchathistory.cpp | 16 +++++++++++++++- indra/newview/llchathistory.h | 7 +++++-- indra/newview/llnearbychat.cpp | 6 ++++-- indra/newview/llnearbychat.h | 2 +- indra/newview/llnearbychathandler.cpp | 4 ++-- indra/newview/llnearbychathandler.h | 2 +- indra/newview/llnotificationhandler.h | 2 +- indra/newview/llnotificationmanager.cpp | 7 ++++--- indra/newview/llnotificationmanager.h | 2 +- indra/newview/llviewermessage.cpp | 13 +++++++++---- 10 files changed, 43 insertions(+), 18 deletions(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index fd438001e1a..dd9f0c2ebed 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -50,6 +50,8 @@ #include "llslurl.h" #include "lllayoutstack.h" #include "llagent.h" +#include "llviewerregion.h" +#include "llworld.h" #include "llsidetray.h"//for blocked objects panel @@ -491,8 +493,9 @@ void LLChatHistory::clear() mLastFromID = LLUUID::null; } -void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params) +void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params) { + bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean(); if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty()) { mUnreadChatSources.insert(chat.mFromName); @@ -560,9 +563,20 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ // Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text. if ( chat.mSourceType == CHAT_SOURCE_OBJECT ) { + // for object IMs, create a secondlife:///app/objectim SLapp std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, ""); url += "?name=" + chat.mFromName; + url += "&owner=" + args["owner_id"].asString(); + LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent); + if (region) + { + S32 x, y, z; + LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z); + url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z); + } + + // set the link for the object name to be the objectim SLapp LLStyle::Params link_params(style_params); link_params.color.control = "HTMLLinkColor"; link_params.link_href = url; diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index c2c60e60cf9..32600bb71d0 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -113,11 +113,14 @@ class LLChatHistory : public LLUICtrl * Appends a widget message. * If last user appended message, concurs with current user, * separator is added before the message, otherwise header is added. + * The args LLSD contains: + * - use_plain_text_chat_history (bool) - whether to add message as plain text. + * - owner_id (LLUUID) - the owner ID for object chat * @param chat - base chat message. - * @param use_plain_text_chat_history - whether to add message as plain text. + * @param args - additional arguments * @param input_append_params - font style. */ - void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params()); + void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params()); /*virtual*/ void clear(); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 0a8d020b4ff..90482eb74d4 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -153,7 +153,7 @@ std::string appendTime() } -void LLNearbyChat::addMessage(const LLChat& chat,bool archive) +void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args) { if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) { @@ -184,7 +184,9 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive) if (!chat.mMuted) { tmp_chat.mFromName = chat.mFromName; - mChatHistory->appendMessage(chat, use_plain_text_chat_history); + LLSD chat_args = args; + chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history; + mChatHistory->appendMessage(chat, chat_args); } if(archive) diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 938b77df7ac..5fb8ade19e7 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -47,7 +47,7 @@ class LLNearbyChat: public LLDockableFloater ~LLNearbyChat(); BOOL postBuild (); - void addMessage (const LLChat& message,bool archive = true); + void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD()); void onNearbyChatContextMenuItemClicked(const LLSD& userdata); bool onNearbyChatCheckContextMenuItem(const LLSD& userdata); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index a1a9d84c14b..c08ca30babe 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -319,7 +319,7 @@ void LLNearbyChatHandler::initChannel() -void LLNearbyChatHandler::processChat(const LLChat& chat_msg) +void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) { if(chat_msg.mMuted == TRUE) return; @@ -337,7 +337,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) //if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) // tmp_chat.mFromName = tmp_chat.mFromID.asString(); } - nearby_chat->addMessage(chat_msg); + nearby_chat->addMessage(chat_msg, true, args); if(nearby_chat->getVisible()) return;//no need in toast if chat is visible diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index fb2abac6a47..01a6de56103 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -45,7 +45,7 @@ class LLNearbyChatHandler : public LLChatHandler virtual ~LLNearbyChatHandler(); - virtual void processChat(const LLChat& chat_msg); + virtual void processChat(const LLChat& chat_msg, const LLSD &args); protected: virtual void onDeleteToast(LLToast* toast); diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 0fb438bfe98..e57674d31c7 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -135,7 +135,7 @@ class LLChatHandler : public LLEventHandler public: virtual ~LLChatHandler() {}; - virtual void processChat(const LLChat& chat_msg)=0; + virtual void processChat(const LLChat& chat_msg, const LLSD &args)=0; }; /** diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 66bc217d158..4401bb953f9 100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp @@ -107,16 +107,17 @@ bool LLNotificationManager::onNotification(const LLSD& notify) } //-------------------------------------------------------------------------- -void LLNotificationManager::onChat(const LLChat& msg,ENotificationType type) +void LLNotificationManager::onChat(const LLChat& msg, const LLSD &args) { - switch(type) + // check ENotificationType argument + switch(args["type"].asInteger()) { case NT_NEARBYCHAT: { LLNearbyChatHandler* handle = dynamic_cast<LLNearbyChatHandler*>(mNotifyHandlers["nearbychat"].get()); if(handle) - handle->processChat(msg); + handle->processChat(msg, args); } break; default: //no need to handle all enum types diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index 072fc6f24c3..575aa69c4d3 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -66,7 +66,7 @@ class LLNotificationManager : public LLSingleton<LLNotificationManager> bool onNotification(const LLSD& notification); // this method reacts on chat notifications and calls an appropriate handler - void onChat(const LLChat& msg,ENotificationType type); + void onChat(const LLChat& msg, const LLSD &args); // get a handler for a certain type of notification LLEventHandler* getHandlerForNotification(std::string notification_type); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 43c30b4c524..f24fe07065e 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2545,7 +2545,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) // Object owner for objects msg->getUUID("ChatData", "OwnerID", owner_id); - + msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp); chat.mSourceType = (EChatSourceType)source_temp; @@ -2574,7 +2574,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) if (chatter) { chat.mPosAgent = chatter->getPositionAgent(); - + // Make swirly things only for talking objects. (not script debug messages, though) if (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) @@ -2719,8 +2719,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) chat.mMuted = is_muted && !is_linden; - LLNotificationsUI::LLNotificationManager::instance().onChat( - chat, LLNotificationsUI::NT_NEARBYCHAT); + // pass owner_id to chat so that we can display the remote + // object inspect for an object that is chatting with you + LLSD args; + args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + args["owner_id"] = owner_id; + + LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); } } -- GitLab From da08cc05af85ac334cabd943a5d9fcbcaa1500b6 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Thu, 28 Jan 2010 18:28:08 +0200 Subject: [PATCH 241/521] fixed win build --HG-- branch : product-engine --- indra/newview/lllocationhistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index f494f7d7c1d..47139758e59 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) { { mItems.erase(mItems.begin(), mItems.end()-max_items); } - llassert(mItems.size() <= max_items); + llassert((S32) mItems.size() <= max_items); } /* -- GitLab From 70b6d603ed5b8915c6dace4ba6d017bbc1484955 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Thu, 28 Jan 2010 18:30:58 +0200 Subject: [PATCH 242/521] got rid of LLFloaterIMPanel usage for EXT-1196 Stalls on startup in LLPanelFriends::refreshNames --HG-- branch : product-engine --- indra/newview/llfloaterchatterbox.cpp | 4 +- indra/newview/llimview.cpp | 237 +------------------------- indra/newview/llimview.h | 28 +-- indra/newview/llmutelist.cpp | 6 - indra/newview/lltoolbar.cpp | 12 +- 5 files changed, 19 insertions(+), 268 deletions(-) diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp index 84b423399e2..774caaec904 100644 --- a/indra/newview/llfloaterchatterbox.cpp +++ b/indra/newview/llfloaterchatterbox.cpp @@ -216,11 +216,11 @@ void LLFloaterChatterBox::onOpen(const LLSD& key) } else if (key.isDefined()) { - LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); + /*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); if (impanel) { impanel->openFloater(); - } + }*/ } } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index c4b1d7a9f4b..213862df4ba 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -538,13 +538,6 @@ void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, con gIMMgr->startCall(new_session_id); } } - - //*TODO remove this "floater" stuff when Communicate Floater is gone - LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(old_session_id); - if (floater) - { - floater->sessionInitReplyReceived(new_session_id); - } } void LLIMModel::testMessages() @@ -679,15 +672,6 @@ bool LLIMModel::proccessOnlineOfflineNotification( const LLUUID& session_id, const std::string& utf8_text) { - // Add message to old one floater - LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id); - if ( floater ) - { - if ( !utf8_text.empty() ) - { - floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor")); - } - } // Add system message to history return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text); } @@ -955,9 +939,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text, history_echo += ": " + utf8_text; - LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id); - if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID()); - LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); if (speaker_mgr) { @@ -1275,33 +1256,16 @@ LLUUID LLIMMgr::computeSessionID( return session_id; } -inline LLFloater* getFloaterBySessionID(const LLUUID session_id) -{ - LLFloater* floater = NULL; - if ( gIMMgr ) - { - floater = dynamic_cast < LLFloater* > - ( gIMMgr->findFloaterBySession(session_id) ); - } - if ( !floater ) - { - floater = dynamic_cast < LLFloater* > - ( LLIMFloater::findInstance(session_id) ); - } - return floater; -} - void LLIMMgr::showSessionStartError( const std::string& error_string, const LLUUID session_id) { - const LLFloater* floater = getFloaterBySessionID (session_id); - if (!floater) return; + if (!hasSession(session_id)) return; LLSD args; args["REASON"] = LLTrans::getString(error_string); - args["RECIPIENT"] = floater->getTitle(); + args["RECIPIENT"] = LLIMModel::getInstance()->getName(session_id); LLSD payload; payload["session_id"] = session_id; @@ -1339,12 +1303,11 @@ LLIMMgr::showSessionForceClose( const std::string& reason_string, const LLUUID session_id) { - const LLFloater* floater = getFloaterBySessionID (session_id); - if (!floater) return; + if (!hasSession(session_id)) return; LLSD args; - args["NAME"] = floater->getTitle(); + args["NAME"] = LLIMModel::getInstance()->getName(session_id); args["REASON"] = LLTrans::getString(reason_string); LLSD payload; @@ -1366,7 +1329,7 @@ LLIMMgr::onConfirmForceCloseError( //only 1 option really LLUUID session_id = notification["payload"]["session_id"]; - LLFloater* floater = getFloaterBySessionID (session_id); + LLFloater* floater = LLIMFloater::findInstance(session_id); if ( floater ) { floater->closeFloater(FALSE); @@ -2144,7 +2107,6 @@ void LLIMMgr::addMessage( return; } - LLFloaterIMPanel* floater; LLUUID new_session_id = session_id; if (new_session_id.isNull()) { @@ -2163,32 +2125,7 @@ void LLIMMgr::addMessage( if (new_session) { LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id); - } - - floater = findFloaterBySession(new_session_id); - if (!floater) - { - floater = findFloaterBySession(other_participant_id); - if (floater) - { - llinfos << "found the IM session " << session_id - << " by participant " << other_participant_id << llendl; - } - } - - // create IM window as necessary - if(!floater) - { - floater = createFloater( - new_session_id, - other_participant_id, - fixed_session_name, - dialog, - FALSE); - } - if (new_session) - { // When we get a new IM, and if you are a god, display a bit // of information about the source. This is to help liaisons // when answering questions. @@ -2207,50 +2144,13 @@ void LLIMMgr::addMessage( //<< "*** region_id: " << region_id << std::endl //<< "*** position: " << position << std::endl; - floater->addHistoryLine(bonus_info.str(), LLUIColorTable::instance().getColor("SystemChatColor")); LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str()); } make_ui_sound("UISndNewIncomingIMSession"); } - // now add message to floater - bool is_from_system = target_id.isNull() || (from == SYSTEM_FROM); - const LLColor4& color = ( is_from_system ? - LLUIColorTable::instance().getColor("SystemChatColor") : - LLUIColorTable::instance().getColor("IMChatColor")); - if ( !link_name ) - { - floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally - } - else - { - floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message - } - LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); - - if( !LLFloaterReg::instanceVisible("communicate") && !floater->getVisible()) - { - LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance(); - - //if the IM window is not open and the floater is not visible (i.e. not torn off) - LLFloater* previouslyActiveFloater = chat_floater->getActiveFloater(); - - // select the newly added floater (or the floater with the new line added to it). - // it should be there. - chat_floater->selectFloater(floater); - - //there was a previously unseen IM, make that old tab flashing - //it is assumed that the most recently unseen IM tab is the one current selected/active - if ( previouslyActiveFloater && getIMReceived() ) - { - chat_floater->setFloaterFlashing(previouslyActiveFloater, TRUE); - } - - //notify of a new IM - notifyNewIM(); - } } void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args) @@ -2414,21 +2314,6 @@ LLUUID LLIMMgr::addSession( LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids, voice); } - //*TODO remove this "floater" thing when Communicate Floater's gone - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if(!floater) - { - // On creation, use the first element of ids as the - // "other_participant_id" - floater = createFloater( - session_id, - other_participant_id, - name, - dialog, - TRUE, - ids); - } - //we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions if (!new_session) return session_id; @@ -2439,7 +2324,7 @@ LLUUID LLIMMgr::addSession( // Only warn for regular IMs - not group IMs if( dialog == IM_NOTHING_SPECIAL ) { - noteMutedUsers(session_id, floater, ids); + noteMutedUsers(session_id, ids); } return session_id; @@ -2460,14 +2345,6 @@ void LLIMMgr::removeSession(const LLUUID& session_id) { llassert_always(hasSession(session_id)); - //*TODO remove this floater thing when Communicate Floater is being deleted (IB) - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if(floater) - { - mFloaters.erase(floater->getHandle()); - LLFloaterChatterBox::getInstance()->removeFloater(floater); - } - clearPendingInvitation(session_id); clearPendingAgentListUpdates(session_id); @@ -2577,50 +2454,12 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri LLFloaterReg::showInstance("incoming_call", payload, TRUE); } +//*TODO disconnects all sessions void LLIMMgr::disconnectAllSessions() { - LLFloaterIMPanel* floater = NULL; - std::set<LLHandle<LLFloater> >::iterator handle_it; - for(handle_it = mFloaters.begin(); - handle_it != mFloaters.end(); - ) - { - floater = (LLFloaterIMPanel*)handle_it->get(); - - // MUST do this BEFORE calling floater->onClose() because that may remove the item from the set, causing the subsequent increment to crash. - ++handle_it; - - if (floater) - { - floater->setEnabled(FALSE); - floater->closeFloater(TRUE); - } - } + //*TODO disconnects all IM sessions } - -// This method returns the im panel corresponding to the uuid -// provided. The uuid can either be a session id or an agent -// id. Returns NULL if there is no matching panel. -LLFloaterIMPanel* LLIMMgr::findFloaterBySession(const LLUUID& session_id) -{ - LLFloaterIMPanel* rv = NULL; - std::set<LLHandle<LLFloater> >::iterator handle_it; - for(handle_it = mFloaters.begin(); - handle_it != mFloaters.end(); - ++handle_it) - { - rv = (LLFloaterIMPanel*)handle_it->get(); - if(rv && session_id == rv->getSessionID()) - { - break; - } - rv = NULL; - } - return rv; -} - - BOOL LLIMMgr::hasSession(const LLUUID& session_id) { return LLIMModel::getInstance()->findIMSession(session_id) != NULL; @@ -2804,49 +2643,14 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id) return im_session->mStartedAsIMCall; } -// create a floater and update internal representation for -// consistency. Returns the pointer, caller (the class instance since -// it is a private method) is not responsible for deleting the -// pointer. Add the floater to this but do not select it. -LLFloaterIMPanel* LLIMMgr::createFloater( - const LLUUID& session_id, - const LLUUID& other_participant_id, - const std::string& session_label, - EInstantMessage dialog, - BOOL user_initiated, - const LLDynamicArray<LLUUID>& ids) -{ - if (session_id.isNull()) - { - llwarns << "Creating LLFloaterIMPanel with null session ID" << llendl; - } - - llinfos << "LLIMMgr::createFloater: from " << other_participant_id - << " in session " << session_id << llendl; - LLFloaterIMPanel* floater = new LLFloaterIMPanel(session_label, - session_id, - other_participant_id, - ids, - dialog); - LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END; - LLFloaterChatterBox::getInstance()->addFloater(floater, FALSE, i_pt); - mFloaters.insert(floater->getHandle()); - return floater; -} - void LLIMMgr::noteOfflineUsers( const LLUUID& session_id, - LLFloaterIMPanel* floater, const LLDynamicArray<LLUUID>& ids) { S32 count = ids.count(); if(count == 0) { const std::string& only_user = LLTrans::getString("only_user_message"); - if (floater) - { - floater->addHistoryLine(only_user, LLUIColorTable::instance().getColor("SystemChatColor")); - } LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, only_user); } else @@ -2870,7 +2674,7 @@ void LLIMMgr::noteOfflineUsers( } } -void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater, +void LLIMMgr::noteMutedUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids) { // Don't do this if we don't have a mute list. @@ -2891,9 +2695,6 @@ void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater { LLUIString muted = LLTrans::getString("muted_message"); - //*TODO remove this "floater" thing when Communicate Floater's gone - floater->addHistoryLine(muted); - im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, muted); break; } @@ -2914,12 +2715,6 @@ void LLIMMgr::processIMTypingStop(const LLIMInfo* im_info) void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing) { LLUUID session_id = computeSessionID(im_info->mIMType, im_info->mFromID); - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if (floater) - { - floater->processIMTyping(im_info, typing); - } - LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { @@ -2965,15 +2760,6 @@ class LLViewerChatterBoxSessionStartReply : public LLHTTPNode speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id)); } - LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id); - if (floaterp) - { - if ( body.has("session_info") ) - { - floaterp->processSessionUpdate(body["session_info"]); - } - } - LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { @@ -3068,11 +2854,6 @@ class LLViewerChatterBoxSessionUpdate : public LLHTTPNode const LLSD& input) const { LLUUID session_id = input["body"]["session_id"].asUUID(); - LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id); - if (floaterp) - { - floaterp->processSessionUpdate(input["body"]["info"]); - } LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 0386ff234dd..17406025f21 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -41,7 +41,6 @@ class LLFloaterChatterBox; class LLUUID; -class LLFloaterIMPanel; class LLFriendObserver; class LLCallDialogManager; class LLIMSpeakerMgr; @@ -386,11 +385,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr> BOOL hasSession(const LLUUID& session_id); - // This method returns the im panel corresponding to the uuid - // provided. The uuid must be a session id. Returns NULL if there - // is no matching panel. - LLFloaterIMPanel* findFloaterBySession(const LLUUID& session_id); - static LLUUID computeSessionID(EInstantMessage dialog, const LLUUID& other_participant_id); void clearPendingInvitation(const LLUUID& session_id); @@ -402,10 +396,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr> const LLSD& updates); void clearPendingAgentListUpdates(const LLUUID& session_id); - //HACK: need a better way of enumerating existing session, or listening to session create/destroy events - //@deprecated, is used only by LLToolBox, which is not used anywhere, right? (IB) - const std::set<LLHandle<LLFloater> >& getIMFloaterHandles() { return mFloaters; } - void addSessionObserver(LLIMSessionObserver *); void removeSessionObserver(LLIMSessionObserver *); @@ -436,23 +426,12 @@ class LLIMMgr : public LLSingleton<LLIMMgr> */ void removeSession(const LLUUID& session_id); - // create a panel and update internal representation for - // consistency. Returns the pointer, caller (the class instance - // since it is a private method) is not responsible for deleting - // the pointer. - LLFloaterIMPanel* createFloater(const LLUUID& session_id, - const LLUUID& target_id, - const std::string& name, - EInstantMessage dialog, - BOOL user_initiated = FALSE, - const LLDynamicArray<LLUUID>& ids = LLDynamicArray<LLUUID>()); - // This simple method just iterates through all of the ids, and // prints a simple message if they are not online. Used to help // reduce 'hello' messages to the linden employees unlucky enough // to have their calling card in the default inventory. - void noteOfflineUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); - void noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); + void noteOfflineUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids); + void noteMutedUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids); void processIMTypingCore(const LLIMInfo* im_info, BOOL typing); @@ -464,9 +443,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr> private: - //*TODO should be deleted when Communicate Floater is being deleted - std::set<LLHandle<LLFloater> > mFloaters; - typedef std::list <LLIMSessionObserver *> session_observers_list_t; session_observers_list_t mSessionObservers; diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index c1666f56667..45e5408b1e7 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -472,12 +472,6 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n if (reason == LLMuteList::AR_IM) { - LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id); - if (timp) - { - timp->addHistoryLine(message); - } - LLIMModel::getInstance()->addMessage(agent_id, SYSTEM_FROM, LLUUID::null, message); } } diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index e7dc7ae522c..4a66d88fa28 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -290,7 +290,7 @@ void LLToolBar::updateCommunicateList() std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it; - if (gIMMgr->getIMFloaterHandles().size() > 0) + /*if (gIMMgr->getIMFloaterHandles().size() > 0) { communicate_button->addSeparator(ADD_TOP); } @@ -316,7 +316,7 @@ void LLToolBar::updateCommunicateList() } itemp = communicate_button->addElement(im_sd, ADD_TOP); } - } + }*/ communicate_button->setValue(selected); } @@ -340,7 +340,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } else if (selected_option.asString() == "redock") { - LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance(); + /*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance(); if(chatterbox_instance) { chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE); @@ -361,7 +361,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } } LLFloaterReg::showInstance("communicate", session_to_show); - } + }*/ } else if (selected_option.asString() == "mute list") { @@ -369,11 +369,11 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle { - LLFloaterReg::toggleInstance("communicate"); + /*LLFloaterReg::toggleInstance("communicate");*/ } else // otherwise selection_option is undifined or a specific IM session id { - LLFloaterReg::showInstance("communicate", selected_option); + /*LLFloaterReg::showInstance("communicate", selected_option);*/ } } -- GitLab From 69c676c6eb90be2cf251db1cdc57e94e0357e706 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Thu, 28 Jan 2010 18:34:42 +0200 Subject: [PATCH 243/521] got rid of llimpanel.h includes for EXT-1196 Stalls on startup in LLPanelFriends::refreshNames --HG-- branch : product-engine --- indra/newview/llmutelist.cpp | 1 - indra/newview/lltoolbar.cpp | 1 - indra/newview/llviewerfloaterreg.cpp | 1 - 3 files changed, 3 deletions(-) diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 45e5408b1e7..2d3c4b187e8 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -58,7 +58,6 @@ #include "llagent.h" #include "llviewergenericmessage.h" // for gGenericDispatcher #include "llworld.h" //for particle system banning -#include "llimpanel.h" #include "llimview.h" #include "llnotifications.h" #include "llviewerobjectlist.h" diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 4a66d88fa28..1177aba84e7 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -70,7 +70,6 @@ #include "llviewerwindow.h" #include "lltoolgrab.h" #include "llcombobox.h" -#include "llimpanel.h" #include "lllayoutstack.h" #if LL_DARWIN diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index e87d380e4df..89afc7822be 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -69,7 +69,6 @@ #include "llfloaterhud.h" #include "llfloaterimagepreview.h" #include "llimfloater.h" -#include "llimpanel.h" #include "llfloaterinspect.h" #include "llfloaterinventory.h" #include "llfloaterjoystick.h" -- GitLab From cbde80b8795cddf21125652ef8987e023b650e32 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Thu, 28 Jan 2010 18:40:51 +0200 Subject: [PATCH 244/521] got rid of llfloaterfriends.h includes for EXT-1196 Stalls on startup in LLPanelFriends::refreshNames --HG-- branch : product-engine --- indra/newview/lltoolbar.cpp | 7 +++---- indra/newview/llviewerfloaterreg.cpp | 1 - indra/newview/llvoiceclient.cpp | 2 -- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 1177aba84e7..404eab9249b 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -54,7 +54,6 @@ #include "lltooldraganddrop.h" #include "llfloaterinventory.h" #include "llfloaterchatterbox.h" -#include "llfloaterfriends.h" #include "llfloatersnapshot.h" #include "llinventorypanel.h" #include "lltoolmgr.h" @@ -264,12 +263,12 @@ void LLToolBar::updateCommunicateList() communicate_button->removeall(); - LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater(); + //LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater(); LLScrollListItem* itemp = NULL; LLSD contact_sd; contact_sd["value"] = "contacts"; - contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); + /*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); if (LLFloaterMyFriends::getInstance() == frontmost_floater) { contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; @@ -279,7 +278,7 @@ void LLToolBar::updateCommunicateList() { selected = "contacts"; } - } + }*/ itemp = communicate_button->addElement(contact_sd, ADD_TOP); communicate_button->addSeparator(ADD_TOP); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 89afc7822be..3aca11963a2 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -156,7 +156,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>); LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>); LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); - LLFloaterReg::add("contacts", "floater_my_friends.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMyFriends>); LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDayCycle>); LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>); diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 8ca0fd6ef6c..02a2d8c8cfe 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -72,8 +72,6 @@ #include "llvoavatarself.h" #include "llvoicechannel.h" -#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel - // for base64 decoding #include "apr_base64.h" -- GitLab From 9a4d075f3b8ab1ccf760187beeb81f9bf17e69b1 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Thu, 28 Jan 2010 16:57:37 +0000 Subject: [PATCH 245/521] Fix signed/unsigned comparison build failure on Windows for lllocationhistory.cpp --- indra/newview/lllocationhistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index f494f7d7c1d..df93930d33a 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) { { mItems.erase(mItems.begin(), mItems.end()-max_items); } - llassert(mItems.size() <= max_items); + llassert((S32)mItems.size() <= max_items); } /* -- GitLab From 12c61ac4d514610da388ae445f526f4a1d645a00 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Thu, 28 Jan 2010 19:32:18 +0200 Subject: [PATCH 246/521] Fixed normal bug EXT-4616 - Combobox labels no longer appear. --HG-- branch : product-engine --- indra/llui/llcombobox.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index f29e8785eb0..9d23daf56d9 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -103,7 +103,8 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p) mPrearrangeCallback(p.prearrange_callback()), mTextEntryCallback(p.text_entry_callback()), mListPosition(p.list_position), - mLastSelectedIndex(-1) + mLastSelectedIndex(-1), + mLabel(p.label) { // Text label button @@ -490,6 +491,7 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p) params.handle_edit_keys_directly(true); params.commit_on_focus_lost(false); params.follows.flags(FOLLOWS_ALL); + params.label(mLabel); mTextEntry = LLUICtrlFactory::create<LLLineEditor> (params); mTextEntry->setText(cur_label); mTextEntry->setIgnoreTab(TRUE); @@ -505,7 +507,8 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p) mButton->setRect(rect); mButton->setTabStop(TRUE); mButton->setHAlign(LLFontGL::LEFT); - + mButton->setLabel(mLabel.getString()); + if (mTextEntry) { mTextEntry->setVisible(FALSE); @@ -633,7 +636,7 @@ void LLComboBox::hideList() if(mLastSelectedIndex >= 0) mList->selectNthItem(mLastSelectedIndex); } - else + else if(mLastSelectedIndex >= 0) mList->selectNthItem(mLastSelectedIndex); mButton->setToggleState(FALSE); -- GitLab From 3b0e95bf3c36896b21cd6e82bda2d6ceaf356320 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Thu, 28 Jan 2010 20:10:40 +0200 Subject: [PATCH 247/521] Renamed some members of LLToastIMPanel to make them self-explanatory. --HG-- branch : product-engine --- indra/newview/lltoastimpanel.cpp | 14 +++++++------- indra/newview/lltoastimpanel.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index d62017cc2f0..7717ae9e011 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -41,14 +41,14 @@ const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6; //-------------------------------------------------------------------------- LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notification), - mAvatar(NULL), mUserName(NULL), + mAvatarIcon(NULL), mAvatarName(NULL), mTime(NULL), mMessage(NULL) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); - mAvatar = getChild<LLAvatarIconCtrl>("avatar_icon"); - mUserName = getChild<LLTextBox>("user_name"); + mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAvatarName = getChild<LLTextBox>("user_name"); mTime = getChild<LLTextBox>("time_box"); mMessage = getChild<LLTextBox>("message"); @@ -77,22 +77,22 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mMessage->setValue(p.message); } - mUserName->setValue(p.from); + mAvatarName->setValue(p.from); mTime->setValue(p.time); mSessionID = p.session_id; mNotification = p.notification; if(p.from == SYSTEM_FROM) { - mAvatar->setVisible(FALSE); + mAvatarIcon->setVisible(FALSE); sys_msg_icon->setVisible(TRUE); } else { - mAvatar->setVisible(TRUE); + mAvatarIcon->setVisible(TRUE); sys_msg_icon->setVisible(FALSE); - mAvatar->setValue(p.avatar_id); + mAvatarIcon->setValue(p.avatar_id); } S32 maxLinesCount; diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 53661f2cf69..42d9a97c3f8 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -63,8 +63,8 @@ class LLToastIMPanel: public LLToastPanel LLNotificationPtr mNotification; LLUUID mSessionID; - LLAvatarIconCtrl* mAvatar; - LLTextBox* mUserName; + LLAvatarIconCtrl* mAvatarIcon; + LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; }; -- GitLab From 9cfc1f33b230f52f194d725a8accc44423f0ad19 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:20:27 -0800 Subject: [PATCH 248/521] CID-323 Checker: UNINIT_CTOR Function: LLUIString::LLUIString() File: /indra/llui/lluistring.h --- indra/llui/lluistring.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h index 7ec0fd603a1..32cfc0d9cd7 100644 --- a/indra/llui/lluistring.h +++ b/indra/llui/lluistring.h @@ -64,7 +64,7 @@ class LLUIString public: // These methods all perform appropriate argument substitution // and modify mOrig where appropriate - LLUIString() {} + LLUIString() : mNeedsResult(false), mNeedsWResult(false) {} LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args); LLUIString(const std::string& instring) { assign(instring); } -- GitLab From 7ba57dfe101ecd220d9a26a0a2b759305ead0d0f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:23:09 -0800 Subject: [PATCH 249/521] CID-324 Checker: UNINIT_CTOR Function: LLStyle::LLStyle(const LLStyle::Params &) File: /indra/llui/llstyle.cpp --- indra/llui/llstyle.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp index 71511f69a41..b8f93b6a0ea 100644 --- a/indra/llui/llstyle.cpp +++ b/indra/llui/llstyle.cpp @@ -49,7 +49,10 @@ LLStyle::Params::Params() LLStyle::LLStyle(const LLStyle::Params& p) -: mVisible(p.visible), +: mItalic(FALSE), + mBold(FALSE), + mUnderline(FALSE), + mVisible(p.visible), mColor(p.color()), mReadOnlyColor(p.readonly_color()), mFont(p.font()), -- GitLab From 0d5a6ea3c008664935e297c4856d3c7f5387412b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:25:09 -0800 Subject: [PATCH 250/521] CID-331 Checker: UNINIT_CTOR Function: LLPrimitive::LLPrimitive() File: /indra/llprimitive/llprimitive.cpp --- indra/llprimitive/llprimitive.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index 5ad758072c9..b75d1b0f678 100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -154,6 +154,7 @@ bool LLPrimitive::cleanupVolumeManager() //=============================================================== LLPrimitive::LLPrimitive() : mTextureList(), + mNumTEs(0), mMiscFlags(0) { mPrimitiveCode = 0; -- GitLab From 6bce7146e64f6dbb189a3bcad392ddf91a676696 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:26:38 -0800 Subject: [PATCH 251/521] CID-338 Checker: UNINIT_CTOR Function: LLToolTipMgr::LLToolTipMgr() File: /indra/llui/lltooltip.cpp --- indra/llui/lltooltip.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 01c7a81309c..173fde8e766 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -400,7 +400,8 @@ bool LLToolTip::hasClickCallback() // LLToolTipMgr::LLToolTipMgr() -: mToolTip(NULL), +: mToolTipsBlocked(false), + mToolTip(NULL), mNeedsToolTip(false) {} -- GitLab From 139e8be4e169d6cc28157668b6eb6682dd2a88e3 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:28:41 -0800 Subject: [PATCH 252/521] CID-339 Checker: UNINIT_CTOR Function: LLMenuGL::LLMenuGL(const LLMenuGL::Params &) File: /indra/llui/llmenugl.cpp --- indra/llui/llmenugl.cpp | 5 +++-- indra/llui/llmenugl.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index ceb1e9820eb..7fa9a880591 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1651,6 +1651,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) mBackgroundColor( p.bg_color() ), mBgVisible( p.bg_visible ), mDropShadowed( p.drop_shadow ), + mHasSelection(false), mHorizontalLayout( p.horizontal_layout ), mScrollable(mHorizontalLayout ? FALSE : p.scrollable), // Scrolling is supported only for vertical layout mMaxScrollableItems(p.max_scrollable_items), @@ -2813,7 +2814,7 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask ) ((LLMenuItemGL*)viewp)->setHighlight(TRUE); LLMenuGL::setKeyboardMode(FALSE); } - mHasSelection = TRUE; + mHasSelection = true; } } } @@ -2892,7 +2893,7 @@ void LLMenuGL::setVisible(BOOL visible) } else { - mHasSelection = FALSE; + mHasSelection = true; mFadeTimer.stop(); } diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 61e06f9e5f9..8441aaadd49 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -546,7 +546,7 @@ class LLMenuGL LLHandle<LLView> mParentMenuItem; LLUIString mLabel; BOOL mDropShadowed; // Whether to drop shadow - BOOL mHasSelection; + bool mHasSelection; LLFrameTimer mFadeTimer; LLTimer mScrollItemsTimer; BOOL mTornOff; -- GitLab From 50bf40a6313e1e8fd076ad3465dc9777e6a8e83b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:30:57 -0800 Subject: [PATCH 253/521] CID-343 Checker: UNINIT_CTOR Function: LLFloaterView::LLFloaterView(const LLUICtrl::Params &) File: /indra/llui/llfloater.cpp --- indra/llui/llfloater.cpp | 5 +++-- indra/llui/llfloater.h | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 79d8f90fec6..de46d89d6f7 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1916,9 +1916,10 @@ static LLDefaultChildRegistry::Register<LLFloaterView> r("floater_view"); LLFloaterView::LLFloaterView (const Params& p) : LLUICtrl (p), + mFocusCycleMode(FALSE), - mSnapOffsetBottom(0) - ,mSnapOffsetRight(0) + mSnapOffsetBottom(0), + mSnapOffsetRight(0) { } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index f70495c0f03..8c9dacbd207 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -468,9 +468,6 @@ class LLFloaterView : public LLUICtrl void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; } private: - S32 mColumn; - S32 mNextLeft; - S32 mNextTop; BOOL mFocusCycleMode; S32 mSnapOffsetBottom; S32 mSnapOffsetRight; -- GitLab From 8da9a472b212d8d8d376a32a442fbf61baa1fae4 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:36:21 -0800 Subject: [PATCH 254/521] CID-383 Checker: UNINIT_CTOR Function: LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD &) File: /indra/newview/llfloaterhardwaresettings.cpp --- indra/newview/llfloaterhardwaresettings.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 31b494b590d..b2564eb2b65 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -50,7 +50,17 @@ #include "llsliderctrl.h" LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key) - : LLFloater(key) + : LLFloater(key), + + // these should be set on imminent refresh() call, + // but init them anyway + mUseVBO(0), + mUseAniso(0), + mFSAASamples(0), + mGamma(0.0), + mVideoCardMem(0), + mFogRatio(0.0), + mProbeHardwareOnStartup(FALSE) { //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml"); } -- GitLab From d91225b6addbb0febd43e58550626dfa33c56ca8 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:38:19 -0800 Subject: [PATCH 255/521] CID-382 Checker: UNINIT_CTOR Function: LLCallDialog::LLCallDialog(const LLSD &) File: /indra/newview/llimview.cpp --- indra/newview/llimview.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index c4b1d7a9f4b..12546643301 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1498,9 +1498,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLCallDialog //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -LLCallDialog::LLCallDialog(const LLSD& payload) : -LLDockableFloater(NULL, false, payload), -mPayload(payload) +LLCallDialog::LLCallDialog(const LLSD& payload) + : LLDockableFloater(NULL, false, payload), + + mPayload(payload), + mLifetime(DEFAULT_LIFETIME) { } -- GitLab From a5f88abb95ff2afe5a8f9e34e39806eb579828fe Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:40:10 -0800 Subject: [PATCH 256/521] CID-381 Checker: UNINIT_CTOR Function: LLFloaterAnimPreview::LLFloaterAnimPreview(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/newview/llfloateranimpreview.cpp --- indra/newview/llfloateranimpreview.h | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index dd2c0b809ae..3ee1f419ab2 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -127,7 +127,6 @@ class LLFloaterAnimPreview : public LLFloaterNameDesc LLRectf mPreviewImageRect; LLAssetID mMotionID; LLTransactionID mTransactionID; - BOOL mEnabled; LLAnimPauseRequest mPauseRequest; std::map<std::string, LLUUID> mIDList; -- GitLab From 7bd7f0d0ff5f929ea2d34a78b902ea136501865c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:44:34 -0800 Subject: [PATCH 257/521] CID-380 Checker: UNINIT_CTOR Function: LLFloaterSnapshot::Impl::Impl() File: /indra/newview/llfloatersnapshot.cpp --- indra/newview/llfloatersnapshot.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index afb58c94074..94c7ff6f947 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1028,7 +1028,8 @@ class LLFloaterSnapshot::Impl public: Impl() : mAvatarPauseHandles(), - mLastToolset(NULL) + mLastToolset(NULL), + mAspectRatioCheckOff(false) { } ~Impl() @@ -1079,7 +1080,7 @@ class LLFloaterSnapshot::Impl LLToolset* mLastToolset; LLHandle<LLView> mPreviewHandle; - BOOL mAspectRatioCheckOff ; + bool mAspectRatioCheckOff ; }; // static @@ -1606,7 +1607,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde if(0 == index) //current window size { - view->impl.mAspectRatioCheckOff = TRUE ; + view->impl.mAspectRatioCheckOff = true ; view->childSetEnabled("keep_aspect_check", FALSE) ; if(previewp) @@ -1616,7 +1617,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde } else if(-1 == index) //custom { - view->impl.mAspectRatioCheckOff = FALSE ; + view->impl.mAspectRatioCheckOff = false ; //if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType")) { view->childSetEnabled("keep_aspect_check", TRUE) ; @@ -1629,7 +1630,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde } else { - view->impl.mAspectRatioCheckOff = TRUE ; + view->impl.mAspectRatioCheckOff = true ; view->childSetEnabled("keep_aspect_check", FALSE) ; if(previewp) -- GitLab From cad4ca01dc804d14c022b63e6a8541e46b1a8309 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:46:37 -0800 Subject: [PATCH 258/521] CID-379 Checker: UNINIT_CTOR Function: LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD &) File: /indra/newview/llcompilequeue.cpp --- indra/newview/llcompilequeue.cpp | 5 +++-- indra/newview/llcompilequeue.h | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 5c05a541204..a96981a1083 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -92,7 +92,8 @@ struct LLScriptQueueData // Default constructor LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) : LLFloater(key), - mDone(FALSE) + mDone(false), + mMono(false) { //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_queue.xml", FALSE); } @@ -216,7 +217,7 @@ BOOL LLFloaterScriptQueue::nextObject() } while((mObjectIDs.count() > 0) && !successful_start); if(isDone() && !mDone) { - mDone = TRUE; + mDone = true; getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done")); childSetEnabled("close",TRUE); } diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h index 063d5732393..2d061f5d8a2 100644 --- a/indra/newview/llcompilequeue.h +++ b/indra/newview/llcompilequeue.h @@ -104,10 +104,10 @@ class LLFloaterScriptQueue : public LLFloater, public LLVOInventoryListener // Object Queue LLDynamicArray<LLUUID> mObjectIDs; LLUUID mCurrentObjectID; - BOOL mDone; + bool mDone; std::string mStartString; - BOOL mMono; + bool mMono; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- GitLab From a9d86c8133960635bc8a116f68348bf447a39690 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 10:52:15 -0800 Subject: [PATCH 259/521] CID-378 Checker: UNINIT_CTOR Function: LLFloaterJoystick::LLFloaterJoystick(const LLSD &) File: /indra/newview/llfloaterjoystick.cpp --- indra/newview/llfloaterjoystick.cpp | 11 ++++++++--- indra/newview/llfloaterjoystick.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index 06fe2a84c89..78bc63ac8c4 100644 --- a/indra/newview/llfloaterjoystick.cpp +++ b/indra/newview/llfloaterjoystick.cpp @@ -52,6 +52,7 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data) { //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml"); + initFromSettings(); } void LLFloaterJoystick::draw() @@ -123,10 +124,8 @@ void LLFloaterJoystick::apply() { } -void LLFloaterJoystick::refresh() +void LLFloaterJoystick::initFromSettings() { - LLFloater::refresh(); - mJoystickEnabled = gSavedSettings.getBOOL("JoystickEnabled"); mJoystickAxis[0] = gSavedSettings.getS32("JoystickAxis0"); @@ -194,6 +193,12 @@ void LLFloaterJoystick::refresh() mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering"); } +void LLFloaterJoystick::refresh() +{ + LLFloater::refresh(); + initFromSettings(); +} + void LLFloaterJoystick::cancel() { gSavedSettings.setBOOL("JoystickEnabled", mJoystickEnabled); diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h index f3559c28e9e..7a2f497c69f 100644 --- a/indra/newview/llfloaterjoystick.h +++ b/indra/newview/llfloaterjoystick.h @@ -55,6 +55,8 @@ class LLFloaterJoystick : public LLFloater LLFloaterJoystick(const LLSD& data); virtual ~LLFloaterJoystick(); + + void initFromSettings(); static void onCommitJoystickEnabled(LLUICtrl*, void*); static void onClickRestoreSNDefaults(void*); -- GitLab From ee86a65f0450003689dcd0d52c726c876456dd28 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:07:02 -0800 Subject: [PATCH 260/521] CID-372 Checker: UNINIT_CTOR Function: LLViewerJoint::LLViewerJoint(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, LLJoint *) File: /indra/newview/llviewerjoint.cpp CID-377 Checker: UNINIT_CTOR Function: LLOfferInfo::LLOfferInfo() File: /indra/newview/llviewermessage.h --- indra/newview/llviewerjoint.cpp | 21 ++++++++++++--------- indra/newview/llviewermessage.h | 4 +++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index c425d95ff80..f5192914f41 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -59,14 +59,9 @@ BOOL LLViewerJoint::sDisableLOD = FALSE; // Class Constructor //----------------------------------------------------------------------------- LLViewerJoint::LLViewerJoint() + : LLJoint() { - mUpdateXform = TRUE; - mValid = FALSE; - mComponents = SC_JOINT | SC_BONE | SC_AXES; - mMinPixelArea = DEFAULT_LOD; - mPickName = PN_DEFAULT; - mVisible = TRUE; - mMeshID = 0; + init(); } @@ -74,13 +69,21 @@ LLViewerJoint::LLViewerJoint() // LLViewerJoint() // Class Constructor //----------------------------------------------------------------------------- -LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) : - LLJoint(name, parent) +LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) + : LLJoint(name, parent) +{ + init(); +} + + +LLViewerJoint::init() { mValid = FALSE; mComponents = SC_JOINT | SC_BONE | SC_AXES; mMinPixelArea = DEFAULT_LOD; mPickName = PN_DEFAULT; + mVisible = TRUE; + mMeshID = 0; } diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 8404d6fde02..1415c16090e 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -205,7 +205,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f struct LLOfferInfo { - LLOfferInfo() {}; + LLOfferInfo() + : mFromGroup(FALSE), mFromObject(FALSE), + mIM(IM_NOTHING_SPECIAL), mType(LLAssetType::AT_NONE) {}; LLOfferInfo(const LLSD& sd); void forceResponse(InventoryOfferResponse response); -- GitLab From 5bb7bfce1470b260b7e7b0935ca8401ff6ca9feb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:09:16 -0800 Subject: [PATCH 261/521] follow-up for CID-372 --- indra/newview/llviewerjoint.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index 08c4ec36fde..5ff766696cc 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -141,7 +141,9 @@ class LLViewerJoint : std::vector<LLViewerJointMesh*> mMeshParts; void setMeshID( S32 id ) {mMeshID = id;} -protected: +private: + void init(); + BOOL mValid; U32 mComponents; F32 mMinPixelArea; -- GitLab From 3091c30af0b862ac3bac3ba72d33df27c0f15d97 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:12:16 -0800 Subject: [PATCH 262/521] CID-370 Checker: UNINIT_CTOR Function: LLVivoxProtocolParser::LLVivoxProtocolParser() File: /indra/newview/llvoiceclient.cpp --- indra/newview/llvoiceclient.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 8ca0fd6ef6c..981fde2ffbb 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -296,8 +296,14 @@ void LLVivoxProtocolParser::reset() ignoringTags = false; accumulateText = false; energy = 0.f; + hasText = false; + hasAudio = false; + hasVideo = false; + terminated = false; ignoreDepth = 0; isChannel = false; + incoming = false; + enabled = false; isEvent = false; isLocallyMuted = false; isModeratorMuted = false; -- GitLab From 245c044e3b2b58e893c20137551fc1abda033fe5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:14:01 -0800 Subject: [PATCH 263/521] CID-369 Checker: UNINIT_CTOR Function: LLVoiceClient::sessionState::sessionState() File: /indra/newview/llvoiceclient.cpp --- indra/newview/llvoiceclient.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 981fde2ffbb..a0d42d9b5f5 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -6414,6 +6414,7 @@ void LLVoiceClient::filePlaybackSetMode(bool vox, float speed) } LLVoiceClient::sessionState::sessionState() : + mErrorStatusCode(0), mMediaStreamState(streamStateUnknown), mTextStreamState(streamStateUnknown), mCreateInProgress(false), -- GitLab From 1acf7a4a29a0f6c4ab1b88f275ae6e815d0f738e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:15:56 -0800 Subject: [PATCH 264/521] CID-364 Checker: UNINIT_CTOR Function: LLEventNotification::LLEventNotification() File: /indra/newview/lleventnotifier.cpp --- indra/newview/lleventnotifier.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index edfb9dc864f..f096ba604fc 100644 --- a/indra/newview/lleventnotifier.cpp +++ b/indra/newview/lleventnotifier.cpp @@ -174,6 +174,7 @@ void LLEventNotifier::remove(const U32 event_id) LLEventNotification::LLEventNotification() : mEventID(0), + mEventDate(0), mEventName("") { } -- GitLab From a93d2cb2193afdc305f8b8ad2e11c2e40781c27c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:21:28 -0800 Subject: [PATCH 265/521] CID-363 Checker: UNINIT_CTOR Function: LLManipTranslate::LLManipTranslate(LLToolComposite *) File: /indra/newview/llmaniptranslate.cpp --- indra/newview/llmaniptranslate.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 5f30ab4e015..52fe31fbbac 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -123,9 +123,13 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite ) mAxisArrowLength(50), mConeSize(0), mArrowLengthMeters(0.f), + mGridSizeMeters(1.f), mPlaneManipOffsetMeters(0.f), mUpdateTimer(), mSnapOffsetMeters(0.f), + mSubdivisions(10.f), + mInSnapRegime(FALSE), + mSnapped(FALSE), mArrowScales(1.f, 1.f, 1.f), mPlaneScales(1.f, 1.f, 1.f), mPlaneManipPositions(1.f, 1.f, 1.f, 1.f) -- GitLab From df2f9e7823388f03455d889bc04779a3ee93867d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:26:50 -0800 Subject: [PATCH 266/521] CID-361 Checker: UNINIT_CTOR Function: LLToolGrab::LLToolGrab(LLToolComposite *) File: /indra/newview/lltoolgrab.cpp plus followup to previous fix... --- indra/newview/llmanipscale.cpp | 1 + indra/newview/lltoolgrab.cpp | 6 ++++++ indra/newview/llviewerjoint.cpp | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 84a5eb7352b..ee3ffa2450a 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -180,6 +180,7 @@ LLManipScale::LLManipScale( LLToolComposite* composite ) mScaleSnapUnit2(1.f), mSnapRegimeOffset(0.f), mSnapGuideLength(0.f), + mInSnapRegime(FALSE), mScaleSnapValue(0.f) { mManipulatorScales = new F32[NUM_MANIPULATORS]; diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 26dbe6a4890..d837a334f17 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -78,9 +78,15 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite ) : LLTool( std::string("Grab"), composite ), mMode( GRAB_INACTIVE ), mVerticalDragging( FALSE ), + mHitLand(FALSE), + mLastMouseX(0), + mLastMouseY(0), + mAccumDeltaX(0), + mAccumDeltaY(0), mHasMoved( FALSE ), mOutsideSlop(FALSE), mDeselectedThisClick(FALSE), + mLastFace(0), mSpinGrabbing( FALSE ), mSpinRotation(), mHideBuildHighlight(FALSE) diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index f5192914f41..95f05b5f5f9 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -76,7 +76,7 @@ LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) } -LLViewerJoint::init() +void LLViewerJoint::init() { mValid = FALSE; mComponents = SC_JOINT | SC_BONE | SC_AXES; -- GitLab From 607636508d4affab833ca24b64a5bbf002ec1c9f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:29:29 -0800 Subject: [PATCH 267/521] privacy... --- indra/newview/llviewerjoint.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index 5ff766696cc..0d3092a0447 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -141,7 +141,7 @@ class LLViewerJoint : std::vector<LLViewerJointMesh*> mMeshParts; void setMeshID( S32 id ) {mMeshID = id;} -private: +protected: void init(); BOOL mValid; -- GitLab From 44dc3c0713dc3efa90a94a6005f0b491cd509456 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:37:33 -0800 Subject: [PATCH 268/521] CID-356 Checker: UNINIT_CTOR Function: LLVOSky::LLVOSky(const LLUUID &, unsigned char, LLViewerRegion *) File: /indra/newview/llvosky.cpp --- indra/newview/llvosky.cpp | 11 +++++++---- indra/newview/llvosky.h | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 5ff8f0d267d..0550ed770bf 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -343,7 +343,6 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) cloud_pos_density1 = LLColor3(); cloud_pos_density2 = LLColor3(); - mInitialized = FALSE; mbCanSelect = FALSE; mUpdateTimer.reset(); @@ -385,6 +384,10 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) mBloomTexturep->setAddressMode(LLTexUnit::TAM_CLAMP); mHeavenlyBodyUpdated = FALSE ; + + mDrawRefl = 0; + mHazeConcentration = 0.f; + mInterpVal = 0.f; } @@ -1072,10 +1075,10 @@ BOOL LLVOSky::updateSky() ++next_frame; next_frame = next_frame % cycle_frame_no; - sInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no; + mInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no; // sInterpVal = (F32)next_frame / cycle_frame_no; - LLSkyTex::setInterpVal( sInterpVal ); - LLHeavenBody::setInterpVal( sInterpVal ); + LLSkyTex::setInterpVal( mInterpVal ); + LLHeavenBody::setInterpVal( mInterpVal ); calcAtmospherics(); if (mForceUpdate || total_no_tiles == frame) diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index ef74324e58d..83669097554 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -613,7 +613,7 @@ class LLVOSky : public LLStaticViewerObject LLColor3 mLastTotalAmbient; F32 mAmbientScale; LLColor3 mNightColorShift; - F32 sInterpVal; + F32 mInterpVal; LLColor4 mFogColor; LLColor4 mGLFogCol; @@ -636,8 +636,8 @@ class LLVOSky : public LLStaticViewerObject public: //by bao //fake vertex buffer updating - //to guaranttee at least updating one VBO buffer every frame - //to walk around the bug caused by ATI card --> DEV-3855 + //to guarantee at least updating one VBO buffer every frame + //to work around the bug caused by ATI card --> DEV-3855 // void createDummyVertexBuffer() ; void updateDummyVertexBuffer() ; -- GitLab From a9c4ed26e71af48adf3d364a5005150449cc7dac Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:50:35 -0800 Subject: [PATCH 269/521] Try for a slightly cunning fix to CID-352 Checker: UNINIT_CTOR Function: LLInterp<float>::LLInterp() File: /indra/llmath/llinterp.h --- indra/llmath/llinterp.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h index 36ca2e98655..88af004170a 100644 --- a/indra/llmath/llinterp.h +++ b/indra/llmath/llinterp.h @@ -54,7 +54,7 @@ template <typename Type> class LLInterp { public: - LLInterp(); + LLInterp(); virtual ~LLInterp() {} virtual void start(); @@ -151,6 +151,7 @@ class LLInterpFunc : public LLInterp<Type> template <typename Type> LLInterp<Type>::LLInterp() +: mStartVal(Type()), mEndVal(Type()), mCurVal(Type()) { mStartTime = 0.f; mEndTime = 1.f; -- GitLab From 3d8bd2b166b86e9fa1416d20dedc111a42c2a348 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Thu, 28 Jan 2010 11:52:38 -0800 Subject: [PATCH 270/521] CID-351 Checker: UNINIT_CTOR Function: LLSelectMgr::LLSelectMgr() File: /indra/newview/llselectmgr.cpp --- indra/newview/llselectmgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 6f76715e732..bf087560510 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -218,7 +218,8 @@ LLSelectMgr::LLSelectMgr() mHoverObjects = new LLObjectSelection(); mHighlightedObjects = new LLObjectSelection(); - + mForceSelection = FALSE; + mShowSelection = FALSE; } -- GitLab From d383adfc92e099676313ed930b2c1c8b1a315ae3 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Thu, 28 Jan 2010 22:02:31 +0200 Subject: [PATCH 271/521] Fixed bug EXT-3773 (Group chat toasts should have inspectors for names). Added on-hover icons to invoke avatar inspector to IM toasts. --HG-- branch : product-engine --- indra/newview/lltoastimpanel.cpp | 37 ++++++++++++++++++++++++++++++++ indra/newview/lltoastimpanel.h | 3 +++ 2 files changed, 40 insertions(+) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index 7717ae9e011..89a58cd736a 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -33,8 +33,11 @@ #include "llviewerprecompiledheaders.h" #include "lltoastimpanel.h" +#include "llfloaterreg.h" #include "llnotifications.h" #include "llinstantmessage.h" +#include "lltooltip.h" + #include "llviewerchat.h" const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6; @@ -80,6 +83,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mAvatarName->setValue(p.from); mTime->setValue(p.time); mSessionID = p.session_id; + mAvatarID = p.avatar_id; mNotification = p.notification; if(p.from == SYSTEM_FROM) @@ -119,3 +123,36 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask) return TRUE; } + +//virtual +BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) +{ + // It's not our direct child, so parentPointInView() doesn't work. + LLRect name_rect; + mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this); + if (!name_rect.pointInRect(x, y)) + return LLToastPanel::handleToolTip(x, y, mask); + + // Spawn at right side of the name textbox. + LLRect sticky_rect = mAvatarName->calcScreenRect(); + S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16); + LLCoordGL pos(icon_x, sticky_rect.mTop); + + LLToolTip::Params params; + params.background_visible(false); + params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this)); + params.delay_time(0.0f); // spawn instantly on hover + params.image(LLUI::getUIImage("Info_Small")); + params.message(""); + params.padding(0); + params.pos(pos); + params.sticky_rect(sticky_rect); + + LLToolTipMgr::getInstance()->show(params); + return TRUE; +} + +void LLToastIMPanel::showInspector() +{ + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); +} diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 42d9a97c3f8..154e6dae16b 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -58,11 +58,14 @@ class LLToastIMPanel: public LLToastPanel LLToastIMPanel(LLToastIMPanel::Params &p); virtual ~LLToastIMPanel(); /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); private: + void showInspector(); static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; LLUUID mSessionID; + LLUUID mAvatarID; LLAvatarIconCtrl* mAvatarIcon; LLTextBox* mAvatarName; LLTextBox* mTime; -- GitLab From 683e7dc9c387297aed6b670fff1915af880562ae Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 28 Jan 2010 12:47:45 -0800 Subject: [PATCH 272/521] FIX EXT-4630 EXT-4670: Show inspector tooltip over media, don't show it if media is playing Review #91 This is a different take from my prior implementation. This has two changes to the "rules" for showing the inspector tooltip: 1. Do not show the inspector tooltip if hovering over a face that has media displaying 2. If you hover over a face with media *data* on it, show the inspector tooltip, subject to rule #1 (i.e. only if media is not displaying) --- indra/newview/lltoolpie.cpp | 40 ++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 39e71974fdc..bf1e307d717 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -910,16 +910,19 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l tooltip_msg.append( nodep->mName ); } + bool has_media = false; bool is_time_based_media = false; bool is_web_based_media = false; bool is_media_playing = false; + bool is_media_displaying = false; // Does this face have media? const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); if(tep) { - const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + has_media = tep->hasMedia(); + const LLMediaEntry* mep = has_media ? tep->getMediaData() : NULL; if (mep) { viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); @@ -927,33 +930,38 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l if (media_impl.notNull() && (media_impl->hasMedia())) { + is_media_displaying = true; LLStringUtil::format_map_t args; media_plugin = media_impl->getMediaPlugin(); if(media_plugin) - { if(media_plugin->pluginSupportsMediaTime()) - { - is_time_based_media = true; - is_web_based_media = false; - //args["[CurrentURL]"] = media_impl->getMediaURL(); - is_media_playing = media_impl->isMediaPlaying(); - } - else - { - is_time_based_media = false; - is_web_based_media = true; - //args["[CurrentURL]"] = media_plugin->getLocation(); - } + { + if(media_plugin->pluginSupportsMediaTime()) + { + is_time_based_media = true; + is_web_based_media = false; + //args["[CurrentURL]"] = media_impl->getMediaURL(); + is_media_playing = media_impl->isMediaPlaying(); + } + else + { + is_time_based_media = false; + is_web_based_media = true; + //args["[CurrentURL]"] = media_plugin->getLocation(); + } //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); } } } } + // Avoid showing tip over media that's displaying // also check the primary node since sometimes it can have an action even though // the root node doesn't - bool needs_tip = needs_tooltip(nodep) || - needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()); + bool needs_tip = !is_media_displaying && + (has_media || + needs_tooltip(nodep) || + needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode())); if (show_all_object_tips || needs_tip) { -- GitLab From a08f098847cda964bfba5476fd213e05bdf67dd0 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 10:11:53 +0200 Subject: [PATCH 273/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- implemented patch to remove LM prefixes from landmarks' names *NOTE: It will be unnecessary after the first successful session in viewer 2.0. Can be removed before public release. Implementation details: At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and updates them on the viewer and server sides. Also it calls fetching agent's inventory to process not yet loaded landmarks too. If fetching is successfully done it will store special per-agent empty file-marker in the user temporary folder (where cached inventory is loaded) while caching agent's inventory. After that in will not affect the viewer until cached marker is removed. --HG-- branch : product-engine --- indra/newview/llinventorymodel.cpp | 134 +++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 961f7adc0a5..9e96bbc55f4 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -142,6 +142,105 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item) return rv; } +/* +This namespace contains a functionality to remove LM prefixes were used to store sort order of +Favorite Landmarks in landmarks' names. +Once being in Favorites folder LM inventory Item has such prefix. +Due to another solution is implemented in EXT-3985 these prefixes should be removed. + +*NOTE: It will be unnecessary after the first successful session in viewer 2.0. +Can be removed before public release. + +Implementation details: +At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and +updates them on the viewer and server sides. +Also it calls fetching agent's inventory to process not yet loaded landmarks too. +If fetching is successfully done it will store special per-agent empty file-marker +in the user temporary folder (where cached inventory is loaded) while caching agent's inventory. +After that in will not affect the viewer until cached marker is removed. +*/ +namespace LMSortPrefix +{ + bool cleanup_done = false; + const std::string getMarkerPath() + { + std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString())); + std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str()); + + return marker_filename; + } + bool wasClean() + { + static bool was_clean = false; + static bool already_init = false; + if (already_init) return was_clean; + + already_init = true; + std::string path_to_marker = getMarkerPath(); + was_clean = LLFile::isfile(path_to_marker); + + return was_clean; + } + + void setLandmarksWereCleaned() + { + if (cleanup_done) + { + std::string path_to_marker = getMarkerPath(); + LLFILE* file = LLFile::fopen(path_to_marker, "w"); + if(!file) + { + llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl; + return; + } + + fclose(file); + } + } + + void removePrefix(LLPointer<LLViewerInventoryItem> inv_item) + { + if (wasClean()) + { + LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL; + return; + } + + if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return; + + std::string old_name = inv_item->getName(); + + S32 sort_field = -1; + std::string display_name; + BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name); + if (exists && sort_field != -1) + { + llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl; + LLUUID parent_uuid = inv_item->getParentUUID(); + if (gInventory.getCategory(parent_uuid)) + { + llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl; + } + + + // mark item completed to avoid error while copying and updating server + inv_item->setComplete(TRUE); + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item); + new_item->rename(display_name); + gInventory.updateItem(new_item); + new_item->updateServer(FALSE); + + gInventory.notifyObservers(); + } + } + + void completeCleanup() + { + // background fetch is completed. can save marker + cleanup_done = true; + } +} + ///---------------------------------------------------------------------------- /// Class LLInventoryModel ///---------------------------------------------------------------------------- @@ -1736,6 +1835,8 @@ void LLInventoryModel::stopBackgroundFetch() gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL); sBulkFetchCount=0; sMinTimeBetweenFetches=0.0f; + + LMSortPrefix::completeCleanup(); } } @@ -1882,6 +1983,13 @@ void LLInventoryModel::cache( const LLUUID& parent_folder_id, const LLUUID& agent_id) { + if (getRootFolderID() == parent_folder_id) + { + // *TODO: mantipov: can be removed before public release, EXT-3985 + //save marker to avoid fetching inventory on future sessions + LMSortPrefix::setLandmarksWereCleaned(); + } + lldebugs << "Caching " << parent_folder_id << " for " << agent_id << llendl; LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id); @@ -2692,6 +2800,28 @@ void LLInventoryModel::buildParentChildMap() // The inv tree is built. mIsAgentInvUsable = true; + {// *TODO: mantipov: can be removed before public release, EXT-3985 + /* + *HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name. + Is necessary to be called once per account after EXT-3985 is implemented. + So, let fetch agent's inventory, processing will be done in processInventoryDescendents() + Should be removed before public release. + */ + if (!LMSortPrefix::wasClean()) + { + cat_array_t cats; + item_array_t items; + collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH); + + for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it) + { + LMSortPrefix::removePrefix(*it); + } + + gInventory.startBackgroundFetch(agent_inv_root_id); + } + } + llinfos << "Inventory initialized, notifying observers" << llendl; addChangedMask(LLInventoryObserver::ALL, LLUUID::null); notifyObservers(); @@ -3457,6 +3587,10 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**) continue; } gInventory.updateItem(titem); + + {// *TODO: mantipov: can be removed before public release, EXT-3985 + LMSortPrefix::removePrefix(titem); + } } // set version and descendentcount according to message. -- GitLab From ff0fa520be6cfb753d19bd51f7bdf5b833010135 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Fri, 29 Jan 2010 10:50:39 +0200 Subject: [PATCH 274/521] fix for normal EXT-2450 [BSI] Extra column in Group panel memberlist --HG-- branch : product-engine --- indra/newview/llpanelgroupgeneral.cpp | 8 ++++++-- .../newview/skins/default/xui/en/panel_group_general.xml | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 21b253223f0..51fc670d877 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -679,6 +679,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) LLSD row; row["columns"][0]["value"] = pending.str(); + row["columns"][0]["column"] = "name"; mListVisibleMembers->setEnabled(FALSE); mListVisibleMembers->addElement(row); @@ -731,9 +732,11 @@ void LLPanelGroupGeneral::updateMembers() row["columns"][1]["value"] = member->getTitle(); row["columns"][1]["font"]["name"] = "SANSSERIF_SMALL"; row["columns"][1]["font"]["style"] = style; + + std::string status = member->getOnlineStatus(); - row["columns"][2]["column"] = "online"; - row["columns"][2]["value"] = member->getOnlineStatus(); + row["columns"][2]["column"] = "status"; + row["columns"][2]["value"] = status; row["columns"][2]["font"]["name"] = "SANSSERIF_SMALL"; row["columns"][2]["font"]["style"] = style; @@ -846,6 +849,7 @@ void LLPanelGroupGeneral::reset() { LLSD row; row["columns"][0]["value"] = "no members yet"; + row["columns"][0]["column"] = "name"; mListVisibleMembers->deleteAllItems(); mListVisibleMembers->setEnabled(FALSE); diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index af73faf9a1d..b903032ed54 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -42,17 +42,20 @@ Hover your mouse over the options for more help. height="156" layout="topleft" left="0" - right="-1" name="visible_members" top_pad="2"> <name_list.columns label="Member" name="name" - relative_width="0.6" /> + relative_width="0.4" /> <name_list.columns label="Title" name="title" relative_width="0.4" /> + <name_list.columns + label="Status" + name="status" + relative_width="0.2" /> </name_list> <text follows="left|top|right" -- GitLab From f06a2e310f71f5514f2aa62e3ca31d36f43ed213 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Fri, 29 Jan 2010 11:11:50 +0200 Subject: [PATCH 275/521] fix for normal EXT-1888 Apply button remains active after Applying changes there is no 'Allpy' button in other panels. --HG-- branch : product-engine --- .../skins/default/xui/en/panel_preferences_graphics1.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index a0fcf59fc8d..9e502557683 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -707,7 +707,8 @@ top_delta="16" width="315" /> </radio_group> - </panel> + </panel> + <button follows="left|bottom" height="23" @@ -717,7 +718,8 @@ left="10" name="Apply" top="383" - width="115"> + width="115" + visible="false"> <button.commit_callback function="Pref.Apply" /> </button> -- GitLab From 72b2cf291d67ae7a271b5745e50290d174a088b6 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 12:25:38 +0200 Subject: [PATCH 276/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- implemented cleanning of stored sort indexes to remove ones for landmarks not in Favorites while disconnecting viewer --HG-- branch : product-engine --- indra/newview/llviewerinventory.cpp | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index a3cbd80c84f..1b141532ef5 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1178,8 +1178,10 @@ const std::string& LLViewerInventoryItem::getName() const /** * Class to store sorting order of favorites landmarks in a local file. EXT-3985. * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix. + * Data are stored in user home directory. */ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> + , public LLDestroyClass<LLFavoritesOrderStorage> { public: /** @@ -1193,12 +1195,27 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> S32 getSortIndex(const LLUUID& inv_item_id); void removeSortIndex(const LLUUID& inv_item_id); + /** + * Implementation of LLDestroyClass. Calls cleanup() instance method. + * + * It is important this callback is called before gInventory is cleaned. + * For now it is called from LLAppViewer::cleanup() -> LLAppViewer::disconnectViewer(), + * Inventory is cleaned later from LLAppViewer::cleanup() after LLAppViewer::disconnectViewer() is called. + * @see cleanup() + */ + static void destroyClass(); + const static S32 NO_INDEX; private: friend class LLSingleton<LLFavoritesOrderStorage>; LLFavoritesOrderStorage() { load(); } ~LLFavoritesOrderStorage() { save(); } + /** + * Removes sort indexes for items which are not in Favorites bar for now. + */ + void cleanup(); + const static std::string SORTING_DATA_FILE_NAME; void load(); @@ -1206,6 +1223,32 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> typedef std::map<LLUUID, S32> sort_index_map_t; sort_index_map_t mSortIndexes; + + struct IsNotInFavorites + { + IsNotInFavorites(const LLInventoryModel::item_array_t& items) + : mFavoriteItems(items) + { + + } + + /** + * Returns true if specified item is not found among inventory items + */ + bool operator()(const sort_index_map_t::value_type& id_index_pair) const + { + LLPointer<LLViewerInventoryItem> item = gInventory.getItem(id_index_pair.first); + if (item.isNull()) return true; + + LLInventoryModel::item_array_t::const_iterator found_it = + std::find(mFavoriteItems.begin(), mFavoriteItems.end(), item); + + return found_it == mFavoriteItems.end(); + } + private: + LLInventoryModel::item_array_t mFavoriteItems; + }; + }; const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml"; @@ -1231,6 +1274,12 @@ void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id) mSortIndexes.erase(inv_item_id); } +// static +void LLFavoritesOrderStorage::destroyClass() +{ + LLFavoritesOrderStorage::instance().cleanup(); +} + void LLFavoritesOrderStorage::load() { // load per-resident sorting information @@ -1273,6 +1322,24 @@ void LLFavoritesOrderStorage::save() } } +void LLFavoritesOrderStorage::cleanup() +{ + const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); + + IsNotInFavorites is_not_in_fav(items); + + sort_index_map_t aTempMap; + //copy unremoved values from mSortIndexes to aTempMap + std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), + inserter(aTempMap, aTempMap.begin()), + is_not_in_fav); + + //Swap the contents of mSortIndexes and aTempMap + mSortIndexes.swap(aTempMap); +} // *TODO: mantipov: REMOVE, EXT-3985 -- GitLab From 540752ff2dcaaf565e8a9dff93079816ef572312 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 10:27:15 +0000 Subject: [PATCH 277/521] DEV-41686: Added a DisableMouseWarp debug option. Turning this option on makes alt-zooming and mouselook actually work when using Synergy. I believe this will also make it work for certain input devices, and Parallels, that control your cursor by setting its position in absolute coordinates. --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llviewerwindow.cpp | 17 ++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1ef79aeec09..f3bda19ed1f 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2377,6 +2377,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>DisableMouseWarp</key> + <map> + <key>Comment</key> + <string>Disable warping of the mouse to the center of the screen during alt-zoom and mouse look. Useful with certain input devices, mouse sharing programs like Synergy, or running under Parallels.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>DisableRendering</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b4c73dba262..8692cdcc573 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2269,15 +2269,18 @@ void LLViewerWindow::handleScrollWheel(S32 clicks) void LLViewerWindow::moveCursorToCenter() { - S32 x = getWorldViewWidthScaled() / 2; - S32 y = getWorldViewHeightScaled() / 2; + if (! gSavedSettings.getBOOL("DisableMouseWarp")) + { + S32 x = getWorldViewWidthScaled() / 2; + S32 y = getWorldViewHeightScaled() / 2; - //on a forced move, all deltas get zeroed out to prevent jumping - mCurrentMousePoint.set(x,y); - mLastMousePoint.set(x,y); - mCurrentMouseDelta.set(0,0); + //on a forced move, all deltas get zeroed out to prevent jumping + mCurrentMousePoint.set(x,y); + mLastMousePoint.set(x,y); + mCurrentMouseDelta.set(0,0); - LLUI::setMousePositionScreen(x, y); + LLUI::setMousePositionScreen(x, y); + } } -- GitLab From 4666636cdc67beb3cbb1c81107ce1f1f368385e1 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 12:34:23 +0200 Subject: [PATCH 278/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- improvements: for now sort indexes are cleaned & saved only if something was changed amont them. --HG-- branch : product-engine --- indra/newview/llviewerinventory.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 1b141532ef5..bcfb8ecbbde 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1208,7 +1208,7 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> const static S32 NO_INDEX; private: friend class LLSingleton<LLFavoritesOrderStorage>; - LLFavoritesOrderStorage() { load(); } + LLFavoritesOrderStorage() : mIsDirty(false) { load(); } ~LLFavoritesOrderStorage() { save(); } /** @@ -1224,6 +1224,8 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> typedef std::map<LLUUID, S32> sort_index_map_t; sort_index_map_t mSortIndexes; + bool mIsDirty; + struct IsNotInFavorites { IsNotInFavorites(const LLInventoryModel::item_array_t& items) @@ -1257,6 +1259,7 @@ const S32 LLFavoritesOrderStorage::NO_INDEX = -1; void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index) { mSortIndexes[inv_item_id] = sort_index; + mIsDirty = true; } S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id) @@ -1272,6 +1275,7 @@ S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id) void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id) { mSortIndexes.erase(inv_item_id); + mIsDirty = true; } // static @@ -1302,6 +1306,9 @@ void LLFavoritesOrderStorage::load() void LLFavoritesOrderStorage::save() { + // nothing to save if clean + if (!mIsDirty) return; + // If we quit from the login screen we will not have an SL account // name. Don't try to save, otherwise we'll dump a file in // C:\Program Files\SecondLife\ or similar. JC @@ -1324,6 +1331,9 @@ void LLFavoritesOrderStorage::save() void LLFavoritesOrderStorage::cleanup() { + // nothing to clean + if (!mIsDirty) return; + const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t items; -- GitLab From 8a7ca61479813f55481f1040f75cd6fc63e713d2 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 13:05:11 +0200 Subject: [PATCH 279/521] Work on major bug EXT-3985 ([BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- cleanup: removed deprecated code added for previous sollution to support custom sorting of favorite landmarks. For now previous implementation is removed, bug is FIXED. --HG-- branch : product-engine --- indra/newview/llfavoritesbar.cpp | 4 +-- indra/newview/llinventorybridge.cpp | 2 +- indra/newview/llviewerinventory.cpp | 50 ++++++----------------------- indra/newview/llviewerinventory.h | 4 --- 4 files changed, 13 insertions(+), 47 deletions(-) diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 0e42ff09d8c..57e66194703 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -685,7 +685,7 @@ void LLFavoritesBarCtrl::updateButtons() { // an child's order and mItems should be same if (button->getLandmarkId() != item->getUUID() // sort order has been changed - || button->getLabelSelected() != item->getDisplayName() // favorite's name has been changed + || button->getLabelSelected() != item->getName() // favorite's name has been changed || button->getRect().mRight < rightest_point) // favbar's width has been changed { break; @@ -780,7 +780,7 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough. * Problem will gone, if we stretch out the button. For that reason I have to put additional 20 pixels. */ - int requred_width = mFont->getWidth(item->getDisplayName()) + 20; + int requred_width = mFont->getWidth(item->getName()) + 20; int width = requred_width > def_button_width? def_button_width : requred_width; LLFavoriteLandmarkButton* fav_btn = NULL; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 6c9c7d15be8..e04d3ec5a01 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -5079,7 +5079,7 @@ void LLLandmarkBridgeAction::doIt() payload["asset_id"] = item->getAssetUUID(); LLSD args; - args["LOCATION"] = item->getDisplayName(); + args["LOCATION"] = item->getName(); LLNotificationsUtil::add("TeleportFromLandmark", args, payload); } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index bcfb8ecbbde..30019926304 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1172,7 +1172,7 @@ const std::string& LLViewerInventoryItem::getName() const return linked_category->getName(); } - return getDisplayName(); + return LLInventoryItem::getName(); } /** @@ -1340,42 +1340,17 @@ void LLFavoritesOrderStorage::cleanup() gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); IsNotInFavorites is_not_in_fav(items); - - sort_index_map_t aTempMap; - //copy unremoved values from mSortIndexes to aTempMap - std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), - inserter(aTempMap, aTempMap.begin()), - is_not_in_fav); - - //Swap the contents of mSortIndexes and aTempMap - mSortIndexes.swap(aTempMap); -} + sort_index_map_t aTempMap; + //copy unremoved values from mSortIndexes to aTempMap + std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), + inserter(aTempMap, aTempMap.begin()), + is_not_in_fav); -// *TODO: mantipov: REMOVE, EXT-3985 -const std::string& LLViewerInventoryItem::getDisplayName() const -{ - return LLInventoryItem::getName(); -/* - std::string result; - BOOL hasSortField = extractSortFieldAndDisplayName(0, &result); - - mDisplayName = LLInventoryItem::getName(); - - return mDisplayName = hasSortField ? result : LLInventoryItem::getName(); -*/ + //Swap the contents of mSortIndexes and aTempMap + mSortIndexes.swap(aTempMap); } -// *TODO: mantipov: REMOVE, EXT-3985 -// static -std::string LLViewerInventoryItem::getDisplayName(const std::string& name) -{ - llassert(false); - std::string result; - BOOL hasSortField = extractSortFieldAndDisplayName(name, 0, &result); - - return hasSortField ? result : name; -} S32 LLViewerInventoryItem::getSortField() const { @@ -1387,12 +1362,6 @@ void LLViewerInventoryItem::setSortField(S32 sortField) LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField); } -// *TODO: mantipov: REMOVE, EXT-3985 -void LLViewerInventoryItem::rename(const std::string& n) -{ - LLInventoryItem::rename(n); -} - const LLPermissions& LLViewerInventoryItem::getPermissions() const { // Use the actual permissions of the symlink, not its parent. @@ -1481,7 +1450,8 @@ U32 LLViewerInventoryItem::getCRC32() const return LLInventoryItem::getCRC32(); } -// *TODO: mantipov: REMOVE, EXT-3985 +// *TODO: mantipov: should be removed with LMSortPrefix patch in llinventorymodel.cpp, EXT-3985 +static char getSeparator() { return '@'; } BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName) { using std::string; diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index cf104503a86..c24f76c87a1 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -64,12 +64,8 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr virtual LLAssetType::EType getType() const; virtual const LLUUID& getAssetUUID() const; virtual const std::string& getName() const; - virtual const std::string& getDisplayName() const; - static std::string getDisplayName(const std::string& name); - static char getSeparator() { return '@'; } virtual S32 getSortField() const; virtual void setSortField(S32 sortField); - virtual void rename(const std::string& new_name); virtual const LLPermissions& getPermissions() const; virtual const LLUUID& getCreatorUUID() const; virtual const std::string& getDescription() const; -- GitLab From d9b924edd2f5d511c5e506fafe2f01f983214711 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 11:26:08 +0000 Subject: [PATCH 280/521] EXT-4763: Turn off URL highlighting for toast alerts. --- indra/newview/lltoastalertpanel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index c3ccb9380b0..da31bb3e73c 100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -170,6 +170,7 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal params.tab_stop(false); params.wrap(true); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); + params.allow_html(false); LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params); // Compute max allowable height for the dialog text, so we can allocate -- GitLab From 3da01ec592edd2aaab1fe6dcaaaed6d13cc492b6 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 11:50:59 +0000 Subject: [PATCH 281/521] EXT-4747: Turn on URL hyperlinking for Pick Info descriptions. --- indra/newview/skins/default/xui/en/panel_pick_info.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 65ccd10cf02..74899887220 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -88,6 +88,7 @@ follows="all" height="100" width="280" + allow_html="true" hide_scrollbar="false" layout="topleft" left="10" -- GitLab From 57e1216f798dbbe479493c19658da36b96622290 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Fri, 29 Jan 2010 14:07:12 +0200 Subject: [PATCH 282/521] Fixed normal bug EXT-4374 - Gestures floater: 'Activate' btn applies unsaved changes to gesture. --HG-- branch : product-engine --- indra/newview/llpreviewgesture.cpp | 10 ++++++++-- indra/newview/llpreviewgesture.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 84bdaafacf3..53e351e66e1 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -155,6 +155,12 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob return preview; } +void LLPreviewGesture::draw() +{ + // Skip LLPreview::draw() to avoid description update + LLFloater::draw(); +} + // virtual BOOL LLPreviewGesture::handleKeyHere(KEY key, MASK mask) { @@ -497,11 +503,9 @@ BOOL LLPreviewGesture::postBuild() if (item) { - childSetCommitCallback("desc", LLPreview::onText, this); childSetText("desc", item->getDescription()); childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); - childSetCommitCallback("name", LLPreview::onText, this); childSetText("name", item->getName()); childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe); } @@ -1077,6 +1081,8 @@ void LLPreviewGesture::saveIfNeeded() } else { + LLPreview::onCommit(); + // Every save gets a new UUID. Yup. LLTransactionID tid; LLAssetID asset_id; diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h index 19fa1dcc37b..5968e936ef8 100644 --- a/indra/newview/llpreviewgesture.h +++ b/indra/newview/llpreviewgesture.h @@ -60,6 +60,7 @@ class LLPreviewGesture : public LLPreview virtual ~LLPreviewGesture(); // LLView + /*virtual*/ void draw(); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, -- GitLab From a67598f762fd64506c9a867160007456d2327cb8 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 14:18:31 +0200 Subject: [PATCH 283/521] cleaned cmake list a bit from llimpanel, lltoolbar and lloverlaybar --HG-- branch : product-engine --- indra/newview/CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 4c0c895a7df..41b08942eb5 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -241,7 +241,6 @@ set(viewer_SOURCE_FILES llimfloater.cpp llimfloatercontainer.cpp llimhandler.cpp - llimpanel.cpp llimview.cpp llinspect.cpp llinspectavatar.cpp @@ -297,7 +296,6 @@ set(viewer_SOURCE_FILES llnotificationscripthandler.cpp llnotificationtiphandler.cpp lloutputmonitorctrl.cpp - lloverlaybar.cpp llpanelavatar.cpp llpanelavatartag.cpp llpanelblockedlist.cpp @@ -418,7 +416,6 @@ set(viewer_SOURCE_FILES lltoastnotifypanel.cpp lltoastpanel.cpp lltool.cpp - lltoolbar.cpp lltoolbrush.cpp lltoolcomp.cpp lltooldraganddrop.cpp @@ -747,7 +744,6 @@ set(viewer_HEADER_FILES llhudview.h llimfloater.h llimfloatercontainer.h - llimpanel.h llimview.h llinspect.h llinspectavatar.h @@ -799,7 +795,6 @@ set(viewer_HEADER_FILES llnotificationhandler.h llnotificationmanager.h lloutputmonitorctrl.h - lloverlaybar.h llpanelavatar.h llpanelavatartag.h llpanelblockedlist.h @@ -923,7 +918,6 @@ set(viewer_HEADER_FILES lltoastnotifypanel.h lltoastpanel.h lltool.h - lltoolbar.h lltoolbrush.h lltoolcomp.h lltooldraganddrop.h -- GitLab From 56d06544376dea0704d139b28d17d44e3c6fadf9 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 14:18:56 +0200 Subject: [PATCH 284/521] got rid from lltoolbar.h includes --HG-- branch : product-engine --- indra/newview/llappviewer.cpp | 2 -- indra/newview/llviewermenu.cpp | 1 - indra/newview/llviewerwindow.cpp | 1 - 3 files changed, 4 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 9aa15789edc..9bb0977c1a6 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -163,7 +163,6 @@ #include "llvotree.h" #include "llvoavatar.h" #include "llfolderview.h" -#include "lltoolbar.h" #include "llagentpilot.h" #include "llvovolume.h" #include "llflexibleobject.h" @@ -414,7 +413,6 @@ static void settings_to_globals() LLVOAvatar::sVisibleInFirstPerson = gSavedSettings.getBOOL("FirstPersonAvatarVisible"); // clamp auto-open time to some minimum usable value LLFolderView::sAutoOpenTime = llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay")); - LLToolBar::sInventoryAutoOpenTime = gSavedSettings.getF32("InventoryAutoOpenDelay"); LLSelectMgr::sRectSelectInclusive = gSavedSettings.getBOOL("RectangleSelectInclusive"); LLSelectMgr::sRenderHiddenSelections = gSavedSettings.getBOOL("RenderHiddenSelections"); LLSelectMgr::sRenderLightRadius = gSavedSettings.getBOOL("RenderLightRadius"); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 96251f75714..12e2fa51569 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -82,7 +82,6 @@ #include "llsidetray.h" #include "llstatusbar.h" #include "lltextureview.h" -#include "lltoolbar.h" #include "lltoolcomp.h" #include "lltoolmgr.h" #include "lltoolpie.h" diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b4c73dba262..c43f58c8a29 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -147,7 +147,6 @@ #include "lltexturefetch.h" #include "lltextureview.h" #include "lltool.h" -#include "lltoolbar.h" #include "lltoolcomp.h" #include "lltooldraganddrop.h" #include "lltoolface.h" -- GitLab From 943f8afa09480629ad659de9601b36b3dc565246 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 14:25:50 +0200 Subject: [PATCH 285/521] Fixed normal bug EXT-4743 ('Stop flying' button disappears if minimize undocked movement controls) - synchronized visibility of "stand_stop_flying_container" with a panel visibility when it is reparented from the Move Floater to container. --HG-- branch : product-engine --- indra/newview/llmoveview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 5981baab60e..4bf2bac6497 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -651,6 +651,9 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) // Detach from movement controls. parent->removeChild(this); mOriginalParent.get()->addChild(this); + // update parent with self visibility (it is changed in setVisible()). EXT-4743 + mOriginalParent.get()->setVisible(getVisible()); + mAttached = false; updatePosition(); // don't defer until next draw() to avoid flicker } -- GitLab From ac0fb461f6ad9e81349bd8814201a641a24f40a3 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 14:42:57 +0200 Subject: [PATCH 286/521] got rid of lloverlaybar, llmediaremotectrl, llvoiceremotectrl dependencies, updated cmake list --HG-- branch : product-engine --- indra/newview/CMakeLists.txt | 4 ---- indra/newview/llviewercontrol.cpp | 31 ---------------------------- indra/newview/llviewerfloaterreg.cpp | 4 ---- indra/newview/llviewerparcelmgr.cpp | 1 - indra/newview/llviewerwindow.cpp | 1 - 5 files changed, 41 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 41b08942eb5..3389ecbf4d0 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -272,7 +272,6 @@ set(viewer_SOURCE_FILES llmaniptranslate.cpp llmediactrl.cpp llmediadataclient.cpp - llmediaremotectrl.cpp llmemoryview.cpp llmenucommands.cpp llmetricperformancetester.cpp @@ -510,7 +509,6 @@ set(viewer_SOURCE_FILES llvoground.cpp llvoicechannel.cpp llvoiceclient.cpp - llvoiceremotectrl.cpp llvoicevisualizer.cpp llvoinventorylistener.cpp llvopartgroup.cpp @@ -776,7 +774,6 @@ set(viewer_HEADER_FILES llmaniptranslate.h llmediactrl.h llmediadataclient.h - llmediaremotectrl.h llmemoryview.h llmenucommands.h llmetricperformancetester.h @@ -1010,7 +1007,6 @@ set(viewer_HEADER_FILES llvoground.h llvoicechannel.h llvoiceclient.h - llvoiceremotectrl.h llvoicevisualizer.h llvoinventorylistener.h llvopartgroup.h diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 57434bd1e4c..64eabe65cfe 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -63,7 +63,6 @@ #include "llviewerjoystick.h" #include "llviewerparcelmgr.h" #include "llparcel.h" -#include "lloverlaybar.h" #include "llkeyboard.h" #include "llerrorcontrol.h" #include "llappviewer.h" @@ -257,35 +256,6 @@ static bool handleJoystickChanged(const LLSD& newvalue) return true; } -static bool handleAudioStreamMusicChanged(const LLSD& newvalue) -{ - if (gAudiop) - { - if ( newvalue.asBoolean() ) - { - if (LLViewerParcelMgr::getInstance()->getAgentParcel() - && !LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL().empty()) - { - // if music isn't playing, start it - if (gOverlayBar && !gOverlayBar->musicPlaying()) - { - LLOverlayBar::toggleMusicPlay(NULL); - } - } - } - else - { - // if music is playing, stop it. - if (gOverlayBar && gOverlayBar->musicPlaying()) - { - LLOverlayBar::toggleMusicPlay(NULL); - } - - } - } - return true; -} - static bool handleUseOcclusionChanged(const LLSD& newvalue) { LLPipeline::sUseOcclusion = (newvalue.asBoolean() && gGLManager.mHasOcclusionQuery @@ -592,7 +562,6 @@ void settings_setup_listeners() gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); - gSavedSettings.getControl("AudioStreamingMusic")->getSignal()->connect(boost::bind(&handleAudioStreamMusicChanged, _2)); gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 3aca11963a2..f93d78bf338 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -115,7 +115,6 @@ #include "llinspectobject.h" #include "llinspectremoteobject.h" #include "llinspecttoast.h" -#include "llmediaremotectrl.h" #include "llmoveview.h" #include "llnearbychat.h" #include "llpanelblockedlist.h" @@ -263,8 +262,5 @@ void LLViewerFloaterReg::registerFloaters() // *NOTE: Please keep these alphabetized for easier merges - // debug use only - LLFloaterReg::add("media_remote_ctrl", "floater_media_remote.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaRemoteCtrl>); - LLFloaterReg::registerControlVariables(); // Make sure visibility and rect controls get preserved when saving } diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 10a95443f1f..e2333566320 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -69,7 +69,6 @@ #include "llviewerparceloverlay.h" #include "llviewerregion.h" #include "llworld.h" -#include "lloverlaybar.h" #include "roles_constants.h" #include "llweb.h" diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c43f58c8a29..03cc6e1262e 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -128,7 +128,6 @@ #include "llmorphview.h" #include "llmoveview.h" #include "llnavigationbar.h" -#include "lloverlaybar.h" #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" -- GitLab From 53173419000ba1d14aa99c59353e91f700915e07 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 13:14:14 +0000 Subject: [PATCH 287/521] EXT-4679: Removed reference to no-longer-supported abuse URL. --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 41f4621d665..fc535205f1f 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3851,7 +3851,7 @@ Are you sure you want to quit? type="alertmodal"> Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. -All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report]. +All reported abuses are investigated and resolved. <unique/> </notification> -- GitLab From 10cbb9ea27e8e47a235efece1b30365b7f00e038 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Fri, 29 Jan 2010 15:16:11 +0200 Subject: [PATCH 288/521] Fixed low bug EXT-4749 (There is misleading notification after voice has been turned off from preferences) - Added skipping "Voice not available at your current location" when agent voice is disabled --HG-- branch : product-engine --- indra/newview/llvoicechannel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 589999c0264..9d49fb69d61 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -698,7 +698,11 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status) // do not notify user when leaving proximal channel return; case STATUS_VOICE_DISABLED: - LLCallInfoDialog::show("unavailable", mNotifyArgs); + //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749) + if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()) + { + LLCallInfoDialog::show("unavailable", mNotifyArgs); + } return; default: break; -- GitLab From ec5dbb60e71302a77f68cc604e7dfd52bcaa926a Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 13:36:39 +0000 Subject: [PATCH 289/521] EXT-4763: Revert my previous fix. We don't want to universally disabled URL highlighting for all toast alerts, e.g., the report abuse notification has URLs that we want users to be able to click on. I have a better plan... --- indra/newview/lltoastalertpanel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index da31bb3e73c..c3ccb9380b0 100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -170,7 +170,6 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal params.tab_stop(false); params.wrap(true); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); - params.allow_html(false); LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params); // Compute max allowable height for the dialog text, so we can allocate -- GitLab From f8bde94b9f9c83202f32268b57539fbe5c7cf271 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 15:41:41 +0200 Subject: [PATCH 290/521] completely got rid of Communicate floater and stuff --HG-- branch : product-engine --- indra/newview/CMakeLists.txt | 4 ---- indra/newview/llgroupactions.cpp | 3 ++- indra/newview/llimview.cpp | 23 ++--------------------- indra/newview/llimview.h | 13 ++----------- indra/newview/llinventorypanel.cpp | 4 +++- indra/newview/llviewerfloaterreg.cpp | 3 +-- indra/newview/llviewermenu.cpp | 1 - indra/newview/llviewerwindow.cpp | 5 ----- 8 files changed, 10 insertions(+), 46 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 3389ecbf4d0..1c32c690a83 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -156,13 +156,11 @@ set(viewer_SOURCE_FILES llfloaterbuycurrency.cpp llfloaterbuyland.cpp llfloatercamera.cpp - llfloaterchatterbox.cpp llfloatercolorpicker.cpp llfloatercustomize.cpp llfloaterdaycycle.cpp llfloaterenvsettings.cpp llfloaterfonttest.cpp - llfloaterfriends.cpp llfloatergesture.cpp llfloatergodtools.cpp llfloatergroupinvite.cpp @@ -658,13 +656,11 @@ set(viewer_HEADER_FILES llfloaterbuycurrency.h llfloaterbuyland.h llfloatercamera.h - llfloaterchatterbox.h llfloatercolorpicker.h llfloatercustomize.h llfloaterdaycycle.h llfloaterenvsettings.h llfloaterfonttest.h - llfloaterfriends.h llfloatergesture.h llfloatergodtools.h llfloatergroupinvite.h diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index d6e2bb0445f..3653371d766 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -75,11 +75,12 @@ class LLGroupHandler : public LLCommandHandler return false; } + //*TODO by what to replace showing groups floater? if (tokens[0].asString() == "list") { if (tokens[1].asString() == "show") { - LLFloaterReg::showInstance("contacts", "groups"); + //LLFloaterReg::showInstance("contacts", "groups"); return true; } return false; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 213862df4ba..675f73d43e5 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -52,7 +52,6 @@ #include "llbottomtray.h" #include "llcallingcard.h" #include "llchat.h" -#include "llfloaterchatterbox.h" #include "llimfloater.h" #include "llgroupiconctrl.h" #include "llmd5.h" @@ -64,6 +63,7 @@ #include "llnotificationsutil.h" #include "llnearbychat.h" #include "llspeakers.h" //for LLIMSpeakerMgr +#include "lltextbox.h" #include "lltextutil.h" #include "llviewercontrol.h" #include "llviewerparcelmgr.h" @@ -2075,8 +2075,7 @@ bool inviteUserResponse(const LLSD& notification, const LLSD& response) // Member Functions // -LLIMMgr::LLIMMgr() : - mIMReceived(FALSE) +LLIMMgr::LLIMMgr() { mPendingInvitations = LLSD::emptyMap(); mPendingAgentListUpdates = LLSD::emptyMap(); @@ -2183,14 +2182,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess } } -void LLIMMgr::notifyNewIM() -{ - if(!LLFloaterReg::instanceVisible("communicate")) - { - mIMReceived = TRUE; - } -} - S32 LLIMMgr::getNumberOfUnreadIM() { std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it; @@ -2217,16 +2208,6 @@ S32 LLIMMgr::getNumberOfUnreadParticipantMessages() return num; } -void LLIMMgr::clearNewIMNotification() -{ - mIMReceived = FALSE; -} - -BOOL LLIMMgr::getIMReceived() const -{ - return mIMReceived; -} - void LLIMMgr::autoStartCallOnStartup(const LLUUID& session_id) { LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(session_id); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 17406025f21..b573490fa3c 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -39,8 +39,8 @@ #include "lllogchat.h" #include "llvoicechannel.h" -class LLFloaterChatterBox; -class LLUUID; + + class LLFriendObserver; class LLCallDialogManager; class LLIMSpeakerMgr; @@ -360,15 +360,9 @@ class LLIMMgr : public LLSingleton<LLIMMgr> void processIMTypingStart(const LLIMInfo* im_info); void processIMTypingStop(const LLIMInfo* im_info); - void notifyNewIM(); - void clearNewIMNotification(); - // automatically start a call once the session has initialized void autoStartCallOnStartup(const LLUUID& session_id); - // IM received that you haven't seen yet - BOOL getIMReceived() const; - // Calc number of all unread IMs S32 getNumberOfUnreadIM(); @@ -446,9 +440,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr> typedef std::list <LLIMSessionObserver *> session_observers_list_t; session_observers_list_t mSessionObservers; - // An IM has been received that you haven't seen yet. - BOOL mIMReceived; - LLSD mPendingInvitations; LLSD mPendingAgentListUpdates; }; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 7e71ac90b45..12a2c370d2f 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -759,7 +759,9 @@ bool LLInventoryPanel::beginIMSession() S32 count = item_array.count(); if(count > 0) { - LLFloaterReg::showInstance("communicate"); + //*TODO by what to replace that? + //LLFloaterReg::showInstance("communicate"); + // create the session LLAvatarTracker& at = LLAvatarTracker::instance(); LLUUID id; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index f93d78bf338..658d1c9ddd4 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -54,7 +54,6 @@ #include "llfloaterbulkpermission.h" #include "llfloaterbump.h" #include "llfloatercamera.h" -#include "llfloaterchatterbox.h" #include "llfloaterdaycycle.h" #include "llfloatersearch.h" #include "llfloaterenvsettings.h" @@ -153,7 +152,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>); //LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>); LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>); - LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>); + LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDayCycle>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 12e2fa51569..f7f30a51365 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -53,7 +53,6 @@ #include "llfloaterbuycontents.h" #include "llfloaterbuycurrency.h" #include "llfloatercustomize.h" -#include "llfloaterchatterbox.h" #include "llfloatergodtools.h" #include "llfloaterinventory.h" #include "llfloaterland.h" diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 03cc6e1262e..c70b8307822 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -101,7 +101,6 @@ #include "llfloaterbuildoptions.h" #include "llfloaterbuyland.h" #include "llfloatercamera.h" -#include "llfloaterchatterbox.h" #include "llfloatercustomize.h" #include "llfloaterland.h" #include "llfloaterinspect.h" @@ -1461,10 +1460,6 @@ void LLViewerWindow::initWorldUI() bottom_tray_container->addChild(bottom_tray); bottom_tray_container->setVisible(TRUE); - // Pre initialize instance communicate instance; - // currently needs to happen before initializing chat or IM - LLFloaterReg::getInstance("communicate"); - LLRect morph_view_rect = full_window; morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); morph_view_rect.mTop = full_window.mTop - 32; -- GitLab From efeaba0acd9b40d50a32e4c728489231fbaac7e8 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 15:48:50 +0200 Subject: [PATCH 291/521] Fixed normal bug EXT-4762 ( Crash on exit from viewer in LLPanelPeopleMenus::ContextMenu) - reason: attempt to delete instance of the LLContextMenu from the LLPanelPeopleMenus::ContextMenu after it was deleted by menu holder on viewer exit. - fix: check if menu is not dead via stored LLHandle of the menu before deleting. --HG-- branch : product-engine --- indra/newview/llpanelpeoplemenus.cpp | 10 +++++++++- indra/newview/llpanelpeoplemenus.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 501dac5dff4..470cfca8fec 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -61,7 +61,14 @@ ContextMenu::~ContextMenu() // It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw() // via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel. // we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725 - if (mMenu) mMenu->die(); + + // menu holder deletes its menus on viewer exit, so we have no way to determine if instance + // of mMenu has already been deleted except of using LLHandle. EXT-4762. + if (!mMenuHandle.isDead()) + { + mMenu->die(); + mMenu = NULL; + } } void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) @@ -86,6 +93,7 @@ void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, std::copy(uuids.begin(), uuids.end(), mUUIDs.begin()); mMenu = createMenu(); + mMenuHandle = mMenu->getHandle(); mMenu->show(x, y); LLMenuGL::showPopup(spawning_view, mMenu, x, y); } diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 7251f6dbbdb..913638d8c86 100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -62,6 +62,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu std::vector<LLUUID> mUUIDs; LLContextMenu* mMenu; + LLHandle<LLView> mMenuHandle; }; /** -- GitLab From d66d9afae1c7cd4484b72532c0103ce7a4db9e77 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 16:09:30 +0200 Subject: [PATCH 292/521] Fixed normal bug EXT-3882 ([BSI] block list contains the word block instead of (object)) - original issue has been fixed by Ramzi Linden in changeset eeabc4a70a6f at 2010-01-19 (Renaming multiple xml "MuteObject" nodes with unique names for block list and context menu). - changed panel title from "Blocked List" to "Block List" --HG-- branch : product-engine --- .../newview/skins/default/xui/en/panel_block_list_sidetray.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index 39170b90ca3..072ea882e61 100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml @@ -29,7 +29,7 @@ text_color="white" top="5" width="250"> - Blocked List + Block List </text> <scroll_list follows="all" -- GitLab From 4d6c9e3e1754d21ea5291207085113e99456f571 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 14:30:26 +0000 Subject: [PATCH 293/521] EXT-4678: Support <nolink>...</nolink> to turn off URL hyperlinking. We are running into a bunch of places where we don't want to allow hyperlinking of URLs like secondlife.com in text boxes. I've therefore added a new type of URL regex that disables URL hyperlinking. Simply enclose the URL in a <nolink> tag, e.g.: <nolink>secondlife.com</nolink> --- indra/llui/lltextbase.cpp | 7 +++---- indra/llui/llurlentry.cpp | 24 +++++++++++++++++++--- indra/llui/llurlentry.h | 14 +++++++++++++ indra/llui/llurlmatch.cpp | 8 ++++++-- indra/llui/llurlmatch.h | 6 +++++- indra/llui/llurlregistry.cpp | 14 +++++++++---- indra/llui/tests/llurlentry_test.cpp | 8 ++++++++ indra/llui/tests/llurlmatch_test.cpp | 30 ++++++++++++++-------------- 8 files changed, 82 insertions(+), 29 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 8abbc833e5d..2ee20238758 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1606,11 +1606,10 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c } } - // output the styled Url (unless we've been asked to suppress it) - if (isBlackListUrl(match.getUrl())) + // output the styled Url (unless we've been asked to suppress hyperlinking) + if (match.isLinkDisabled()) { - std::string orig_url = text.substr(start, end-start); - appendAndHighlightText(orig_url, prepend_newline, part, style_params); + appendAndHighlightText(match.getLabel(), prepend_newline, part, style_params); } else { diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 4927e57a52e..58148ad2aa0 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -39,8 +39,9 @@ #include "lltrans.h" #include "lluicolortable.h" -LLUrlEntryBase::LLUrlEntryBase() -: mColor(LLUIColorTable::instance().getColor("HTMLLinkColor")) +LLUrlEntryBase::LLUrlEntryBase() : + mColor(LLUIColorTable::instance().getColor("HTMLLinkColor")), + mDisabledLink(false) { } @@ -204,7 +205,7 @@ LLUrlEntryHTTPNoProtocol::LLUrlEntryHTTPNoProtocol() mPattern = boost::regex("(" "\\bwww\\.\\S+\\.\\S+" // i.e. www.FOO.BAR "|" // or - "(?<!@)\\b[^[:space:]:@/]+\\.(?:com|net|edu|org)([/:]\\S*)?\\b" // i.e. FOO.net + "(?<!@)\\b[^[:space:]:@/>]+\\.(?:com|net|edu|org)([/:][^[:space:]<]*)?\\b" // i.e. FOO.net ")", boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_http.xml"; @@ -641,3 +642,20 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const // return the part of the Url after secondlife:///app/worldmap/ part return ::getStringAfterToken(url, "app/worldmap/"); } + +// +// LLUrlEntryNoLink lets us turn of URL detection with <nolink>...</nolink> tags +// +LLUrlEntryNoLink::LLUrlEntryNoLink() +{ + mPattern = boost::regex("<nolink>[^[:space:]<]+</nolink>", + boost::regex::perl|boost::regex::icase); + mDisabledLink = true; +} + +std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb) +{ + // return the text between the <nolink> and </nolink> tags + return url.substr(8, url.size()-8-9); +} + diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index 4adffde99c3..94455ac247d 100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -91,6 +91,9 @@ class LLUrlEntryBase /// Return the name of a SL location described by this Url, if any virtual std::string getLocation(const std::string &url) const { return ""; } + /// is this a match for a URL that should not be hyperlinked? + bool isLinkDisabled() const { return mDisabledLink; } + protected: std::string getIDStringFromUrl(const std::string &url) const; std::string escapeUrl(const std::string &url) const; @@ -111,6 +114,7 @@ class LLUrlEntryBase std::string mTooltip; LLUIColor mColor; std::multimap<std::string, LLUrlEntryObserver> mObservers; + bool mDisabledLink; }; /// @@ -267,4 +271,14 @@ class LLUrlEntryWorldMap : public LLUrlEntryBase /*virtual*/ std::string getLocation(const std::string &url) const; }; +/// +/// LLUrlEntryNoLink lets us turn of URL detection with <nolink>...</nolink> tags +/// +class LLUrlEntryNoLink : public LLUrlEntryBase +{ +public: + LLUrlEntryNoLink(); + /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); +}; + #endif diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp index 3b47145a225..72a199c220e 100644 --- a/indra/llui/llurlmatch.cpp +++ b/indra/llui/llurlmatch.cpp @@ -41,14 +41,17 @@ LLUrlMatch::LLUrlMatch() : mLabel(""), mTooltip(""), mIcon(""), - mMenuName("") + mMenuName(""), + mLocation(""), + mDisabledLink(false) { } void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, const std::string &label, const std::string &tooltip, const std::string &icon, const LLUIColor& color, - const std::string &menu, const std::string &location) + const std::string &menu, const std::string &location, + bool disabled_link) { mStart = start; mEnd = end; @@ -59,4 +62,5 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, mColor = color; mMenuName = menu; mLocation = location; + mDisabledLink = disabled_link; } diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h index 7f5767923af..e86762548b8 100644 --- a/indra/llui/llurlmatch.h +++ b/indra/llui/llurlmatch.h @@ -83,11 +83,14 @@ class LLUrlMatch /// return the SL location that this Url describes, or "" if none. std::string getLocation() const { return mLocation; } + /// is this a match for a URL that should not be hyperlinked? + bool isLinkDisabled() const { return mDisabledLink; } + /// Change the contents of this match object (used by LLUrlRegistry) void setValues(U32 start, U32 end, const std::string &url, const std::string &label, const std::string &tooltip, const std::string &icon, const LLUIColor& color, const std::string &menu, - const std::string &location); + const std::string &location, bool disabled_link); private: U32 mStart; @@ -99,6 +102,7 @@ class LLUrlMatch std::string mMenuName; std::string mLocation; LLUIColor mColor; + bool mDisabledLink; }; #endif diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index ad5c0911f8c..55eb8950e9c 100644 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -44,6 +44,7 @@ void LLUrlRegistryNullCallback(const std::string &url, const std::string &label) LLUrlRegistry::LLUrlRegistry() { // Urls are matched in the order that they were registered + registerUrl(new LLUrlEntryNoLink()); registerUrl(new LLUrlEntrySLURL()); registerUrl(new LLUrlEntryHTTP()); registerUrl(new LLUrlEntryHTTPLabel()); @@ -176,7 +177,8 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL match_entry->getIcon(), match_entry->getColor(), match_entry->getMenuName(), - match_entry->getLocation(url)); + match_entry->getLocation(url), + match_entry->isLinkDisabled()); return true; } @@ -204,9 +206,13 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr S32 end = start + wurl.size() - 1; match.setValues(start, end, match.getUrl(), - match.getLabel(), match.getTooltip(), - match.getIcon(), match.getColor(), - match.getMenuName(), match.getLocation()); + match.getLabel(), + match.getTooltip(), + match.getIcon(), + match.getColor(), + match.getMenuName(), + match.getLocation(), + match.isLinkDisabled()); return true; } return false; diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index 80be8fcbf72..6fec1d3e10d 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -610,5 +610,13 @@ namespace tut testRegex("invalid .net URL", r, "foo.netty", ""); + + testRegex("XML tags around URL [1]", r, + "<foo>secondlife.com</foo>", + "secondlife.com"); + + testRegex("XML tags around URL [2]", r, + "<foo>secondlife.com/status?bar=1</foo>", + "secondlife.com/status?bar=1"); } } diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp index e8cf1353464..f9dfee931ba 100644 --- a/indra/llui/tests/llurlmatch_test.cpp +++ b/indra/llui/tests/llurlmatch_test.cpp @@ -53,7 +53,7 @@ namespace tut LLUrlMatch match; ensure("empty()", match.empty()); - match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLUIColor(), "", ""); + match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLUIColor(), "", "", false); ensure("! empty()", ! match.empty()); } @@ -66,7 +66,7 @@ namespace tut LLUrlMatch match; ensure_equals("getStart() == 0", match.getStart(), 0); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getStart() == 10", match.getStart(), 10); } @@ -79,7 +79,7 @@ namespace tut LLUrlMatch match; ensure_equals("getEnd() == 0", match.getEnd(), 0); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getEnd() == 20", match.getEnd(), 20); } @@ -92,10 +92,10 @@ namespace tut LLUrlMatch match; ensure_equals("getUrl() == ''", match.getUrl(), ""); - match.setValues(10, 20, "http://slurl.com/", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "http://slurl.com/", "", "", "", LLUIColor(), "", "", false); ensure_equals("getUrl() == 'http://slurl.com/'", match.getUrl(), "http://slurl.com/"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getUrl() == '' (2)", match.getUrl(), ""); } @@ -108,10 +108,10 @@ namespace tut LLUrlMatch match; ensure_equals("getLabel() == ''", match.getLabel(), ""); - match.setValues(10, 20, "", "Label", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "Label", "", "", LLUIColor(), "", "", false); ensure_equals("getLabel() == 'Label'", match.getLabel(), "Label"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getLabel() == '' (2)", match.getLabel(), ""); } @@ -124,10 +124,10 @@ namespace tut LLUrlMatch match; ensure_equals("getTooltip() == ''", match.getTooltip(), ""); - match.setValues(10, 20, "", "", "Info", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "Info", "", LLUIColor(), "", "", false); ensure_equals("getTooltip() == 'Info'", match.getTooltip(), "Info"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getTooltip() == '' (2)", match.getTooltip(), ""); } @@ -140,10 +140,10 @@ namespace tut LLUrlMatch match; ensure_equals("getIcon() == ''", match.getIcon(), ""); - match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "", "", false); ensure_equals("getIcon() == 'Icon'", match.getIcon(), "Icon"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure_equals("getIcon() == '' (2)", match.getIcon(), ""); } @@ -156,10 +156,10 @@ namespace tut LLUrlMatch match; ensure("getMenuName() empty", match.getMenuName().empty()); - match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", ""); + match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "", false); ensure_equals("getMenuName() == \"xui_file.xml\"", match.getMenuName(), "xui_file.xml"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure("getMenuName() empty (2)", match.getMenuName().empty()); } @@ -172,10 +172,10 @@ namespace tut LLUrlMatch match; ensure("getLocation() empty", match.getLocation().empty()); - match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris"); + match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris", false); ensure_equals("getLocation() == \"Paris\"", match.getLocation(), "Paris"); - match.setValues(10, 20, "", "", "", "", LLUIColor(), "", ""); + match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false); ensure("getLocation() empty (2)", match.getLocation().empty()); } } -- GitLab From 2ec69d6d71e18c60a81d55f79e291e366d05eacd Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 14:56:39 +0000 Subject: [PATCH 294/521] EXT-4678: Revert URL black list support from LLTextBase. The new <nolink>URL</nolink> provides a more flexible solution that can be specified in XUI (as we now do to disabled hyperlinking for the sim hostname in the About floater). --- indra/llui/lltextbase.cpp | 19 ------------------- indra/llui/lltextbase.h | 7 ------- indra/newview/llfloaterabout.cpp | 6 ------ .../skins/default/xui/en/floater_about.xml | 2 +- 4 files changed, 1 insertion(+), 33 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 2ee20238758..978bd317e20 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1512,25 +1512,6 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params& onValueChange(0, getLength()); } -void LLTextBase::addBlackListUrl(const std::string &url) -{ - mBlackListUrls.push_back(url); -} - -bool LLTextBase::isBlackListUrl(const std::string &url) const -{ - std::vector<std::string>::const_iterator it; - for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it) - { - const std::string &blacklist_url = *it; - if (url.find(blacklist_url) != std::string::npos) - { - return true; - } - } - return false; -} - //virtual std::string LLTextBase::getText() const { diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index e1c6cc36ab6..dc3671eab12 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -187,9 +187,6 @@ class LLTextBase const LLFontGL* getDefaultFont() const { return mDefaultFont; } LLStyle::Params getDefaultStyle(); - // tell the text object to suppress auto highlighting of a specific URL - void addBlackListUrl(const std::string &url); - public: // Fired when a URL link is clicked commit_signal_t mURLClickSignal; @@ -312,7 +309,6 @@ class LLTextBase void updateRects(); void needsScroll() { mScrollNeeded = TRUE; } void replaceUrlLabel(const std::string &url, const std::string &label); - bool isBlackListUrl(const std::string &url) const; protected: // text segmentation and flow @@ -364,9 +360,6 @@ class LLTextBase LLView* mDocumentView; class LLScrollContainer* mScroller; - // list of URLs to suppress from automatic hyperlinking - std::vector<std::string> mBlackListUrls; - // transient state bool mReflowNeeded; // need to reflow text because of change to text contents or display region bool mScrollNeeded; // need to change scroll region because of change to cursor position diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 04f4ddf9960..ef69f39ad2d 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -187,12 +187,6 @@ BOOL LLFloaterAbout::postBuild() support << '\n' << getString("AboutTraffic", args); } - // don't make the sim hostname be a hyperlink - if (info.has("HOSTNAME")) - { - support_widget->addBlackListUrl(info["HOSTNAME"].asString()); - } - support_widget->appendText(support.str(), FALSE, LLStyle::Params() diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index b6443c4c21c..bfdd48e2f42 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -21,7 +21,7 @@ Built with [COMPILER] version [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> -You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at [HOSTNAME] ([HOSTIP]) +You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP]) [SERVER_VERSION] [[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] -- GitLab From 303c379a18630fbbc2c4a86714ebd9627c03ec9e Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 14:57:41 +0000 Subject: [PATCH 295/521] EXT-4763: Use <nolink> syntax to disable linking of landmark names. --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index fc535205f1f..d3e08cad3ae 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3088,7 +3088,7 @@ Join me in [REGION] icon="alertmodal.tga" name="TeleportFromLandmark" type="alertmodal"> -Are you sure you want to teleport to [LOCATION]? +Are you sure you want to teleport to <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" -- GitLab From d643a16c384332de535e6b6ec93f3437604a66e3 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 29 Jan 2010 17:01:01 +0200 Subject: [PATCH 296/521] Fixed normal bug EXT-4355 (Preferences: Location of logs does not show full path) - changed "control_name" for view with log path to the "InstantMessageLogPath" - also changed a line editor state from "disabled" to "readonly" to have a chance to scroll text to see full path in this field. --HG-- branch : product-engine --- indra/newview/llfloaterpreference.cpp | 2 +- .../newview/skins/default/xui/en/panel_preferences_privacy.xml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index e77c93b5f8e..ef444c8ba44 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1207,7 +1207,7 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im childEnable("log_nearby_chat"); childEnable("log_instant_messages"); childEnable("show_timestamps_check_im"); - childEnable("log_path_string"); + childDisable("log_path_string");// LineEditor becomes readonly in this case. childEnable("log_path_button"); std::string display_email(email); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 0aaeb6114ee..f7e3ede93c2 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -174,8 +174,7 @@ </text> <line_editor bottom="366" - control_name="InstantMessageLogFolder" - enabled="false" + control_name="InstantMessageLogPath" follows="top|left|right" halign="right" height="23" -- GitLab From 015453dbc7ad1494d984a46973a7d41eb5c6ac2a Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 17:04:17 +0200 Subject: [PATCH 297/521] fixed EXT-4736 There's an ability to block system notifications from nearby chat --HG-- branch : product-engine --- indra/newview/llchathistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f1e7e622b37..8cfcca31ced 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -310,7 +310,7 @@ class LLChatHistoryHeader: public LLPanel showSystemContextMenu(x,y); if(mSourceType == CHAT_SOURCE_AGENT) showAvatarContextMenu(x,y); - if(mSourceType == CHAT_SOURCE_OBJECT) + if(mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom) showObjectContextMenu(x,y); } -- GitLab From 0524e91aae36d87d8e0944fd294e02f145d5d547 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Fri, 29 Jan 2010 17:22:36 +0200 Subject: [PATCH 298/521] fixed bug EXT-4122 [BSI] Notification about \"maximum number of groups\" returns redundant information The hardcoded and unlocalized dataserver response has been removed from the message of notification. --HG-- branch : product-engine --- indra/newview/llviewermessage.cpp | 1 - indra/newview/skins/default/xui/en/notifications.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 55b0d6fa8bd..92408336328 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -630,7 +630,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) delete_context_data = FALSE; LLSD args; args["NAME"] = name; - args["INVITE"] = message; LLNotificationsUtil::add("JoinedTooManyGroupsMember", args, notification["payload"]); } } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index fc535205f1f..787346f7cd0 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -2941,7 +2941,6 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo type="alert"> You have reached your maximum number of groups. Please leave another group before joining this one, or decline the offer. [NAME] has invited you to join a group as a member. -[INVITE] <usetemplate name="okcancelbuttons" notext="Decline" -- GitLab From 86609394caf1ebb20dd90de37b9af1471ae8aa20 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Fri, 29 Jan 2010 17:48:10 +0200 Subject: [PATCH 299/521] =?UTF-8?q?fixed=20major=20EXT-3643=20=E2=80=9CEmb?= =?UTF-8?q?ed=20friendship=20offer=20into=20IM=20window=E2=80=9D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/llcommon/llchat.h | 2 + indra/llui/llnotificationsutil.cpp | 5 ++ indra/llui/llnotificationsutil.h | 2 + indra/newview/llchathistory.cpp | 35 ++++++++- indra/newview/llimfloater.cpp | 19 ++++- indra/newview/llimfloater.h | 1 + indra/newview/llnotificationhandler.h | 22 +++++- indra/newview/llnotificationhandlerutil.cpp | 78 ++++++++++++++++++- indra/newview/llnotificationofferhandler.cpp | 19 ++++- indra/newview/lltoastnotifypanel.cpp | 5 ++ .../default/xui/en/floater_im_session.xml | 10 +-- .../skins/default/xui/en/notifications.xml | 6 +- 12 files changed, 183 insertions(+), 21 deletions(-) diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 46456882baa..a77bd211f34 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -79,6 +79,7 @@ class LLChat : mText(text), mFromName(), mFromID(), + mNotifId(), mSourceType(CHAT_SOURCE_AGENT), mChatType(CHAT_TYPE_NORMAL), mAudible(CHAT_AUDIBLE_FULLY), @@ -94,6 +95,7 @@ class LLChat std::string mText; // UTF-8 line of text std::string mFromName; // agent or object name LLUUID mFromID; // agent id or object id + LLUUID mNotifId; EChatSourceType mSourceType; EChatType mChatType; EChatAudible mAudible; diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp index f343d27cb4e..54bdb4bd66f 100644 --- a/indra/llui/llnotificationsutil.cpp +++ b/indra/llui/llnotificationsutil.cpp @@ -94,3 +94,8 @@ void LLNotificationsUtil::cancel(LLNotificationPtr pNotif) { LLNotifications::instance().cancel(pNotif); } + +LLNotificationPtr LLNotificationsUtil::find(LLUUID uuid) +{ + return LLNotifications::instance().find(uuid); +} diff --git a/indra/llui/llnotificationsutil.h b/indra/llui/llnotificationsutil.h index d552fa915b4..338204924ad 100644 --- a/indra/llui/llnotificationsutil.h +++ b/indra/llui/llnotificationsutil.h @@ -65,6 +65,8 @@ namespace LLNotificationsUtil S32 getSelectedOption(const LLSD& notification, const LLSD& response); void cancel(LLNotificationPtr pNotif); + + LLNotificationPtr find(LLUUID uuid); } #endif diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f1e7e622b37..acbd0db8681 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -51,9 +51,12 @@ #include "llslurl.h" #include "lllayoutstack.h" #include "llagent.h" +#include "llnotificationsutil.h" +#include "lltoastnotifypanel.h" #include "llviewerregion.h" #include "llworld.h" + #include "llsidetray.h"//for blocked objects panel static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history"); @@ -654,8 +657,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL mLastMessageTimeStr = chat.mTimeStr; } - std::string message = irc_me ? chat.mText.substr(3) : chat.mText; - mEditor->appendText(message, FALSE, style_params); + if (chat.mNotifId.notNull()) + { + LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId); + if (notification != NULL) + { + LLToastNotifyPanel* notify_box = new LLToastNotifyPanel( + notification); + notify_box->setFollowsLeft(); + notify_box->setFollowsRight(); + //Prepare the rect for the view + LLRect target_rect = mEditor->getDocumentView()->getRect(); + // squeeze down the widget by subtracting padding off left and right + target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad(); + target_rect.mRight -= mRightWidgetPad; + notify_box->reshape(target_rect.getWidth(), + notify_box->getRect().getHeight()); + notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom); + + LLInlineViewSegment::Params params; + params.view = notify_box; + params.left_pad = mLeftWidgetPad; + params.right_pad = mRightWidgetPad; + mEditor->appendWidget(params, "\n", false); + } + } + else + { + std::string message = irc_me ? chat.mText.substr(3) : chat.mText; + mEditor->appendText(message, FALSE, style_params); + } mEditor->blockUndo(); // automatically scroll to end when receiving chat from myself diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index c0f22fcea22..c2bcb1cdf9d 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -601,8 +601,18 @@ void LLIMFloater::updateMessages() chat.mFromID = from_id; chat.mSessionID = mSessionID; chat.mFromName = from; - chat.mText = message; chat.mTimeStr = time; + + // process offer notification + if (msg.has("notifiaction_id")) + { + chat.mNotifId = msg["notifiaction_id"].asUUID(); + } + //process text message + else + { + chat.mText = message; + } mChatHistory->appendMessage(chat, use_plain_text_chat_history); mLastMessageIndex = msg["index"].asInteger(); @@ -610,6 +620,13 @@ void LLIMFloater::updateMessages() } } +void LLIMFloater::reloadMessages() +{ + mChatHistory->clear(); + mLastMessageIndex = -1; + updateMessages(); +} + // static void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata ) { diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index 0ca0325451b..9552b307379 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -80,6 +80,7 @@ class LLIMFloater : public LLTransientDockableFloater // get new messages from LLIMModel void updateMessages(); + void reloadMessages(); static void onSendMsg( LLUICtrl*, void*); void sendMsg(); diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index e57674d31c7..5f4768e321c 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -276,6 +276,11 @@ class LLHandlerUtil */ static bool canSpawnIMSession(const LLNotificationPtr& notification); + /** + * Checks sufficient conditions to add notification toast panel IM floater. + */ + static bool canAddNotifPanelToIM(const LLNotificationPtr& notification); + /** * Checks if passed notification can create IM session and be written into it. * @@ -296,6 +301,11 @@ class LLHandlerUtil */ static void logToIMP2P(const LLNotificationPtr& notification); + /** + * Writes notification message to IM p2p session. + */ + static void logToIMP2P(const LLNotificationPtr& notification, bool to_file_only); + /** * Writes group notice notification message to IM group session. */ @@ -309,7 +319,7 @@ class LLHandlerUtil /** * Spawns IM session. */ - static void spawnIMSession(const std::string& name, const LLUUID& from_id); + static LLUUID spawnIMSession(const std::string& name, const LLUUID& from_id); /** * Returns name from the notification's substitution. @@ -319,6 +329,16 @@ class LLHandlerUtil * @param notification - Notification which substitution's name will be returned. */ static std::string getSubstitutionName(const LLNotificationPtr& notification); + + /** + * Adds notification panel to the IM floater. + */ + static void addNotifPanelToIM(const LLNotificationPtr& notification); + + /** + * Reloads IM floater messages. + */ + static void reloadIMFloaterMessages(const LLNotificationPtr& notification); }; } diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index 02f948eca9d..f9b3b7187ad 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -39,6 +39,7 @@ #include "llagent.h" #include "llfloaterreg.h" #include "llnearbychat.h" +#include "llimfloater.h" using namespace LLNotificationsUI; @@ -90,6 +91,13 @@ bool LLHandlerUtil::canSpawnIMSession(const LLNotificationPtr& notification) || INVENTORY_DECLINED == notification->getName(); } +// static +bool LLHandlerUtil::canAddNotifPanelToIM(const LLNotificationPtr& notification) +{ + return OFFER_FRIENDSHIP == notification->getName(); +} + + // static bool LLHandlerUtil::canSpawnSessionAndLogToIM(const LLNotificationPtr& notification) { @@ -136,6 +144,12 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type, // static void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification) +{ + logToIMP2P(notification, false); +} + +// static +void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_file_only) { const std::string name = LLHandlerUtil::getSubstitutionName(notification); @@ -148,8 +162,16 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification) { LLUUID from_id = notification->getPayload()["from_id"]; - logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), - from_id, from_id); + if(to_file_only) + { + logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), + LLUUID(), LLUUID()); + } + else + { + logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), + from_id, from_id); + } } } @@ -191,7 +213,7 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat } // static -void LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_id) +LLUUID LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_id) { LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id); @@ -199,8 +221,10 @@ void LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_i session_id); if (session == NULL) { - LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL, from_id); + session_id = LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL, from_id); } + + return session_id; } // static @@ -210,3 +234,49 @@ std::string LLHandlerUtil::getSubstitutionName(const LLNotificationPtr& notifica ? notification->getSubstitutions()["NAME"] : notification->getSubstitutions()["[NAME]"]; } + +// static +void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification) +{ + const std::string name = LLHandlerUtil::getSubstitutionName(notification); + LLUUID from_id = notification->getPayload()["from_id"]; + + LLUUID session_id = spawnIMSession(name, from_id); + // add offer to session + LLIMModel::LLIMSession * session = LLIMModel::getInstance()->findIMSession( + session_id); + llassert_always(session != NULL); + + LLSD offer; + offer["notifiaction_id"] = notification->getID(); + offer["from_id"] = notification->getPayload()["from_id"]; + offer["from"] = name; + offer["time"] = LLLogChat::timestamp(true); + session->mMsgs.push_front(offer); + + LLIMFloater::show(session_id); +} + +// static +void LLHandlerUtil::reloadIMFloaterMessages( + const LLNotificationPtr& notification) +{ + LLUUID from_id = notification->getPayload()["from_id"]; + LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id); + LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>( + "impanel", session_id); + if (im_floater != NULL) + { + LLIMModel::LLIMSession * session = LLIMModel::getInstance()->findIMSession( + session_id); + if(session != NULL) + { + session->mMsgs.clear(); + std::list<LLSD> chat_history; + LLLogChat::loadAllHistory(session->mHistoryFileName, chat_history); + session->addMessagesFromHistory(chat_history); + } + + im_floater->reloadMessages(); + } +} diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index fad0c6a91e6..8c13b0fafa3 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -93,7 +93,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify) if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change") { - LLHandlerUtil::logToIMP2P(notification); + if( notification->getPayload().has("give_inventory_notification") && !notification->getPayload()["give_inventory_notification"] ) @@ -103,18 +103,25 @@ bool LLOfferHandler::processNotification(const LLSD& notify) } else { + LLUUID session_id; if (LLHandlerUtil::canSpawnIMSession(notification)) { const std::string name = LLHandlerUtil::getSubstitutionName(notification); LLUUID from_id = notification->getPayload()["from_id"]; - LLHandlerUtil::spawnIMSession(name, from_id); + session_id = LLHandlerUtil::spawnIMSession(name, from_id); } - if (notification->getPayload().has("SUPPRESS_TOAST") + if (LLHandlerUtil::canAddNotifPanelToIM(notification)) + { + LLHandlerUtil::addNotifPanelToIM(notification); + LLHandlerUtil::logToIMP2P(notification, true); + } + else if (notification->getPayload().has("SUPPRESS_TOAST") && notification->getPayload()["SUPPRESS_TOAST"]) { + LLHandlerUtil::logToIMP2P(notification); LLNotificationsUtil::cancel(notification); } else @@ -131,6 +138,8 @@ bool LLOfferHandler::processNotification(const LLSD& notify) if(channel) channel->addToast(p); + LLHandlerUtil::logToIMP2P(notification); + // send a signal to the counter manager mNewNotificationSignal(); } @@ -146,6 +155,10 @@ bool LLOfferHandler::processNotification(const LLSD& notify) } else { + if (LLHandlerUtil::canAddNotifPanelToIM(notification)) + { + LLHandlerUtil::reloadIMFloaterMessages(notification); + } mChannel->killToastByNotificationID(notification->getID()); } } diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 94acb2ae8ce..4d741456c42 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -43,6 +43,7 @@ #include "lluiconstants.h" #include "llrect.h" #include "lltrans.h" +#include "llnotificationsutil.h" const S32 BOTTOM_PAD = VPAD * 3; S32 BUTTON_WIDTH = 90; @@ -235,6 +236,10 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt LLToastNotifyPanel::~LLToastNotifyPanel() { std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer()); + if (LLNotificationsUtil::find(mNotification->getID()) != NULL) + { + LLNotifications::getInstance()->cancel(mNotification); + } } void LLToastNotifyPanel::updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 left_pad, S32 top) { 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 d2e54731573..9aaa660574c 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -12,7 +12,7 @@ can_minimize="true" can_close="true" visible="false" - width="360" + width="440" can_resize="true" min_width="250" min_height="190"> @@ -20,7 +20,7 @@ animate="false" follows="all" height="320" - width="360" + width="440" layout="topleft" orientation="horizontal" name="im_panels" @@ -38,7 +38,7 @@ left="0" top="0" height="200" - width="245" + width="325" user_resize="true"> <button height="20" @@ -65,7 +65,7 @@ parse_highlights="true" allow_html="true" left="1" - width="240"> + width="320"> </chat_history> <line_editor bottom="0" @@ -75,7 +75,7 @@ label="To" layout="bottomleft" name="chat_editor" - width="240"> + width="320"> </line_editor> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 787346f7cd0..2adee19ef65 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5156,7 +5156,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th <notification icon="notify.tga" name="OfferFriendship" - type="alertmodal"> + type="offer"> [NAME] is offering friendship. [MESSAGE] @@ -5171,10 +5171,6 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th index="1" name="Decline" text="Decline"/> - <button - index="2" - name="Send IM" - text="Send IM"/> </form> </notification> -- GitLab From 67d006e404d830931db17814e8da38cc55332152 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Fri, 29 Jan 2010 18:00:16 +0200 Subject: [PATCH 300/521] revert previous changes...think its not good idea --HG-- branch : product-engine --- .../skins/default/xui/en/panel_preferences_graphics1.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 9e502557683..82821a1dfe6 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -719,7 +719,7 @@ name="Apply" top="383" width="115" - visible="false"> + > <button.commit_callback function="Pref.Apply" /> </button> -- GitLab From 81451696f1de85e235818517c01b8d255d1bb661 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Fri, 29 Jan 2010 18:03:11 +0200 Subject: [PATCH 301/521] fixed EXT-4187 "X" does not close client after idle timeout / log off when "Confirm before I quit" is enabled --HG-- branch : product-engine --- indra/newview/llappviewer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 9bb0977c1a6..2d694eefd35 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2891,7 +2891,14 @@ static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_q void LLAppViewer::userQuit() { - LLNotificationsUtil::add("ConfirmQuit"); + if (gDisconnected) + { + requestQuit(); + } + else + { + LLNotificationsUtil::add("ConfirmQuit"); + } } static bool finish_early_exit(const LLSD& notification, const LLSD& response) -- GitLab From 09c2f013623797a165a1cccd539a3a86f8a0027f Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Fri, 29 Jan 2010 19:20:33 +0200 Subject: [PATCH 302/521] Fixed bug EXT-4170 ([BSI] Object picker in "Report Abuse" floater fails to identify owner when object is an attachment). Reason: The floater attempted to render avatar name from the attached object ID. Of course, the attempt failed. Fix: Changed to use the avatar ID. --HG-- branch : product-engine --- indra/newview/llfloaterreporter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 4a1eb51dbe9..0f3c176cead 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -248,6 +248,7 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) if ( objectp->isAttachment() ) { objectp = (LLViewerObject*)objectp->getRoot(); + mObjectID = objectp->getID(); } // correct the region and position information @@ -278,7 +279,7 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) object_owner.append("Unknown"); } - setFromAvatar(object_id, object_owner); + setFromAvatar(mObjectID, object_owner); } else { -- GitLab From fe90c259daab3a222a80e84db7b8a328d505a5a2 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Fri, 29 Jan 2010 19:32:42 +0200 Subject: [PATCH 303/521] Fixed major bug EXT-4767 (Any docked/undocked window overlaps Gesture menu). - Changed adding of gestures scrolllist from NonSideTrayView to FloaterViewHolder. --HG-- branch : product-engine --- indra/newview/llnearbychatbar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 6cf8bcb4178..ad98a29fb2e 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -97,9 +97,9 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) mList = LLUICtrlFactory::create<LLScrollListCtrl>(params); - // *HACK: adding list as a child to NonSideTrayView to make it fully visible without + // *HACK: adding list as a child to FloaterViewHolder to make it fully visible without // making it top control (because it would cause problems). - gViewerWindow->getNonSideTrayView()->addChild(mList); + gViewerWindow->getFloaterViewHolder()->addChild(mList); mList->setVisible(FALSE); //****************************Gesture Part********************************/ -- GitLab From ea7915c2aee486dfb3b7e29016c67a0c4a49cb0f Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Fri, 29 Jan 2010 19:52:52 +0200 Subject: [PATCH 304/521] Fixed bug EXT-4437 ([BSI] console warning flood when viewing profile) by suppressing duplicated warnings. --HG-- branch : product-engine --- indra/newview/llviewerparcelmgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index c5378659374..9d7ccd99c66 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1814,7 +1814,7 @@ void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void if (parcel_id != parcel->getLocalID()) { - llwarns << "processParcelAccessListReply for parcel " << parcel_id + LL_WARNS_ONCE("") << "processParcelAccessListReply for parcel " << parcel_id << " which isn't the selected parcel " << parcel->getLocalID()<< llendl; return; } -- GitLab From 3b34147ceafa02849fa3275e11ac2ae6a55c33a3 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Fri, 29 Jan 2010 19:55:41 +0200 Subject: [PATCH 305/521] Fixed low bug EXT-4721(Green border around multi-selected people) --HG-- branch : product-engine --- indra/llui/llflatlistview.cpp | 35 +++++++++-------------------------- indra/llui/llflatlistview.h | 2 -- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 3694ecd4f49..92993650a79 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -289,8 +289,8 @@ void LLFlatListView::resetSelection(bool no_commit_on_deselection /*= false*/) onCommit(); } - // Stretch selected items rect to ensure it won't be clipped - mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1)); + // Stretch selected item rect to ensure it won't be clipped + mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1)); } void LLFlatListView::setNoItemsCommentText(const std::string& comment_text) @@ -393,7 +393,7 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p) LLViewBorder::Params params; params.name("scroll border"); - params.rect(getSelectedItemsRect()); + params.rect(getLastSelectedItemRect()); params.visible(false); params.bevel_style(LLViewBorder::BEVEL_IN); mSelectedItemsBorder = LLUICtrlFactory::create<LLViewBorder> (params); @@ -480,8 +480,8 @@ void LLFlatListView::rearrangeItems() item_new_top -= (rc.getHeight() + mItemPad); } - // Stretch selected items rect to ensure it won't be clipped - mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1)); + // Stretch selected item rect to ensure it won't be clipped + mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1)); } void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask) @@ -664,8 +664,8 @@ bool LLFlatListView::selectItemPair(item_pair_t* item_pair, bool select) onCommit(); } - // Stretch selected items rect to ensure it won't be clipped - mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1)); + // Stretch selected item rect to ensure it won't be clipped + mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1)); return true; } @@ -680,23 +680,6 @@ LLRect LLFlatListView::getLastSelectedItemRect() return mSelectedItemPairs.back()->first->getRect(); } -LLRect LLFlatListView::getSelectedItemsRect() -{ - if (!mSelectedItemPairs.size()) - { - return LLRect::null; - } - LLRect rc = getLastSelectedItemRect(); - for ( pairs_const_iterator_t - it = mSelectedItemPairs.begin(), - it_end = mSelectedItemPairs.end(); - it != it_end; ++it ) - { - rc.unionWith((*it)->first->getRect()); - } - return rc; -} - void LLFlatListView::selectFirstItem () { selectItemPair(mItemPairs.front(), true); @@ -819,8 +802,8 @@ bool LLFlatListView::selectAll() onCommit(); } - // Stretch selected items rect to ensure it won't be clipped - mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1)); + // Stretch selected item rect to ensure it won't be clipped + mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1)); return true; } diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 5999e79f61b..949a731507f 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -368,8 +368,6 @@ class LLFlatListView : public LLScrollContainer LLRect getLastSelectedItemRect(); - LLRect getSelectedItemsRect(); - void ensureSelectedVisible(); private: -- GitLab From d3eb0e9765460801829419b15693b1b00ee5d369 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Fri, 29 Jan 2010 19:55:41 +0200 Subject: [PATCH 306/521] Fixed normal bug EXT-4697 (Buttons in bottom bar are compressed after quitting mouselook mode) and low bug EXT-4723 (Not all buttons are displayed on the bottom bar after leaving mouse look): - implemented the LLBottomTrayLite, which appears only in mouselook mode. --HG-- branch : product-engine --- indra/newview/llagent.cpp | 2 - indra/newview/llbottomtray.cpp | 173 ++++++++++-------- indra/newview/llbottomtray.h | 18 +- .../skins/default/xui/en/panel_bottomtray.xml | 9 +- .../default/xui/en/panel_bottomtray_lite.xml | 95 ++++++++++ 5 files changed, 199 insertions(+), 98 deletions(-) create mode 100644 indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index da0e9238d63..2354323a66d 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2805,7 +2805,6 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(TRUE); gStatusBar->setVisibleForMouselook(true); - LLBottomTray::getInstance()->setVisible(TRUE); LLBottomTray::getInstance()->onMouselookModeOut(); LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE); @@ -2906,7 +2905,6 @@ void LLAgent::endAnimationUpdateUI() gStatusBar->setVisibleForMouselook(false); LLBottomTray::getInstance()->onMouselookModeIn(); - LLBottomTray::getInstance()->setVisible(FALSE); LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE); LLSideTray::getInstance()->updateSidetrayVisibility(); diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index bd68d528680..a2d594cfa21 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -62,6 +62,39 @@ namespace const std::string& PANEL_GESTURE_NAME = "gesture_panel"; } +class LLBottomTrayLite + : public LLPanel +{ +public: + LLBottomTrayLite() + : mNearbyChatBar(NULL), + mGesturePanel(NULL) + { + mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bottomtray_lite.xml"); + // Necessary for focus movement among child controls + setFocusRoot(TRUE); + } + + BOOL postBuild() + { + mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar"); + mGesturePanel = getChild<LLPanel>("gesture_panel"); + return TRUE; + } + + void onFocusLost() + { + if (gAgent.cameraMouselook()) + { + LLBottomTray::getInstance()->setVisible(FALSE); + } + } + + LLNearbyChatBar* mNearbyChatBar; + LLPanel* mGesturePanel; +}; + LLBottomTray::LLBottomTray(const LLSD&) : mChicletPanel(NULL), mSpeakPanel(NULL), @@ -76,6 +109,8 @@ LLBottomTray::LLBottomTray(const LLSD&) , mSnapshotPanel(NULL) , mGesturePanel(NULL) , mCamButton(NULL) +, mBottomTrayLite(NULL) +, mIsInLiteMode(false) { // Firstly add ourself to IMSession observers, so we catch session events // before chiclets do that. @@ -100,6 +135,12 @@ LLBottomTray::LLBottomTray(const LLSD&) // Necessary for focus movement among child controls setFocusRoot(TRUE); + + { + mBottomTrayLite = new LLBottomTrayLite(); + mBottomTrayLite->setFollowsAll(); + mBottomTrayLite->setVisible(FALSE); + } } LLBottomTray::~LLBottomTray() @@ -134,6 +175,11 @@ void* LLBottomTray::createNearbyChatBar(void* userdata) return new LLNearbyChatBar(); } +LLNearbyChatBar* LLBottomTray::getNearbyChatBar() +{ + return mIsInLiteMode ? mBottomTrayLite->mNearbyChatBar : mNearbyChatBar; +} + LLIMChiclet* LLBottomTray::createIMChiclet(const LLUUID& session_id) { LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id); @@ -237,68 +283,27 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b mSpeakBtn->setEnabled(enable); } -//virtual -void LLBottomTray::onFocusLost() +void LLBottomTray::onMouselookModeOut() { - if (gAgent.cameraMouselook()) - { - setVisible(FALSE); - } + mIsInLiteMode = false; + mBottomTrayLite->setVisible(FALSE); + mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText()); + setVisible(TRUE); } -void LLBottomTray::savePanelsShape() +void LLBottomTray::onMouselookModeIn() { - mSavedShapeList.clear(); - for (child_list_const_iter_t - child_it = mToolbarStack->beginChild(), - child_it_end = mToolbarStack->endChild(); - child_it != child_it_end; ++child_it) - { - mSavedShapeList.push_back( (*child_it)->getRect() ); - } -} + setVisible(FALSE); -void LLBottomTray::restorePanelsShape() -{ - if (mSavedShapeList.size() != mToolbarStack->getChildCount()) - return; - int i = 0; - for (child_list_const_iter_t - child_it = mToolbarStack->beginChild(), - child_it_end = mToolbarStack->endChild(); - child_it != child_it_end; ++child_it) - { - (*child_it)->setShape(mSavedShapeList[i++]); - } -} + // Attach the lite bottom tray + if (getParent() && mBottomTrayLite->getParent() != getParent()) + getParent()->addChild(mBottomTrayLite); -void LLBottomTray::onMouselookModeOut() -{ - // Apply the saved settings when we are not in mouselook mode, see EXT-3988. - { - setTrayButtonVisibleIfPossible (RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"), false); - setTrayButtonVisibleIfPossible (RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"), false); - setTrayButtonVisibleIfPossible (RS_BUTTON_CAMERA, gSavedSettings.getBOOL("ShowCameraButton"), false); - setTrayButtonVisibleIfPossible (RS_BUTTON_SNAPSHOT, gSavedSettings.getBOOL("ShowSnapshotButton"),false); - } - // HACK: To avoid usage the LLLayoutStack logic of resizing, we force the updateLayout - // and then restore children saved shapes. See EXT-4309. - BOOL saved_anim = mToolbarStack->getAnimate(); - mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE); - // Disable animation to prevent layout updating in several frames. - mToolbarStack->setAnimate(FALSE); - // Force the updating of layout to reset panels collapse factor. - mToolbarStack->updateLayout(); - // Restore animate state. - mToolbarStack->setAnimate(saved_anim); - // Restore saved shapes. - restorePanelsShape(); -} + mBottomTrayLite->setShape(getLocalRect()); + mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText()); + mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton")); -void LLBottomTray::onMouselookModeIn() -{ - savePanelsShape(); - mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE); + mIsInLiteMode = true; } //virtual @@ -306,31 +311,14 @@ void LLBottomTray::onMouselookModeIn() // If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true), void LLBottomTray::setVisible(BOOL visible) { - LLPanel::setVisible(visible); - - // *NOTE: we must check mToolbarStack against NULL because setVisible is called from the - // LLPanel::initFromParams BEFORE postBuild is called and child controls are not exist yet - if (NULL != mToolbarStack) + if (mIsInLiteMode) { - BOOL visibility = gAgent.cameraMouselook() ? false : true; - - for ( child_list_const_iter_t child_it = mToolbarStack->getChildList()->begin(); - child_it != mToolbarStack->getChildList()->end(); child_it++) - { - LLView* viewp = *child_it; - std::string name = viewp->getName(); - - // Chat bar and gesture button are shown even in mouselook mode. - // But the move, camera and snapshot buttons shouldn't be displayed. See EXT-3988. - if ("chat_bar" == name || "gesture_panel" == name || (visibility && ("movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name))) - continue; - else - { - viewp->setVisible(visibility); - } - } + mBottomTrayLite->setVisible(visible); + } + else + { + LLPanel::setVisible(visible); } - if(visible) gFloaterView->setSnapOffsetBottom(getRect().getHeight()); else @@ -535,7 +523,18 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent) if (mChicletPanel && mToolbarStack && mNearbyChatBar) { - mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); + // Firstly, update layout stack to ensure we deal with correct panel sizes. + { + BOOL saved_anim = mToolbarStack->getAnimate(); + // Set chiclet panel to be autoresized by default. + mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); + // Disable animation to prevent layout updating in several frames. + mToolbarStack->setAnimate(FALSE); + // Force the updating of layout to reset panels collapse factor. + mToolbarStack->updateLayout(); + // Restore animate state. + mToolbarStack->setAnimate(saved_anim); + } // bottom tray is narrowed if (delta_width < 0) @@ -637,7 +636,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight()); - log(mChicletPanel, "after processing panel decreasing via nearby chatbar panel"); + log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel"); lldebugs << "RS_CHATBAR_INPUT" << ", delta_panel: " << delta_panel @@ -1057,6 +1056,11 @@ void LLBottomTray::initStateProcessedObjectMap() mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel)); mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel)); mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel)); + + mDummiesMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLUICtrl>("after_gesture_panel"))); + mDummiesMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLUICtrl>("after_movement_panel"))); + mDummiesMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLUICtrl>("after_cam_panel"))); + mDummiesMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLUICtrl>("after_speak_panel"))); } void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible) @@ -1069,6 +1073,11 @@ void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool vis } panel->setVisible(visible); + + if (mDummiesMap.count(shown_object_type)) + { + mDummiesMap[shown_object_type]->setVisible(visible); + } } void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification) @@ -1084,6 +1093,8 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type return; } + const S32 dummy_width = mDummiesMap.count(shown_object_type) ? mDummiesMap[shown_object_type]->getRect().getWidth() : 0; + const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth(); @@ -1093,7 +1104,7 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type const S32 available_width = (chatbar_panel_width - chatbar_panel_min_width) + (chiclet_panel_width - chiclet_panel_min_width); - const S32 required_width = panel->getRect().getWidth(); + const S32 required_width = panel->getRect().getWidth() + dummy_width; can_be_set = available_width >= required_width; } diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 562ee569125..ee0eb13218c 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -46,6 +46,7 @@ class LLNotificationChiclet; class LLSpeakButton; class LLNearbyChatBar; class LLIMChiclet; +class LLBottomTrayLite; // Build time optimization, generate once in .cpp file #ifndef LLBOTTOMTRAY_CPP @@ -60,13 +61,14 @@ class LLBottomTray { LOG_CLASS(LLBottomTray); friend class LLSingleton<LLBottomTray>; + friend class LLBottomTrayLite; public: ~LLBottomTray(); BOOL postBuild(); LLChicletPanel* getChicletPanel() {return mChicletPanel;} - LLNearbyChatBar* getNearbyChatBar() {return mNearbyChatBar;} + LLNearbyChatBar* getNearbyChatBar(); void onCommitGesture(LLUICtrl* ctrl); @@ -79,7 +81,6 @@ class LLBottomTray virtual void reshape(S32 width, S32 height, BOOL called_from_parent); - virtual void onFocusLost(); virtual void setVisible(BOOL visible); // Implements LLVoiceClientStatusObserver::onChange() to enable the speak @@ -172,13 +173,6 @@ class LLBottomTray */ void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true); - /** - * Save and restore children shapes. - * Used to avoid the LLLayoutStack resizing logic between mouse look mode switching. - */ - void savePanelsShape(); - void restorePanelsShape(); - MASK mResizeState; typedef std::map<EResizeState, LLPanel*> state_object_map_t; @@ -187,8 +181,8 @@ class LLBottomTray typedef std::map<EResizeState, S32> state_object_width_map_t; state_object_width_map_t mObjectDefaultWidthMap; - typedef std::vector<LLRect> shape_list_t; - shape_list_t mSavedShapeList; + typedef std::map<EResizeState, LLUICtrl*> dummies_map_t; + dummies_map_t mDummiesMap; protected: @@ -214,6 +208,8 @@ class LLBottomTray LLPanel* mGesturePanel; LLButton* mCamButton; LLButton* mMovementButton; + LLBottomTrayLite* mBottomTrayLite; + bool mIsInLiteMode; }; #endif // LL_LLBOTTOMPANEL_H diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 09ec2137b7c..aad55685d22 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -87,7 +87,7 @@ image_name="spacer24.tga" layout="topleft" left="0" - name="DUMMY" + name="after_speak_panel" min_width="3" top="0" width="3"/> @@ -127,7 +127,7 @@ layout="topleft" left="0" min_width="3" - name="DUMMY" + name="after_gesture_panel" top="0" width="3"/> <layout_panel @@ -169,7 +169,7 @@ layout="topleft" left="0" min_width="3" - name="DUMMY" + name="after_movement_panel" top="0" width="3"/> <layout_panel @@ -212,7 +212,7 @@ layout="topleft" left="0" min_width="3" - name="DUMMY" + name="after_cam_panel" top="0" width="3"/> <layout_panel @@ -317,6 +317,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. layout="topleft" left="0" min_width="4" + name="DUMMY" top="0" width="5"/> <layout_panel diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml new file mode 100644 index 00000000000..6e9476f8146 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + default_tab_group="2" + mouse_opaque="true" + background_visible="true" + bg_alpha_color="DkGray" + bg_opaque_color="DkGray" + follows="left|bottom|right" + height="33" + layout="topleft" + left="0" + name="bottom_tray_lite" + tab_stop="true" + top="28" + chrome="true" + border_visible="false" + visible="false" + width="1000"> + <layout_stack + mouse_opaque="false" + border_size="0" + clip="false" + follows="all" + height="28" + layout="topleft" + left="0" + name="toolbar_stack_lite" + orientation="horizontal" + top="0" + width="1000"> + <icon + auto_resize="false" + follows="left|right" + height="10" + image_name="spacer24.tga" + layout="topleft" + min_width="2" + left="0" + top="0" + width="2" /> + <layout_panel + mouse_opaque="false" + auto_resize="true" + follows="left|right" + height="28" + layout="topleft" + left="0" + min_height="23" + width="310" + top="4" + min_width="188" + name="chat_bar" + user_resize="false" + filename="panel_nearby_chat_bar.xml" /> + <layout_panel + mouse_opaque="false" + auto_resize="false" + follows="right" + height="28" + layout="topleft" + min_height="28" + width="82" + top_delta="0" + min_width="52" + name="gesture_panel" + user_resize="false"> + <gesture_combo_list + follows="left|right" + height="23" + label="Gesture" + layout="topleft" + name="Gesture" + left="0" + top="5" + width="82" + tool_tip="Shows/hides gestures"> + <gesture_combo_list.combo_button + pad_right="10" + use_ellipses="true" /> + </gesture_combo_list> + </layout_panel> + <icon + auto_resize="false" + color="0 0 0 0" + follows="left|right" + height="10" + image_name="spacer24.tga" + layout="topleft" + left="0" + min_width="3" + name="after_gesture_panel" + top="0" + width="3"/> + </layout_stack> +</panel> -- GitLab From 4fa3577b04e7a02b549ef8375c658632aecf630f Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Fri, 29 Jan 2010 18:51:51 +0200 Subject: [PATCH 307/521] Fixed LLGroupIcon to receive LLGroupManager callbacks. --HG-- branch : product-engine --- indra/newview/llgroupiconctrl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp index 0b03d49cbc0..5760242bc80 100644 --- a/indra/newview/llgroupiconctrl.cpp +++ b/indra/newview/llgroupiconctrl.cpp @@ -94,6 +94,7 @@ void LLGroupIconCtrl::setValue(const LLSD& value) if (mGroupId != value.asUUID()) { mGroupId = value.asUUID(); + mID = mGroupId; // set LLGroupMgrObserver::mID to make callbacks work // Check if cache already contains image_id for that group if (!updateFromCache()) -- GitLab From a328cdc83015a46a87377ad3c822c730c03026a3 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 29 Jan 2010 17:34:44 +0000 Subject: [PATCH 308/521] EXT-4493: Mark snapshot as dirty when changing quality slider. --- indra/newview/llfloatersnapshot.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 94c7ff6f947..a0031f01932 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -378,6 +378,7 @@ void LLSnapshotLivePreview::setSnapshotQuality(S32 quality) { mSnapshotQuality = quality; gSavedSettings.setS32("SnapshotQuality", quality); + mSnapshotUpToDate = FALSE; } } -- GitLab From 092f93b0c1084edf68fc0536aa03a3c7b816505b Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Fri, 29 Jan 2010 19:40:46 +0200 Subject: [PATCH 309/521] Fixed normal bug EXT-2124 - [BSI] New notifications of group chat messages do not identify the destination group chat of message. --HG-- branch : product-engine --- indra/newview/lltoastimpanel.cpp | 88 ++++++++++++++++--- indra/newview/lltoastimpanel.h | 6 ++ .../default/xui/en/panel_instant_message.xml | 10 +++ 3 files changed, 91 insertions(+), 13 deletions(-) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index 89a58cd736a..a436dc05460 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -33,7 +33,10 @@ #include "llviewerprecompiledheaders.h" #include "lltoastimpanel.h" +#include "llagent.h" #include "llfloaterreg.h" +#include "llgroupactions.h" +#include "llgroupiconctrl.h" #include "llnotifications.h" #include "llinstantmessage.h" #include "lltooltip.h" @@ -45,11 +48,12 @@ const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6; //-------------------------------------------------------------------------- LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notification), mAvatarIcon(NULL), mAvatarName(NULL), - mTime(NULL), mMessage(NULL) + mTime(NULL), mMessage(NULL), mGroupIcon(NULL) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); + mGroupIcon = getChild<LLGroupIconCtrl>("group_icon"); mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); mAvatarName = getChild<LLTextBox>("user_name"); mTime = getChild<LLTextBox>("time_box"); @@ -86,17 +90,26 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mAvatarID = p.avatar_id; mNotification = p.notification; + mAvatarIcon->setVisible(FALSE); + mGroupIcon->setVisible(FALSE); + sys_msg_icon->setVisible(FALSE); + if(p.from == SYSTEM_FROM) { - mAvatarIcon->setVisible(FALSE); sys_msg_icon->setVisible(TRUE); } else { - mAvatarIcon->setVisible(TRUE); - sys_msg_icon->setVisible(FALSE); - - mAvatarIcon->setValue(p.avatar_id); + if(LLGroupActions::isInGroup(mSessionID)) + { + mGroupIcon->setVisible(TRUE); + mGroupIcon->setValue(p.session_id); + } + else + { + mAvatarIcon->setVisible(TRUE); + mAvatarIcon->setValue(p.avatar_id); + } } S32 maxLinesCount; @@ -128,11 +141,39 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask) BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) { // It's not our direct child, so parentPointInView() doesn't work. - LLRect name_rect; - mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this); - if (!name_rect.pointInRect(x, y)) - return LLToastPanel::handleToolTip(x, y, mask); + LLRect ctrl_rect; + + mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &ctrl_rect, this); + if (ctrl_rect.pointInRect(x, y)) + { + spawnNameToolTip(); + return TRUE; + } + + mGroupIcon->localRectToOtherView(mGroupIcon->getLocalRect(), &ctrl_rect, this); + if(mGroupIcon->getVisible() && ctrl_rect.pointInRect(x, y)) + { + spawnGroupIconToolTip(); + return TRUE; + } + + return LLToastPanel::handleToolTip(x, y, mask); +} + +void LLToastIMPanel::showInspector() +{ + if(LLGroupActions::isInGroup(mSessionID)) + { + LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); + } + else + { + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); + } +} +void LLToastIMPanel::spawnNameToolTip() +{ // Spawn at right side of the name textbox. LLRect sticky_rect = mAvatarName->calcScreenRect(); S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16); @@ -149,10 +190,31 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) params.sticky_rect(sticky_rect); LLToolTipMgr::getInstance()->show(params); - return TRUE; } -void LLToastIMPanel::showInspector() +void LLToastIMPanel::spawnGroupIconToolTip() { - LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); + // Spawn at right bottom side of group icon. + LLRect sticky_rect = mGroupIcon->calcScreenRect(); + LLCoordGL pos(sticky_rect.mRight, sticky_rect.mBottom); + + LLGroupData g_data; + if(!gAgent.getGroupData(mSessionID, g_data)) + { + llwarns << "Error getting group data" << llendl; + } + + LLInspector::Params params; + params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); + params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this)); + params.delay_time(0.100f); + params.image(LLUI::getUIImage("Info_Small")); + params.message(g_data.mName); + params.padding(3); + params.pos(pos); + params.max_width(300); + + LLToolTipMgr::getInstance()->show(params); } + +// EOF diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 154e6dae16b..444c0af1447 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -39,6 +39,7 @@ #include "llbutton.h" #include "llavatariconctrl.h" +class LLGroupIconCtrl; class LLToastIMPanel: public LLToastPanel { @@ -61,12 +62,17 @@ class LLToastIMPanel: public LLToastPanel /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); private: void showInspector(); + + void spawnNameToolTip(); + void spawnGroupIconToolTip(); + static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; LLUUID mSessionID; LLUUID mAvatarID; LLAvatarIconCtrl* mAvatarIcon; + LLGroupIconCtrl* mGroupIcon; LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 7204e574792..5a1bc32db0e 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -35,6 +35,16 @@ name="avatar_icon" top="3" width="18" /> + <group_icon + follows="right" + height="18" + default_icon_name="Generic_Group" + layout="topleft" + left="3" + mouse_opaque="false" + name="group_icon" + top="3" + width="18" /> <!--<icon follows="right" height="20" -- GitLab From 3e76862aaa0852d5fd34e2321c69c67df41b5f67 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Fri, 29 Jan 2010 20:43:55 +0200 Subject: [PATCH 310/521] Partial fix for normal (EXT-4722) Ability to fly in a parcel when flying is disabled in the About Land - Added forced flying off when entering a parcel with no rights to fly in it. --HG-- branch : product-engine --- indra/newview/llviewerparcelmgr.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 9d7ccd99c66..b85b42c7100 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1591,6 +1591,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use instance->mTeleportInProgress = FALSE; instance->mTeleportFinishedSignal(gAgent.getPositionGlobal()); } + + // HACK: This makes agents drop from the sky if they enter a parcel + // which is set to no fly. + BOOL was_flying = gAgent.getFlying(); + if (was_flying && !parcel->getAllowFly()) + { + gAgent.setFlying(gAgent.canFly()); + } } } -- GitLab From 1b5880a18ef82d79d8c60bcf2745baf80f3fa571 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 10:46:48 -0800 Subject: [PATCH 311/521] notifiaction_id -> notification_id ouch. --- indra/newview/llimfloater.cpp | 4 ++-- indra/newview/llnotificationhandlerutil.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index c2bcb1cdf9d..9e52d4c6c24 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -604,9 +604,9 @@ void LLIMFloater::updateMessages() chat.mTimeStr = time; // process offer notification - if (msg.has("notifiaction_id")) + if (msg.has("notification_id")) { - chat.mNotifId = msg["notifiaction_id"].asUUID(); + chat.mNotifId = msg["notification_id"].asUUID(); } //process text message else diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index f9b3b7187ad..16218f6d535 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -248,7 +248,7 @@ void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification) llassert_always(session != NULL); LLSD offer; - offer["notifiaction_id"] = notification->getID(); + offer["notification_id"] = notification->getID(); offer["from_id"] = notification->getPayload()["from_id"]; offer["from"] = name; offer["time"] = LLLogChat::timestamp(true); -- GitLab From 6453d6d1ddc48f9e69ad45d6bba33fa9b2be76de Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Fri, 29 Jan 2010 20:49:54 +0200 Subject: [PATCH 312/521] Fixed low bug (EXT-2987) Parcel Characteristics icons aren't refreshed after changing restrictions - Added updating Parcel Characteristics icons in Location Input Control upon processing parcel properties. --HG-- branch : product-engine --- indra/newview/lllocationinputctrl.cpp | 67 +++++++++++++++++++++++---- indra/newview/lllocationinputctrl.h | 3 ++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 050cfcc3d92..0e93e28f2da 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -153,6 +153,23 @@ class LLRemoveLandmarkObserver : public LLInventoryObserver LLLocationInputCtrl* mInput; }; +class LLParcelChangeObserver : public LLParcelObserver +{ +public: + LLParcelChangeObserver(LLLocationInputCtrl* input) : mInput(input) {} + +private: + /*virtual*/ void changed() + { + if (mInput) + { + mInput->refreshParcelIcons(); + } + } + + LLLocationInputCtrl* mInput; +}; + //============================================================================ @@ -335,7 +352,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) mAddLandmarkObserver = new LLAddLandmarkObserver(this); gInventory.addObserver(mRemoveLandmarkObserver); gInventory.addObserver(mAddLandmarkObserver); - + + mParcelChangeObserver = new LLParcelChangeObserver(this); + LLViewerParcelMgr::getInstance()->addObserver(mParcelChangeObserver); + mAddLandmarkTooltip = LLTrans::getString("LocationCtrlAddLandmarkTooltip"); mEditLandmarkTooltip = LLTrans::getString("LocationCtrlEditLandmarkTooltip"); getChild<LLView>("Location History")->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip")); @@ -349,6 +369,9 @@ LLLocationInputCtrl::~LLLocationInputCtrl() delete mRemoveLandmarkObserver; delete mAddLandmarkObserver; + LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver); + delete mParcelChangeObserver; + mParcelMgrConnection.disconnect(); mLocationHistoryConnection.disconnect(); } @@ -673,15 +696,41 @@ void LLLocationInputCtrl::refreshParcelIcons() if (show_properties) { LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); + + LLViewerRegion* agent_region = gAgent.getRegion(); LLParcel* agent_parcel = vpm->getAgentParcel(); - bool allow_buy = vpm->canAgentBuyParcel( agent_parcel, false); - bool allow_voice = vpm->allowAgentVoice(); - bool allow_fly = vpm->allowAgentFly(); - bool allow_push = vpm->allowAgentPush(); - bool allow_build = agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. - bool allow_scripts = vpm->allowAgentScripts(); - bool allow_damage = vpm->allowAgentDamage(); - + if (!agent_region || !agent_parcel) + return; + + LLParcel* current_parcel; + LLViewerRegion* selection_region = vpm->getSelectionRegion(); + LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel(); + + // If agent is in selected parcel we use its properties because + // they are updated more often by LLViewerParcelMgr than agent parcel properties. + // See LLViewerParcelMgr::processParcelProperties(). + // This is needed to reflect parcel restrictions changes without having to leave + // the parcel and then enter it again. See EXT-2987 + if (selected_parcel && selected_parcel->getLocalID() == agent_parcel->getLocalID() + && selection_region == agent_region) + { + current_parcel = selected_parcel; + } + else + { + current_parcel = agent_parcel; + } + + bool allow_buy = vpm->canAgentBuyParcel(current_parcel, false); + bool allow_voice = agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice(); + bool allow_fly = !agent_region->getBlockFly() && current_parcel->getAllowFly(); + bool allow_push = !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject(); + bool allow_build = current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. + bool allow_scripts = !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) && + !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) && + current_parcel->getAllowOtherScripts(); + bool allow_damage = agent_region->getAllowDamage() || current_parcel->getAllowDamage(); + // Most icons are "block this ability" mForSaleBtn->setVisible(allow_buy); mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index 607ccd4da62..a830b33f6f9 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -42,6 +42,7 @@ class LLLandmark; // internals class LLAddLandmarkObserver; class LLRemoveLandmarkObserver; +class LLParcelChangeObserver; class LLMenuGL; class LLTeleportHistoryItem; @@ -56,6 +57,7 @@ class LLLocationInputCtrl LOG_CLASS(LLLocationInputCtrl); friend class LLAddLandmarkObserver; friend class LLRemoveLandmarkObserver; + friend class LLParcelChangeObserver; public: struct Params @@ -164,6 +166,7 @@ class LLLocationInputCtrl LLAddLandmarkObserver* mAddLandmarkObserver; LLRemoveLandmarkObserver* mRemoveLandmarkObserver; + LLParcelChangeObserver* mParcelChangeObserver; boost::signals2::connection mParcelMgrConnection; boost::signals2::connection mLocationHistoryConnection; -- GitLab From bc5cd7337f3b87d1805309cbd9e27f9d86fad100 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Fri, 29 Jan 2010 20:51:17 +0200 Subject: [PATCH 313/521] No ticket, Fixed displaying parcel voice permission in Place Profile. --HG-- branch : product-engine --- indra/newview/llpanelplaceprofile.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 8d689b2c5e4..9b31ef23a26 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -341,7 +341,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, std::string off = getString("off"); // Processing parcel characteristics - if (parcel->getParcelFlagAllowVoice()) + if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice()) { mVoiceIcon->setValue(icon_voice); mVoiceText->setText(on); @@ -385,9 +385,9 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mBuildText->setText(off); } - if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || - (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || - !parcel->getAllowOtherScripts()) + if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || + (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || + !parcel->getAllowOtherScripts()) { mScriptsIcon->setValue(icon_scripts_no); mScriptsText->setText(off); -- GitLab From fab60b8c05a89498bd8efeafdea8acfa5f94f06c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 11:08:04 -0800 Subject: [PATCH 314/521] requred -> required --- indra/newview/llfavoritesbar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 57e66194703..f5bb7774191 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -780,8 +780,8 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough. * Problem will gone, if we stretch out the button. For that reason I have to put additional 20 pixels. */ - int requred_width = mFont->getWidth(item->getName()) + 20; - int width = requred_width > def_button_width? def_button_width : requred_width; + int required_width = mFont->getWidth(item->getName()) + 20; + int width = required_width > def_button_width? def_button_width : required_width; LLFavoriteLandmarkButton* fav_btn = NULL; // do we have a place for next button + double buttonHGap + mChevronButton ? -- GitLab From 0db7f3a783f3514f31a09025bff9ca86589a1ca0 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Fri, 29 Jan 2010 21:09:28 +0200 Subject: [PATCH 315/521] Fixed major bug Bug EXT-4759 (Second incoming call notification doesn't appear if first call was canceled by caller). - Bug was caused by simply closing invite floater when call becomes invalid, so pending invite wasn't removed from IM manager and later this caused failure of check on which floater is shown. Added clearPendingAgentListUpdates() and clearPendingInvitation() before closure. --HG-- branch : product-engine --- indra/newview/llimview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 80d27789347..b7d4db853eb 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1733,6 +1733,9 @@ void LLIncomingCallDialog::onLifetimeExpired() { // close invitation if call is already not valid mLifetimeTimer.stop(); + LLUUID session_id = mPayload["session_id"].asUUID(); + gIMMgr->clearPendingAgentListUpdates(session_id); + gIMMgr->clearPendingInvitation(session_id); closeFloater(); } } -- GitLab From 2e2d65cd10a9b2664d3ce020ef7e7e4de3d6705a Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Fri, 29 Jan 2010 22:11:01 +0200 Subject: [PATCH 316/521] Partial fix for EXT-4756 (Black text in sell land confirmation dialog). Changed the color to more readable yellow for now. --HG-- branch : product-engine --- indra/newview/skins/default/colors.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index e2480479308..219b3dbeb62 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -97,7 +97,7 @@ value="1 0.82 0.46 1" /> <color name="AlertCautionTextColor" - reference="Black" /> + reference="Yellow" /> <color name="AgentLinkColor" reference="White" /> -- GitLab From b3a0419493c9d3fcea4ca5ba89fdd311feccfec6 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:07:36 -0800 Subject: [PATCH 317/521] CID-350 Checker: UNINIT_CTOR Function: LLDrawPoolAvatar::LLDrawPoolAvatar() File: /indra/newview/lldrawpoolavatar.cpp not a bug, just a dead member... --- indra/newview/lldrawpoolavatar.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h index 6a2b7fc2187..b9479436199 100644 --- a/indra/newview/lldrawpoolavatar.h +++ b/indra/newview/lldrawpoolavatar.h @@ -39,8 +39,6 @@ class LLVOAvatar; class LLDrawPoolAvatar : public LLFacePool { -protected: - S32 mNumFaces; public: enum { -- GitLab From 9c55d91f786eff48a27bf960e1f48f5369532e66 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:11:09 -0800 Subject: [PATCH 318/521] CID-349 Checker: UNINIT_CTOR Function: LLDrawPoolWater::LLDrawPoolWater() File: /indra/newview/lldrawpoolwater.cpp just another dead member. --- indra/newview/lldrawpoolwater.h | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h index 68a8172dd04..614f6452431 100644 --- a/indra/newview/lldrawpoolwater.h +++ b/indra/newview/lldrawpoolwater.h @@ -47,7 +47,6 @@ class LLDrawPoolWater: public LLFacePool LLPointer<LLViewerTexture> mWaterImagep; LLPointer<LLViewerTexture> mWaterNormp; - const LLWaterSurface *mWaterSurface; public: static BOOL sSkipScreenCopy; static BOOL sNeedsReflectionUpdate; -- GitLab From d74aff7869d45f3061026766bfbd2db942645ac9 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:13:37 -0800 Subject: [PATCH 319/521] CID-347 Checker: UNINIT_CTOR Function: LLDrawPoolSky::LLDrawPoolSky() File: /indra/newview/lldrawpoolsky.cpp --- indra/newview/lldrawpoolsky.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 8428be194f5..0f761650533 100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -48,8 +48,11 @@ #include "pipeline.h" #include "llviewershadermgr.h" -LLDrawPoolSky::LLDrawPoolSky() : - LLFacePool(POOL_SKY), mShader(NULL) +LLDrawPoolSky::LLDrawPoolSky() +: LLFacePool(POOL_SKY), + + mSkyTex(NULL), + mShader(NULL) { } @@ -132,6 +135,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) return; } + llassert(mSkyTex); mSkyTex[side].bindTexture(TRUE); face.renderIndexed(); -- GitLab From b05ca33c4aa350d342dee6b03d1481fce0924a53 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:16:02 -0800 Subject: [PATCH 320/521] CID-346 Checker: UNINIT_CTOR Function: LLFeatureManager::LLFeatureManager() File: /indra/newview/llfeaturemanager.h --- indra/newview/llfeaturemanager.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index 383963a41d8..dd218d428fa 100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h @@ -99,8 +99,14 @@ class LLFeatureList class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManager> { public: - LLFeatureManager() : - LLFeatureList("default"), mInited(FALSE), mTableVersion(0), mSafe(FALSE), mGPUClass(GPU_CLASS_UNKNOWN) + LLFeatureManager() + : LLFeatureList("default"), + + mInited(FALSE), + mTableVersion(0), + mSafe(FALSE), + mGPUClass(GPU_CLASS_UNKNOWN), + mGPUSupported(FALSE) { } ~LLFeatureManager() {cleanupFeatureTables();} -- GitLab From 5c01eca7dd9e14753829ed251735cfc89be25cb7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:18:29 -0800 Subject: [PATCH 321/521] CID-345 Checker: UNINIT_CTOR Function: LLConsole::LLConsole(const LLConsole::Params &) File: /indra/llui/llconsole.cpp --- indra/llui/llconsole.cpp | 4 +++- indra/llui/llconsole.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 59499f987b7..0237c80efa7 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -66,7 +66,9 @@ LLConsole::LLConsole(const LLConsole::Params& p) : LLUICtrl(p), LLFixedBuffer(p.max_lines), mLinePersistTime(p.persist_time), // seconds - mFont(p.font) + mFont(p.font), + mConsoleWidth(0), + mConsoleHeight(0) { if (p.font_size_index.isProvided()) { diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h index 5800a82922a..4719950f280 100644 --- a/indra/llui/llconsole.h +++ b/indra/llui/llconsole.h @@ -150,8 +150,6 @@ class LLConsole : public LLFixedBuffer, public LLUICtrl F32 mLinePersistTime; // Age at which to stop drawing. F32 mFadeTime; // Age at which to start fading const LLFontGL* mFont; - S32 mLastBoxHeight; - S32 mLastBoxWidth; S32 mConsoleWidth; S32 mConsoleHeight; -- GitLab From df657d7488014b9fa008da6a5f4307a19fee855e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:21:08 -0800 Subject: [PATCH 322/521] CID-344 Checker: UNINIT_CTOR Function: LLDockControl::LLDockControl(LLView *, LLFloater *, const LLPointer<LLUIImage> &, LLDockControl::DocAt, boost::function<void (LLRectBase<int> &)>) File: /indra/llui/lldockcontrol.cpp --- indra/llui/lldockcontrol.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 0d8e54aa486..d836a5f4cd8 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -37,7 +37,11 @@ LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater, const LLUIImagePtr& dockTongue, DocAt dockAt, get_allowed_rect_callback_t get_allowed_rect_callback) : - mDockWidget(dockWidget), mDockableFloater(dockableFloater), mDockTongue(dockTongue) + mDockWidget(dockWidget), + mDockableFloater(dockableFloater), + mDockTongue(dockTongue), + mDockTongueX(0), + mDockTongueY(0) { mDockAt = dockAt; -- GitLab From 32d66e60fddb26d0736149e16b1b57f7aa186146 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:36:58 -0800 Subject: [PATCH 323/521] CID-342 Checker: UNINIT_CTOR Function: LLNotification::LLNotification(LLUUID) File: /indra/llui/llnotifications.h 'don't use this for anything real' code shouldn't exist. :) --- indra/llui/llnotifications.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index aeb4cebf1b4..44ff7894ac6 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -369,10 +369,6 @@ friend class LLNotifications; LLNotification(const Params& p); - // this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT - // for anything real! - LLNotification(LLUUID uuid) : mId(uuid) {} - void cancel(); bool payloadContainsAll(const std::vector<std::string>& required_fields) const; -- GitLab From a07e40e70db8c9a4b90ff114c2bdca5a4ee6da83 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:53:20 -0800 Subject: [PATCH 324/521] CID-341 Checker: UNINIT_CTOR Function: LLNotificationComparators::orderBy<const LLUUID &>::orderBy(boost::function<const LLUUID &(boost::shared_ptr<LLNotification>)>, LLNotificationComparators::e_direction) File: /indra/llui/llnotifications.h --- indra/llui/llnotifications.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 44ff7894ac6..7269e433254 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -617,7 +617,7 @@ namespace LLNotificationComparators struct orderBy { typedef boost::function<T (LLNotificationPtr)> field_t; - orderBy(field_t field, EDirection = ORDER_INCREASING) : mField(field) {} + orderBy(field_t field, EDirection direction = ORDER_INCREASING) : mField(field), mDirection(direction) {} bool operator()(LLNotificationPtr lhs, LLNotificationPtr rhs) { if (mDirection == ORDER_DECREASING) -- GitLab From 5bf17543c2f920509ff2ffe713f4fff6ae10bdae Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 13:59:54 -0800 Subject: [PATCH 325/521] Backed out changeset 298497c8090c Gosh, I don't know why this unused ctor actually matters, but it does. o.O --- indra/llui/llnotifications.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 44ff7894ac6..aeb4cebf1b4 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -369,6 +369,10 @@ friend class LLNotifications; LLNotification(const Params& p); + // this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT + // for anything real! + LLNotification(LLUUID uuid) : mId(uuid) {} + void cancel(); bool payloadContainsAll(const std::vector<std::string>& required_fields) const; -- GitLab From 93b35ad444bea4257b2bd80029e3d01acec1f497 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:02:59 -0800 Subject: [PATCH 326/521] CID-342 alternative fix Checker: UNINIT_CTOR Function: LLNotification::LLNotification(LLUUID) File: /indra/llui/llnotifications.h --- indra/llui/llnotifications.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index cf76d00dcfb..d55e0f40432 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -371,7 +371,7 @@ friend class LLNotifications; // this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT // for anything real! - LLNotification(LLUUID uuid) : mId(uuid) {} + LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {} void cancel(); -- GitLab From 97e59b20f0a7bed7119496c0848ccefa79cac5e1 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:10:29 -0800 Subject: [PATCH 327/521] CID-340 Checker: UNINIT_CTOR Function: LLNotificationTemplate::LLNotificationTemplate() File: /indra/llui/llnotifications.cpp --- indra/llui/llnotifications.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index a67094b8cea..035ca3f26b6 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -384,7 +384,8 @@ LLNotificationTemplate::LLNotificationTemplate() : mExpireSeconds(0), mExpireOption(-1), mURLOption(-1), - mURLOpenExternally(-1), + mURLOpenExternally(-1), + mPersist(false), mUnique(false), mPriority(NOTIFICATION_PRIORITY_NORMAL) { -- GitLab From abd24efbf1182596db19e27ee4e9cacb28a4a9d7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:19:19 -0800 Subject: [PATCH 328/521] CID-337 Checker: UNINIT_CTOR Function: Translation::Translation() File: /indra/llcharacter/llbvhloader.h --- indra/llcharacter/llbvhloader.h | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h index 85ab035e61c..38617bd6d4c 100644 --- a/indra/llcharacter/llbvhloader.h +++ b/indra/llcharacter/llbvhloader.h @@ -166,6 +166,7 @@ class Translation Translation() { mIgnore = FALSE; + mIgnorePositions = FALSE; mRelativePositionKey = FALSE; mRelativeRotationKey = FALSE; mPriorityModifier = 0; -- GitLab From 47a7262713b9576304546f5ab139d2ca67c6c8e7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:29:28 -0800 Subject: [PATCH 329/521] CID-335 Checker: UNINIT_CTOR Function: LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &) File: /indra/llcharacter/llkeyframewalkmotion.cpp --- indra/llcharacter/llkeyframewalkmotion.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp index b5817e5bde0..d18f924b558 100644 --- a/indra/llcharacter/llkeyframewalkmotion.cpp +++ b/indra/llcharacter/llkeyframewalkmotion.cpp @@ -58,11 +58,15 @@ const F32 MAX_ROLL = 0.6f; // LLKeyframeWalkMotion() // Class Constructor //----------------------------------------------------------------------------- -LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id) : LLKeyframeMotion(id) +LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id) + : LLKeyframeMotion(id), + + mCharacter(NULL), + mCyclePhase(0.0f), + mRealTimeLast(0.0f), + mAdjTimeLast(0.0f), + mDownFoot(0.0f) { - mRealTimeLast = 0.0f; - mAdjTimeLast = 0.0f; - mCharacter = NULL; } -- GitLab From 6f364cf7c5a0dc01e8bab4818b4762d258b62a90 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:30:22 -0800 Subject: [PATCH 330/521] CID-335 follow-up --- indra/llcharacter/llkeyframewalkmotion.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp index d18f924b558..461309bee99 100644 --- a/indra/llcharacter/llkeyframewalkmotion.cpp +++ b/indra/llcharacter/llkeyframewalkmotion.cpp @@ -65,7 +65,7 @@ LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id) mCyclePhase(0.0f), mRealTimeLast(0.0f), mAdjTimeLast(0.0f), - mDownFoot(0.0f) + mDownFoot(0) { } -- GitLab From 8e45dfe2c6ffff26417d7c43120e1f4a23ba3cac Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:31:39 -0800 Subject: [PATCH 331/521] CID-334 Checker: UNINIT_CTOR Function: LLStateMachine::LLStateMachine() File: /indra/llcharacter/llstatemachine.cpp --- indra/llcharacter/llstatemachine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp index 73c69512112..f4eb59b0f2a 100644 --- a/indra/llcharacter/llstatemachine.cpp +++ b/indra/llcharacter/llstatemachine.cpp @@ -305,6 +305,7 @@ LLStateMachine::LLStateMachine() // we haven't received a starting state yet mCurrentState = NULL; mLastState = NULL; + mLastTransition = NULL; mStateDiagram = NULL; } -- GitLab From 0faac6bd1492575dc1f82c916cd9a8a8d6bdb797 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:32:35 -0800 Subject: [PATCH 332/521] CID-333 Checker: UNINIT_CTOR Function: LLStateDiagram::LLStateDiagram() File: /indra/llcharacter/llstatemachine.cpp --- indra/llcharacter/llstatemachine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp index f4eb59b0f2a..e6fa4d79858 100644 --- a/indra/llcharacter/llstatemachine.cpp +++ b/indra/llcharacter/llstatemachine.cpp @@ -54,6 +54,7 @@ bool operator!=(const LLUniqueID &a, const LLUniqueID &b) //----------------------------------------------------------------------------- LLStateDiagram::LLStateDiagram() { + mDefaultState = NULL; mUseDefaultState = FALSE; } -- GitLab From 73e62c0cb59f1234545b9aa96914426849c376f0 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:34:21 -0800 Subject: [PATCH 333/521] CID-332 Checker: UNINIT_CTOR Function: LLNotecard::LLNotecard(int) File: /indra/llinventory/llnotecard.cpp --- indra/llinventory/llnotecard.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/llinventory/llnotecard.cpp b/indra/llinventory/llnotecard.cpp index 9e7e0437610..f6e41eecb47 100644 --- a/indra/llinventory/llnotecard.cpp +++ b/indra/llinventory/llnotecard.cpp @@ -35,7 +35,9 @@ #include "llstreamtools.h" LLNotecard::LLNotecard(S32 max_text) -: mMaxText(max_text) + : mMaxText(max_text), + mVersion(0), + mEmbeddedVersion(0) { } -- GitLab From 138c1fa86dea9ab3e96feae2bae1c757c39d50ea Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:37:18 -0800 Subject: [PATCH 334/521] CID-330 Checker: UNINIT_CTOR Function: LLMaterialTable::LLMaterialTable() File: /indra/llprimitive/llmaterialtable.cpp --- indra/llprimitive/llmaterialtable.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp index 18787c47c57..774a58c8ac9 100644 --- a/indra/llprimitive/llmaterialtable.cpp +++ b/indra/llprimitive/llmaterialtable.cpp @@ -92,6 +92,9 @@ F32 const LLMaterialTable::DEFAULT_FRICTION = 0.5f; F32 const LLMaterialTable::DEFAULT_RESTITUTION = 0.4f; LLMaterialTable::LLMaterialTable() + : mCollisionSoundMatrix(NULL), + mSlidingSoundMatrix(NULL), + mRollingSoundMatrix(NULL) { } -- GitLab From f83ca2abd654ac632a869a7c010fbcb18120ee9f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:41:39 -0800 Subject: [PATCH 335/521] CID-329 Checker: UNINIT_CTOR Function: LLMaterialInfo::LLMaterialInfo(unsigned char, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, const LLUUID &) File: /indra/llprimitive/llmaterialtable.h --- indra/llprimitive/llmaterialtable.h | 83 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h index 2c0b046fa71..77f29a8e06c 100644 --- a/indra/llprimitive/llmaterialtable.h +++ b/indra/llprimitive/llmaterialtable.h @@ -38,6 +38,8 @@ #include <list> +class LLMaterialInfo; + const U32 LLMATERIAL_INFO_NAME_LENGTH = 256; // We've moved toward more reasonable mass values for the Havok4 engine. @@ -64,45 +66,6 @@ const F32 LEGACY_DEFAULT_OBJECT_DENSITY = 10.0f; const F32 DEFAULT_AVATAR_DENSITY = 445.3f; // was 444.24f; -class LLMaterialInfo -{ -public: - U8 mMCode; - std::string mName; - LLUUID mDefaultTextureID; - LLUUID mShatterSoundID; - F32 mDensity; // kg/m^3 - F32 mFriction; - F32 mRestitution; - - // damage and energy constants - F32 mHPModifier; // modifier on mass based HP total - F32 mDamageModifier; // modifier on KE based damage - F32 mEPModifier; // modifier on mass based EP total - - LLMaterialInfo(U8 mcode, const std::string& name, const LLUUID &uuid) - { - init(mcode,name,uuid); - }; - - void init(U8 mcode, const std::string& name, const LLUUID &uuid) - { - mDensity = 1000.f; // default to 1000.0 (water) - mHPModifier = 1.f; - mDamageModifier = 1.f; - mEPModifier = 1.f; - - mMCode = mcode; - mName = name; - mDefaultTextureID = uuid; - }; - - ~LLMaterialInfo() - { - }; - -}; - class LLMaterialTable { public: @@ -185,5 +148,47 @@ class LLMaterialTable static LLMaterialTable basic; }; + +class LLMaterialInfo +{ +public: + U8 mMCode; + std::string mName; + LLUUID mDefaultTextureID; + LLUUID mShatterSoundID; + F32 mDensity; // kg/m^3 + F32 mFriction; + F32 mRestitution; + + // damage and energy constants + F32 mHPModifier; // modifier on mass based HP total + F32 mDamageModifier; // modifier on KE based damage + F32 mEPModifier; // modifier on mass based EP total + + LLMaterialInfo(U8 mcode, const std::string& name, const LLUUID &uuid) + { + init(mcode,name,uuid); + }; + + void init(U8 mcode, const std::string& name, const LLUUID &uuid) + { + mDensity = 1000.f; // default to 1000.0 (water) + mFriction = LLMaterialTable::DEFAULT_FRICTION; + mRestitution = LLMaterialTable::DEFAULT_RESTITUTION; + mHPModifier = 1.f; + mDamageModifier = 1.f; + mEPModifier = 1.f; + + mMCode = mcode; + mName = name; + mDefaultTextureID = uuid; + }; + + ~LLMaterialInfo() + { + }; + +}; + #endif -- GitLab From d477b83325822989e0c4ad70fbee3797937215b7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:43:46 -0800 Subject: [PATCH 336/521] CID-328 Checker: UNINIT_CTOR Function: LLAgent::LLAgent() File: /indra/newview/tests/llviewerhelputil_test.cpp --- indra/newview/tests/llviewerhelputil_test.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp index 297d98ad8d2..dd61ac6ae57 100644 --- a/indra/newview/tests/llviewerhelputil_test.cpp +++ b/indra/newview/tests/llviewerhelputil_test.cpp @@ -87,8 +87,6 @@ class LLAgent __attribute__ ((noinline)) #endif BOOL isGodlike() const { return FALSE; } -private: - int dummy; }; LLAgent gAgent; -- GitLab From 68401771cd3ee60727e561a9576bda63a4e66637 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:53:16 -0800 Subject: [PATCH 337/521] CID-325 Checker: UNINIT_CTOR Function: LLNotificationForm::LLNotificationForm(const LLSD &) File: /indra/llui/llnotifications.cpp --- indra/llui/llnotifications.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 035ca3f26b6..5816cef6aff 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -283,6 +283,7 @@ LLNotificationForm::LLNotificationForm(const std::string& name, const LLXMLNodeP } LLNotificationForm::LLNotificationForm(const LLSD& sd) + : mIgnore(IGNORE_NO) { if (sd.isArray()) { -- GitLab From efe4ed283be8ac0861c38ebffc2637cd9293f267 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:54:57 -0800 Subject: [PATCH 338/521] CID-322 Checker: UNINIT_CTOR Function: LLInitParam::BaseBlock::BaseBlock() File: /indra/llxuixml/llinitparam.cpp --- indra/llxuixml/llinitparam.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 4c050844f86..d908c85da64 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -85,7 +85,8 @@ namespace LLInitParam // BaseBlock::BaseBlock() : mLastChangedParam(0), - mChangeVersion(0) + mChangeVersion(0), + mBlockDescriptor(NULL) {} BaseBlock::~BaseBlock() -- GitLab From 8f39cd1bc929c517e49055e69fc14a99e9158bc8 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:56:29 -0800 Subject: [PATCH 339/521] CID-321 Checker: UNINIT_CTOR Function: LLInitParam::ParamDescriptor::ParamDescriptor(...) --- indra/llxuixml/llinitparam.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 7e1e4a3d218..bdc6d146e61 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -321,13 +321,13 @@ namespace LLInitParam typedef bool(*validation_func_t)(const Param*); ParamDescriptor(param_handle_t p, - merge_func_t merge_func, - deserialize_func_t deserialize_func, - serialize_func_t serialize_func, - validation_func_t validation_func, - inspect_func_t inspect_func, - S32 min_count, - S32 max_count) + merge_func_t merge_func, + deserialize_func_t deserialize_func, + serialize_func_t serialize_func, + validation_func_t validation_func, + inspect_func_t inspect_func, + S32 min_count, + S32 max_count) : mParamHandle(p), mMergeFunc(merge_func), mDeserializeFunc(deserialize_func), @@ -336,6 +336,7 @@ namespace LLInitParam mInspectFunc(inspect_func), mMinCount(min_count), mMaxCount(max_count), + mGeneration(0), mNumRefs(0) {} -- GitLab From a8dd137a8de5915477ddc65cf1d5a508c85b745d Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 14:58:13 -0800 Subject: [PATCH 340/521] CID-320 Checker: UNINIT_CTOR Function: LLInitParam::BlockDescriptor::BlockDescriptor() File: /indra/llxuixml/llinitparam.h --- indra/llxuixml/llinitparam.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index bdc6d146e61..a84e47f9981 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -372,7 +372,8 @@ namespace LLInitParam public: BlockDescriptor() : mMaxParamOffset(0), - mInitializationState(UNINITIALIZED) + mInitializationState(UNINITIALIZED), + mCurrentBlockPtr(NULL) {} typedef enum e_initialization_state -- GitLab From fd5af776d91cb102c49dcdfef24935bf8280349c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:00:29 -0800 Subject: [PATCH 341/521] CID-319 Checker: UNINIT_CTOR Function: LLViewerLogin::LLViewerLogin() File: /indra/newview/tests/lllogininstance_test.cpp --- indra/newview/tests/lllogininstance_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index 7b28a3b72c3..f7ac5361c59 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -56,9 +56,9 @@ void LLLogin::disconnect() //----------------------------------------------------------------------------- #include "../llviewernetwork.h" -unsigned char gMACAddress[MAC_ADDRESS_BYTES] = {'1','2','3','4','5','6'}; /* Flawfinder: ignore */ +unsigned char gMACAddress[MAC_ADDRESS_BYTES] = {'1','2','3','4','5','6'}; -LLViewerLogin::LLViewerLogin() {} +LLViewerLogin::LLViewerLogin() : mGridChoice(GRID_INFO_NONE) {} LLViewerLogin::~LLViewerLogin() {} void LLViewerLogin::getLoginURIs(std::vector<std::string>& uris) const { -- GitLab From ee82ed694c85330d88712e92ee5d28685144f680 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:02:32 -0800 Subject: [PATCH 342/521] CID-317 Checker: UNINIT_CTOR Function: LLCacheNameEntry::LLCacheNameEntry() File: /indra/llmessage/llcachename.cpp --- indra/llmessage/llcachename.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index dbec2816c84..9363b3a8d55 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -81,6 +81,8 @@ class LLCacheNameEntry }; LLCacheNameEntry::LLCacheNameEntry() + : mIsGroup(false), + mCreateTime(0) { } -- GitLab From 86d07360f6eb58dda55c3673c863b8c9701b3d32 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:09:19 -0800 Subject: [PATCH 343/521] CID-316 Checker: UNINIT_CTOR Function: LLHTTPAssetRequest::LLHTTPAssetRequest(LLHTTPAssetStorage *, const LLUUID &, LLAssetType::EType, LLAssetStorage::ERequestType, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, void *) File: /indra/llmessage/llhttpassetstorage.cpp --- indra/llmessage/llhttpassetstorage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index 49dbdbd56d4..1980735bbb7 100644 --- a/indra/llmessage/llhttpassetstorage.cpp +++ b/indra/llmessage/llhttpassetstorage.cpp @@ -126,8 +126,9 @@ LLHTTPAssetRequest::LLHTTPAssetRequest(LLHTTPAssetStorage *asp, const std::string& url, CURLM *curl_multi) : LLAssetRequest(uuid, type), - mZInitialized(false) + mZInitialized(false) { + memset(&mZStream, 0, sizeof(mZStream)); // we'll initialize this later, but for now zero the whole C-style struct to avoid debug/coverity noise mAssetStoragep = asp; mCurlHandle = NULL; mCurlMultiHandle = curl_multi; -- GitLab From 3064b556ef56ffceda2c11217ac635ee18559751 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:11:32 -0800 Subject: [PATCH 344/521] CID-315 Checker: UNINIT_CTOR Function: LLIMInfo::LLIMInfo() File: /indra/llmessage/llinstantmessage.cpp --- indra/llmessage/llinstantmessage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp index 3da41939fae..a9e1ee77efe 100644 --- a/indra/llmessage/llinstantmessage.cpp +++ b/indra/llmessage/llinstantmessage.cpp @@ -68,9 +68,11 @@ const S32 IM_TTL = 1; * LLIMInfo */ LLIMInfo::LLIMInfo() : + mFromGroup(FALSE), mParentEstateID(0), mOffline(0), mViewerThinksToIsOnline(false), + mIMType(IM_NOTHING_SPECIAL), mTimeStamp(0), mSource(IM_FROM_SIM), mTTL(IM_TTL) -- GitLab From c99025f68f5a1433488b67915070056055f325fe Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:13:06 -0800 Subject: [PATCH 345/521] CID-314 Checker: UNINIT_CTOR Function: LLHTTPResponseHeader::LLHTTPResponseHeader() File: /indra/llmessage/lliohttpserver.cpp --- indra/llmessage/lliohttpserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index 97134bd336c..3b1ff414bce 100644 --- a/indra/llmessage/lliohttpserver.cpp +++ b/indra/llmessage/lliohttpserver.cpp @@ -403,7 +403,7 @@ void LLHTTPPipe::unlockChain() class LLHTTPResponseHeader : public LLIOPipe { public: - LLHTTPResponseHeader() {} + LLHTTPResponseHeader() : mCode(0) {} virtual ~LLHTTPResponseHeader() {} protected: -- GitLab From 54cc8274b07a66f412115aae92b18428670889eb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:14:33 -0800 Subject: [PATCH 346/521] CID-313 Checker: UNINIT_CTOR Function: LLHTTPPipe::LLHTTPPipe(const LLHTTPNode &) File: /indra/llmessage/lliohttpserver.cpp --- indra/llmessage/lliohttpserver.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index 3b1ff414bce..d6b672ef5cb 100644 --- a/indra/llmessage/lliohttpserver.cpp +++ b/indra/llmessage/lliohttpserver.cpp @@ -74,7 +74,12 @@ class LLHTTPPipe : public LLIOPipe { public: LLHTTPPipe(const LLHTTPNode& node) - : mNode(node), mResponse(NULL), mState(STATE_INVOKE), mChainLock(0), mStatusCode(0) + : mNode(node), + mResponse(NULL), + mState(STATE_INVOKE), + mChainLock(0), + mLockedPump(NULL), + mStatusCode(0) { } virtual ~LLHTTPPipe() { -- GitLab From 68304cbd02442589c28458e0e2574d3a31aa1282 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:15:52 -0800 Subject: [PATCH 347/521] CID-312 Checker: UNINIT_CTOR Function: LLHTTPPipe::Response::Response() File: /indra/llmessage/lliohttpserver.cpp --- indra/llmessage/lliohttpserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index d6b672ef5cb..27530fbfe10 100644 --- a/indra/llmessage/lliohttpserver.cpp +++ b/indra/llmessage/lliohttpserver.cpp @@ -116,7 +116,7 @@ class LLHTTPPipe : public LLIOPipe void nullPipe(); private: - Response() {;} // Must be accessed through LLPointer. + Response() : mPipe(NULL) {} // Must be accessed through LLPointer. LLHTTPPipe* mPipe; }; friend class Response; -- GitLab From bdbb42c0f6c1f2a8afafca58435446e4e3cc37a2 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:16:59 -0800 Subject: [PATCH 348/521] CID-311 Checker: UNINIT_CTOR Function: LLXfer::LLXfer(int) File: /indra/llmessage/llxfer.cpp --- indra/llmessage/llxfer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp index 8404f6519d1..7aa833ee327 100644 --- a/indra/llmessage/llxfer.cpp +++ b/indra/llmessage/llxfer.cpp @@ -74,6 +74,7 @@ void LLXfer::init (S32 chunk_size) mCallback = NULL; mCallbackDataHandle = NULL; + mCallbackResult = 0; mBufferContainsEOF = FALSE; mBuffer = NULL; -- GitLab From ce8e2fc322737e4afa56451ed13611c1c4b9dd45 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:19:56 -0800 Subject: [PATCH 349/521] CID-310 Checker: UNINIT_CTOR Function: LLSimpleResponse::LLSimpleResponse() File: /indra/llmessage/llhttpnode.h --- indra/llmessage/llhttpnode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h index 915aacb7ccb..8212f58653f 100644 --- a/indra/llmessage/llhttpnode.h +++ b/indra/llmessage/llhttpnode.h @@ -305,7 +305,7 @@ class LLSimpleResponse : public LLHTTPNode::Response ~LLSimpleResponse(); private: - LLSimpleResponse() {;} // Must be accessed through LLPointer. + LLSimpleResponse() : mCode(0) {} // Must be accessed through LLPointer. }; std::ostream& operator<<(std::ostream& out, const LLSimpleResponse& resp); -- GitLab From f4c0a5b042087214acc868783d4c98753070de5b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:30:41 -0800 Subject: [PATCH 350/521] partial appeasement for CID-309 only this piece really matters. a bit. Checker: UNINIT_CTOR Function: LLMessageSystem::LLMessageSystem(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int, int, int, int, bool, float, float) File: /indra/llmessage/message.cpp --- indra/llmessage/message.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index e56d818d652..916006bc2d5 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -253,6 +253,8 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port, { init(); + mSendSize = 0; + mSystemVersionMajor = version_major; mSystemVersionMinor = version_minor; mSystemVersionPatch = version_patch; @@ -323,6 +325,8 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port, mMaxMessageTime = 1.f; mTrueReceiveSize = 0; + + mReceiveTime = 0.f; } -- GitLab From 641f292a5ada637da3729c77ebfccd6b7edab538 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:31:56 -0800 Subject: [PATCH 351/521] CID-308 Checker: UNINIT_CTOR Function: LLPartSysCompressedPacket::LLPartSysCompressedPacket() File: /indra/llmessage/partsyspacket.cpp --- indra/llmessage/partsyspacket.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp index cfb3572d84b..2f9e59accbe 100644 --- a/indra/llmessage/partsyspacket.cpp +++ b/indra/llmessage/partsyspacket.cpp @@ -144,6 +144,8 @@ LLPartSysCompressedPacket::LLPartSysCompressedPacket() mData[i] = '\0'; } + mNumBytes = 0; + gSetInitDataDefaults(&mDefaults); } -- GitLab From 749eade1cb714728b7a98afdd94482603e121ea3 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:34:06 -0800 Subject: [PATCH 352/521] CID-307 Checker: UNINIT_CTOR Function: LLQueryResponder::LLQueryResponder() File: /indra/llmessage/llares.cpp --- indra/llmessage/llares.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp index 104629c157d..52edfc86b9c 100644 --- a/indra/llmessage/llares.cpp +++ b/indra/llmessage/llares.cpp @@ -175,7 +175,8 @@ void LLAres::rewriteURI(const std::string &uri, UriRewriteResponder *resp) LLQueryResponder::LLQueryResponder() : LLAres::QueryResponder(), - mResult(ARES_ENODATA) + mResult(ARES_ENODATA), + mType(RES_INVALID) { } -- GitLab From 1ce9515685408241495d7c6929bb37cb694d9006 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:35:36 -0800 Subject: [PATCH 353/521] CID-306 Checker: UNINIT_CTOR Function: LLAddrRecord::LLAddrRecord(LLResType, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int) File: /indra/llmessage/llares.cpp --- indra/llmessage/llares.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp index 52edfc86b9c..b29eb300fc8 100644 --- a/indra/llmessage/llares.cpp +++ b/indra/llmessage/llares.cpp @@ -642,8 +642,10 @@ LLPtrRecord::LLPtrRecord(const std::string &name, unsigned ttl) } LLAddrRecord::LLAddrRecord(LLResType type, const std::string &name, - unsigned ttl) - : LLDnsRecord(type, name, ttl) + unsigned ttl) + : LLDnsRecord(type, name, ttl), + + mSize(0) { } -- GitLab From a09b94eff726f2390fc9300883cba7cd429af5d3 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:37:28 -0800 Subject: [PATCH 354/521] CID-305 Checker: UNINIT_CTOR Function: LLSrvRecord::LLSrvRecord(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int) File: /indra/llmessage/llares.cpp --- indra/llmessage/llares.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp index b29eb300fc8..00e77d20e9d 100644 --- a/indra/llmessage/llares.cpp +++ b/indra/llmessage/llares.cpp @@ -704,7 +704,11 @@ int LLAaaaRecord::parse(const char *buf, size_t len, const char *pos, } LLSrvRecord::LLSrvRecord(const std::string &name, unsigned ttl) - : LLHostRecord(RES_SRV, name, ttl) + : LLHostRecord(RES_SRV, name, ttl), + + mPriority(0), + mWeight(0), + mPort(0) { } -- GitLab From a65a0c4cfb41fd3e4132761c3633ce58050523cc Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:51:24 -0800 Subject: [PATCH 355/521] CID-300 Checker: UNINIT_CTOR Function: LLJoint::LLJoint(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, LLJoint*) File: /indra/llcharacter/lljoint.cpp --- indra/llcharacter/lljoint.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp index 37afcb7cda9..5c492140512 100644 --- a/indra/llcharacter/lljoint.cpp +++ b/indra/llcharacter/lljoint.cpp @@ -70,6 +70,7 @@ LLJoint::LLJoint(const std::string &name, LLJoint *parent) mXform.setScaleChildOffset(TRUE); mXform.setScale(LLVector3(1.0f, 1.0f, 1.0f)); mDirtyFlags = MATRIX_DIRTY | ROTATION_DIRTY | POSITION_DIRTY; + mUpdateXform = FALSE; mJointNum = 0; setName(name); -- GitLab From 4cdb84d6c4302357a52ae5399a2ff9d998dc5779 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:53:14 -0800 Subject: [PATCH 356/521] CID-299 Checker: UNINIT_CTOR Function: LLUIColor::LLUIColor() File: /indra/llui/tests/llurlmatch_test.cpp --- indra/llui/tests/llurlmatch_test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp index f9dfee931ba..24a32de2681 100644 --- a/indra/llui/tests/llurlmatch_test.cpp +++ b/indra/llui/tests/llurlmatch_test.cpp @@ -25,6 +25,7 @@ // link seam LLUIColor::LLUIColor() + : mColorPtr(NULL) {} namespace tut -- GitLab From ccbf6088b7e383d7da8df40429b05fdb2c7523f6 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:54:24 -0800 Subject: [PATCH 357/521] CID-299 Checker: UNINIT_CTOR Function: LLUIColor::LLUIColor() File: /indra/llui/tests/llurlentry_test.cpp --- indra/llui/tests/llurlentry_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index 6fec1d3e10d..bc97cf3df2a 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -33,7 +33,7 @@ LLUIColor LLUIColorTable::getColor(const std::string& name, const LLColor4& defa return LLUIColor(); } -LLUIColor::LLUIColor() {} +LLUIColor::LLUIColor() : mColorPtr(NULL) {} namespace tut { -- GitLab From e5e654ac5a58512c1c14b06d28a81882926e4e46 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:57:33 -0800 Subject: [PATCH 358/521] CID-298 Checker: UNINIT_CTOR Function: LLMsgData::LLMsgData(const char *) File: /indra/llmessage/llmessagetemplate.h --- indra/llmessage/llmessagetemplate.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index d7f02ebd856..8abc0aaab24 100644 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h @@ -82,7 +82,7 @@ class LLMsgVarData class LLMsgBlkData { public: - LLMsgBlkData(const char *name, S32 blocknum) : mOffset(-1), mBlockNumber(blocknum), mTotalSize(-1) + LLMsgBlkData(const char *name, S32 blocknum) : mBlockNumber(blocknum), mTotalSize(-1) { mName = (char *)name; } @@ -108,7 +108,6 @@ class LLMsgBlkData temp->addData(data, size, type, data_size); } - S32 mOffset; S32 mBlockNumber; typedef LLDynamicArrayIndexed<LLMsgVarData, const char *, 8> msg_var_data_map_t; msg_var_data_map_t mMemberVarData; @@ -136,7 +135,6 @@ class LLMsgData void addDataFast(char *blockname, char *varname, const void *data, S32 size, EMsgVariableType type, S32 data_size = -1); public: - S32 mOffset; typedef std::map<char*, LLMsgBlkData*> msg_blk_data_map_t; msg_blk_data_map_t mMemberBlocks; char *mName; -- GitLab From 525569825f38a5d601c7151d46a638f31bf0658f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 15:58:45 -0800 Subject: [PATCH 359/521] CID-297 Checker: UNINIT_CTOR Function: LLFontFreetype::LLFontFreetype() File: /indra/llrender/llfontfreetype.cpp --- indra/llrender/llfontfreetype.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 786dc64452a..9f7f3b2c671 100644 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -112,6 +112,7 @@ LLFontFreetype::LLFontFreetype() mFTFace(NULL), mRenderGlyphCount(0), mAddGlyphCount(0), + mStyle(0), mPointSize(0) { } -- GitLab From 682f8afcc073b62fed64a3fd2adc5f65793e1f3e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Fri, 29 Jan 2010 16:01:01 -0800 Subject: [PATCH 360/521] CID-296 Checker: UNINIT_CTOR Function: LLFontGlyphInfo::LLFontGlyphInfo(unsigned int) File: /indra/llrender/llfontfreetype.cpp --- indra/llrender/llfontfreetype.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 9f7f3b2c671..59e7d890f43 100644 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -91,14 +91,15 @@ LLFontManager::~LLFontManager() LLFontGlyphInfo::LLFontGlyphInfo(U32 index) : mGlyphIndex(index), + mWidth(0), // In pixels + mHeight(0), // In pixels + mXAdvance(0.f), // In pixels + mYAdvance(0.f), // In pixels mXBitmapOffset(0), // Offset to the origin in the bitmap mYBitmapOffset(0), // Offset to the origin in the bitmap mXBearing(0), // Distance from baseline to left in pixels mYBearing(0), // Distance from baseline to top in pixels - mWidth(0), // In pixels - mHeight(0), // In pixels - mXAdvance(0.f), // In pixels - mYAdvance(0.f) // In pixels + mBitmapNum(0) // Which bitmap in the bitmap cache contains this glyph { } -- GitLab From 1de15af932742f198595b914b33a0af1dcc49894 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Fri, 29 Jan 2010 16:34:05 -0800 Subject: [PATCH 361/521] Fix button size so it works for most/all target languages --- indra/newview/skins/default/xui/en/floater_about.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index bfdd48e2f42..bc67621dfd6 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -91,7 +91,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number left="10" top_pad="5" height="25" - width="160" /> + width="180" /> </panel> <panel border="true" -- GitLab From 6d9d43948147b10336d15066d1fbd3dc3dff58ec Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Fri, 29 Jan 2010 17:08:28 -0800 Subject: [PATCH 362/521] DEV-43688 Cycle3 for FR --- .../default/xui/fr/floater_about_land.xml | 147 +++++---- .../xui/fr/floater_animation_preview.xml | 5 +- .../xui/fr/floater_avatar_textures.xml | 62 ++-- .../default/xui/fr/floater_bulk_perms.xml | 2 +- .../default/xui/fr/floater_buy_currency.xml | 2 +- .../default/xui/fr/floater_color_picker.xml | 2 +- .../default/xui/fr/floater_customize.xml | 62 ++-- .../default/xui/fr/floater_god_tools.xml | 12 +- .../default/xui/fr/floater_im_container.xml | 2 +- .../default/xui/fr/floater_incoming_call.xml | 6 + .../default/xui/fr/floater_lsl_guide.xml | 2 +- .../default/xui/fr/floater_media_browser.xml | 2 +- .../default/xui/fr/floater_outfit_save_as.xml | 11 + .../default/xui/fr/floater_outgoing_call.xml | 9 + .../default/xui/fr/floater_preferences.xml | 2 +- .../xui/fr/floater_preview_gesture.xml | 3 + .../xui/fr/floater_preview_notecard.xml | 2 +- .../xui/fr/floater_preview_texture.xml | 5 +- .../default/xui/fr/floater_report_abuse.xml | 4 +- .../default/xui/fr/floater_script_limits.xml | 2 + .../skins/default/xui/fr/floater_search.xml | 7 + .../default/xui/fr/floater_select_key.xml | 6 +- .../default/xui/fr/floater_sell_land.xml | 2 +- .../skins/default/xui/fr/floater_snapshot.xml | 20 +- .../skins/default/xui/fr/floater_sys_well.xml | 9 +- .../skins/default/xui/fr/floater_telehub.xml | 8 +- .../default/xui/fr/floater_texture_ctrl.xml | 2 +- .../skins/default/xui/fr/floater_tools.xml | 13 +- .../default/xui/fr/floater_top_objects.xml | 69 ++--- .../default/xui/fr/floater_voice_controls.xml | 30 +- .../xui/fr/floater_whitelist_entry.xml | 2 +- .../default/xui/fr/floater_window_size.xml | 17 ++ .../default/xui/fr/floater_world_map.xml | 150 +++++---- .../skins/default/xui/fr/inspect_avatar.xml | 10 +- .../skins/default/xui/fr/inspect_group.xml | 1 + .../default/xui/fr/menu_attachment_other.xml | 17 ++ .../default/xui/fr/menu_attachment_self.xml | 12 + .../skins/default/xui/fr/menu_avatar_icon.xml | 2 +- .../default/xui/fr/menu_avatar_other.xml | 16 + .../skins/default/xui/fr/menu_avatar_self.xml | 27 ++ .../skins/default/xui/fr/menu_bottomtray.xml | 5 + .../default/xui/fr/menu_im_well_button.xml | 4 + .../default/xui/fr/menu_imchiclet_adhoc.xml | 4 + .../default/xui/fr/menu_imchiclet_p2p.xml | 2 +- .../xui/fr/menu_inspect_avatar_gear.xml | 1 + .../skins/default/xui/fr/menu_inventory.xml | 8 +- .../xui/fr/menu_inventory_gear_default.xml | 2 + .../skins/default/xui/fr/menu_land.xml | 9 + .../skins/default/xui/fr/menu_login.xml | 6 +- .../xui/fr/menu_notification_well_button.xml | 4 + .../skins/default/xui/fr/menu_object.xml | 25 ++ .../default/xui/fr/menu_participant_list.xml | 17 +- .../default/xui/fr/menu_people_groups.xml | 8 + .../default/xui/fr/menu_people_nearby.xml | 1 + .../default/xui/fr/menu_profile_overflow.xml | 4 + .../skins/default/xui/fr/menu_viewer.xml | 46 ++- .../skins/default/xui/fr/mime_types_linux.xml | 217 +++++++++++++ .../skins/default/xui/fr/mime_types_mac.xml | 217 +++++++++++++ .../skins/default/xui/fr/notifications.xml | 154 ++++------ .../xui/fr/panel_active_object_row.xml | 9 + .../xui/fr/panel_adhoc_control_panel.xml | 16 +- .../default/xui/fr/panel_avatar_list_item.xml | 1 + .../xui/fr/panel_block_list_sidetray.xml | 4 +- .../skins/default/xui/fr/panel_bottomtray.xml | 12 +- .../default/xui/fr/panel_classified_info.xml | 4 +- .../default/xui/fr/panel_edit_classified.xml | 4 +- .../default/xui/fr/panel_edit_profile.xml | 5 +- .../skins/default/xui/fr/panel_friends.xml | 10 +- .../xui/fr/panel_group_control_panel.xml | 20 +- .../default/xui/fr/panel_group_general.xml | 8 +- .../xui/fr/panel_group_info_sidetray.xml | 2 + .../default/xui/fr/panel_group_invite.xml | 6 +- .../default/xui/fr/panel_group_list_item.xml | 1 + .../default/xui/fr/panel_group_notices.xml | 14 +- .../default/xui/fr/panel_group_notify.xml | 2 +- .../default/xui/fr/panel_im_control_panel.xml | 32 +- .../default/xui/fr/panel_landmark_info.xml | 1 + .../skins/default/xui/fr/panel_login.xml | 68 +++-- .../default/xui/fr/panel_main_inventory.xml | 6 +- .../xui/fr/panel_media_settings_general.xml | 22 +- .../fr/panel_media_settings_permissions.xml | 19 +- .../xui/fr/panel_media_settings_security.xml | 8 +- .../skins/default/xui/fr/panel_my_profile.xml | 80 +++-- .../default/xui/fr/panel_navigation_bar.xml | 3 + .../skins/default/xui/fr/panel_notes.xml | 18 +- .../xui/fr/panel_outfits_inventory.xml | 15 +- .../panel_outfits_inventory_gear_default.xml | 6 +- .../skins/default/xui/fr/panel_people.xml | 1 + .../skins/default/xui/fr/panel_picks.xml | 12 +- .../default/xui/fr/panel_place_profile.xml | 3 +- .../skins/default/xui/fr/panel_places.xml | 7 +- .../xui/fr/panel_preferences_alerts.xml | 4 +- .../default/xui/fr/panel_preferences_chat.xml | 10 +- .../xui/fr/panel_preferences_general.xml | 26 +- .../xui/fr/panel_preferences_privacy.xml | 8 +- .../xui/fr/panel_preferences_setup.xml | 8 +- .../xui/fr/panel_preferences_sound.xml | 4 +- .../xui/fr/panel_prim_media_controls.xml | 52 +++- .../skins/default/xui/fr/panel_profile.xml | 77 +++-- .../default/xui/fr/panel_region_estate.xml | 10 +- .../default/xui/fr/panel_region_general.xml | 6 +- .../xui/fr/panel_region_general_layout.xml | 43 +++ .../default/xui/fr/panel_region_texture.xml | 3 +- .../xui/fr/panel_script_limits_my_avatar.xml | 13 + .../fr/panel_script_limits_region_memory.xml | 24 ++ .../skins/default/xui/fr/panel_side_tray.xml | 11 +- .../skins/default/xui/fr/panel_status_bar.xml | 3 +- .../default/xui/fr/panel_teleport_history.xml | 4 +- .../xui/fr/panel_teleport_history_item.xml | 1 + .../skins/default/xui/fr/role_actions.xml | 245 ++++----------- .../default/xui/fr/sidepanel_appearance.xml | 8 +- .../default/xui/fr/sidepanel_inventory.xml | 2 +- .../default/xui/fr/sidepanel_item_info.xml | 57 ++-- .../default/xui/fr/sidepanel_task_info.xml | 76 ++--- .../newview/skins/default/xui/fr/strings.xml | 288 ++++++++++++++++-- 115 files changed, 1912 insertions(+), 988 deletions(-) create mode 100644 indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_script_limits.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_window_size.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_im_well_button.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_land.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_notification_well_button.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_object.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_people_groups.xml create mode 100644 indra/newview/skins/default/xui/fr/mime_types_linux.xml create mode 100644 indra/newview/skins/default/xui/fr/mime_types_mac.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_active_object_row.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_region_general_layout.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml index cf595edab9c..4c97551e556 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -13,7 +13,7 @@ restantes </floater.string> <tab_container name="landtab"> - <panel label="Général" name="land_general_panel"> + <panel label="GÉNÉRAL" name="land_general_panel"> <panel.string name="new users only"> Nouveaux utilisateurs uniquement </panel.string> @@ -36,10 +36,10 @@ (propriété du groupe) </panel.string> <panel.string name="profile_text"> - Profil... + Profil </panel.string> <panel.string name="info_text"> - Infos... + Infos </panel.string> <panel.string name="public_text"> (public) @@ -52,7 +52,6 @@ </panel.string> <panel.string name="no_selection_text"> Aucune parcelle sélectionnée. -Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre parcelle pour en afficher les détails. </panel.string> <text name="Name:"> Nom : @@ -80,14 +79,15 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text name="OwnerText"> Leyla Linden </text> - <button label="Profil..." label_selected="Profil..." name="Profile..."/> <text name="Group:"> Groupe : </text> - <text name="GroupText"/> - <button label="Définir..." label_selected="Définir..." name="Set..."/> + <text name="GroupText"> + Leyla Linden + </text> + <button label="Choisir" label_selected="Définir..." name="Set..."/> <check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier du groupe peut céder ce terrain à ce groupe, afin qu'il soit pris en charge par l'allocation de terrains du groupe."/> - <button label="Céder..." label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d'officier dans le groupe sélectionné."/> + <button label="Céder" label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d'officier dans le groupe sélectionné."/> <check_box label="Le propriétaire contribue en cédant du terrain" name="check contrib" tool_tip="Lorsqu'un terrain est cédé au groupe, l'ancien propriétaire fait également un don de terrain suffisant."/> <text name="For Sale:"> À vendre : @@ -96,18 +96,18 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa Pas à vendre </text> <text name="For Sale: Price L$[PRICE]."> - Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²). + Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²) </text> <text name="SalePending"/> - <button label="Vendre le terrain..." label_selected="Vendre le terrain..." name="Sell Land..."/> + <button label="Vendez du terrain" label_selected="Vendre le terrain..." name="Sell Land..."/> <text name="For sale to"> À vendre à : [BUYER] </text> <text name="Sell with landowners objects in parcel."> - Objets inclus dans la vente. + Objets inclus dans la vente </text> <text name="Selling with no objects in parcel."> - Objets non inclus dans la vente. + Objets non inclus dans la vente </text> <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/> <text name="Claimed:"> @@ -128,14 +128,15 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text name="DwellText"> 0 </text> - <button label="Acheter le terrain..." label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/> - <button label="Acheter pour le groupe..." label_selected="Acheter pour le groupe..." name="Buy For Group..."/> - <button label="Acheter un pass..." label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/> - <button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="Abandon Land..."/> - <button label="Redemander le terrain..." label_selected="Redemander le terrain…" name="Reclaim Land..."/> - <button label="Vente Linden..." label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d'un résident, avoir un contenu défini et ne pas être aux enchères."/> + <button label="Acheter du terrain" label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/> + <button label="Infos sur les scripts" name="Scripts..."/> + <button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/> + <button label="Acheter un pass" label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/> + <button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/> + <button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/> + <button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d'un résident, avoir un contenu défini et ne pas être aux enchères."/> </panel> - <panel label="Règlement" name="land_covenant_panel"> + <panel label="RÈGLEMENT" name="land_covenant_panel"> <panel.string name="can_resell"> Le terrain acheté dans cette région peut être revendu. </panel.string> @@ -153,9 +154,6 @@ ou divisé. <text name="estate_section_lbl"> Domaine : </text> - <text name="estate_name_lbl"> - Nom : - </text> <text name="estate_name_text"> continent </text> @@ -174,11 +172,8 @@ ou divisé. <text name="region_section_lbl"> Région : </text> - <text name="region_name_lbl"> - Nom : - </text> <text name="region_name_text"> - leyla + EricaVille </text> <text name="region_landtype_lbl"> Type : @@ -205,7 +200,7 @@ ou divisé. Le terrain dans cette région ne peut être fusionné/divisé. </text> </panel> - <panel label="Objets" name="land_objects_panel"> + <panel label="OBJETS" name="land_objects_panel"> <panel.string name="objects_available_text"> [COUNT] sur [MAX] ([AVAILABLE] disponibles) </panel.string> @@ -216,19 +211,19 @@ ou divisé. Facteur Bonus Objets : [BONUS] </text> <text name="Simulator primitive usage:"> - Prims utilisées sur la parcelle : + Utilisation des prims : </text> <text left="214" name="objects_available" width="230"> [COUNT] sur [MAX] ([AVAILABLE] disponibles) </text> <text name="Primitives parcel supports:" width="200"> - Prims max. sur la parcelle : + Prims max. sur la parcelle : </text> <text left="214" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> - Prims sur la parcelle : + Prims sur la parcelle : </text> <text left="214" name="total_objects_text" width="48"> [COUNT] @@ -240,7 +235,7 @@ ou divisé. [COUNT] </text> <button label="Afficher" label_selected="Afficher" name="ShowOwner" right="-135" width="60"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <button label="Retour" label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> <text left="14" name="Set to group:" width="180"> Données au groupe : </text> @@ -248,7 +243,7 @@ ou divisé. [COUNT] </text> <button label="Afficher" label_selected="Afficher" name="ShowGroup" right="-135" width="60"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <button label="Retour" label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> <text left="14" name="Owned by others:" width="128"> Appartenant à d'autres : </text> @@ -256,7 +251,7 @@ ou divisé. [COUNT] </text> <button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <button label="Retour" label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> <text left="14" name="Selected / sat upon:" width="193"> Sélectionnées/où quelqu'un est assis : </text> @@ -264,14 +259,14 @@ ou divisé. [COUNT] </text> <text left="4" name="Autoreturn" width="412"> - Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) : + Renvoi automatique des objets d'autres résidents (minutes, 0 pour désactiver) : </text> <line_editor name="clean other time" right="-6" width="36"/> <text name="Object Owners:"> Propriétaires : </text> - <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List"/> - <button label="Renvoyer les objets..." label_selected="Renvoyer les objets..." name="Return objects..."/> + <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List" tool_tip="Actualiser la liste des objets"/> + <button label="Renvoi des objets" label_selected="Renvoyer les objets..." name="Return objects..."/> <name_list label="Plus récents" name="owner list"> <name_list.columns label="Type" name="type"/> <name_list.columns name="online_status"/> @@ -280,7 +275,7 @@ ou divisé. <name_list.columns label="Plus récents" name="mostrecent"/> </name_list> </panel> - <panel label="Options" name="land_options_panel"> + <panel label="OPTIONS" name="land_options_panel"> <panel.string name="search_enabled_tooltip"> Permettre aux autres résidents de voir cette parcelle dans les résultats de recherche </panel.string> @@ -292,13 +287,13 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. Cette option est désactivée car vous ne pouvez pas modifier les options de cette parcelle. </panel.string> <panel.string name="mature_check_mature"> - Contenu Mature + Contenu Modéré </panel.string> <panel.string name="mature_check_adult"> Contenu Adult </panel.string> <panel.string name="mature_check_mature_tooltip"> - Les informations ou contenu de votre parcelle sont classés Mature. + Les informations ou contenu de votre parcelle sont classés Modéré. </panel.string> <panel.string name="mature_check_adult_tooltip"> Les informations ou contenu de votre parcelle sont classés Adult. @@ -313,31 +308,31 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. Pas de bousculades (les règles de la région priment) </panel.string> <text name="allow_label"> - Autoriser les autres résidents à  : + Autoriser les autres résidents à : </text> <check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n'importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/> <check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n'est pas cochée, ils ne pourront voler que lorsqu'ils arrivent et passent au dessus de votre terrain."/> <text left="152" name="allow_label2"> - Créer des objets : + Construire : </text> - <check_box label="Tous les résidents" left="285" name="edit objects check"/> + <check_box label="Tous" left="285" name="edit objects check"/> <check_box label="Groupe" left="395" name="edit group objects check"/> <text left="152" name="allow_label3" width="134"> Laisser entrer des objets : </text> - <check_box label="Tous les résidents" left="285" name="all object entry check"/> + <check_box label="Tous" left="285" name="all object entry check"/> <check_box label="Groupe" left="395" name="group object entry check"/> <text left="152" name="allow_label4"> Exécuter des scripts : </text> - <check_box label="Tous les résidents" left="285" name="check other scripts"/> + <check_box label="Tous" left="285" name="check other scripts"/> <check_box label="Groupe" left="395" name="check group scripts"/> <text name="land_options_label"> Options du terrain : </text> <check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n'y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/> <check_box bottom="-140" label="Pas de bousculades" left="14" name="PushRestrictCheck" tool_tip="Empêche l'utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/> - <check_box bottom="-160" label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/> + <check_box bottom="-160" label="Afficher le lieu dans la recherche (30 L$/semaine)" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/> <combo_box bottom="-160" left="286" name="land category with adult" width="146"> <combo_box.item label="Toutes catégories" name="item0"/> <combo_box.item label="Appartenant aux Lindens" name="item1"/> @@ -367,7 +362,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <combo_box.item label="Shopping" name="item11"/> <combo_box.item label="Autre" name="item12"/> </combo_box> - <check_box bottom="-180" label="Contenu Mature" name="MatureCheck" tool_tip=""/> + <check_box bottom="-180" label="Contenu Modéré" name="MatureCheck" tool_tip=""/> <text bottom="-200" name="Snapshot:"> Photo : </text> @@ -386,35 +381,32 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <combo_box.item label="Lieu d'arrivée libre" name="Anywhere"/> </combo_box> </panel> - <panel label="Médias" name="land_media_panel"> + <panel label="MÉDIA" name="land_media_panel"> <text name="with media:" width="85"> Type : </text> <combo_box left="97" name="media type" tool_tip="Indiquez s'il s'agit de l'URL d'un film, d'une page web ou autre"/> <text name="mime_type"/> <text name="at URL:" width="85"> - URL du domicile : + Page d'accueil : </text> <line_editor left="97" name="media_url"/> - <button label="Définir..." label_selected="Définir..." name="set_media_url"/> + <button label="Choisir" label_selected="Définir..." name="set_media_url"/> <text name="CurrentURL:"> - URL actuelle : + Page actuelle : </text> - <button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url"/> + <button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url" tool_tip="Actualiser l'URL"/> <check_box label="Masquer l'URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l'URL du média. Cette option n'est pas disponible pour les fichiers HTML."/> <text name="Description:"> Description : </text> <line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/> <text name="Media texture:"> - Remplacer -la texture : + Remplacer la texture : </text> <texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/> <text name="replace_texture_help"> - Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer. - -Sélectionnez l'image miniature pour choisir une texture différente. + Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer. Sélectionnez l'image miniature pour choisir une texture différente. </text> <check_box label="Échelle automatique" left="97" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l'échelle. La qualité visuelle sera peut-être amoindrie mais vous n'aurez à faire aucune autre mise à l'échelle ou alignement."/> <text left="102" name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105"> @@ -430,7 +422,7 @@ Sélectionnez l'image miniature pour choisir une texture différente. </text> <check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/> </panel> - <panel label="Audio" name="land_audio_panel"> + <panel label="SON" name="land_audio_panel"> <text name="MusicURL:"> URL de la musique : </text> @@ -445,19 +437,22 @@ Sélectionnez l'image miniature pour choisir une texture différente. <check_box label="Activer la voix (contrôlé par le domaine)" name="parcel_enable_voice_channel_is_estate_disabled"/> <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_parcel"/> </panel> - <panel label="Accès" name="land_access_panel"> + <panel label="ACCÈS" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (défini par le domaine + </panel.string> <panel.string name="estate_override"> Au moins une de ces options est définie au niveau du domaine. </panel.string> <text name="Limit access to this parcel to:"> Accès à cette parcelle </text> - <check_box label="Autoriser l'accès public" name="public_access"/> + <check_box label="Autoriser l'accès public [MATURITY]" name="public_access"/> <text name="Only Allow"> - Bloquer l'accès aux résidents : + Limiter l'accès aux résidents vérifiés par : </text> - <check_box label="Qui n'ont pas fourni leurs informations de paiement à Linden Lab" name="limit_payment" tool_tip="Aux résidents non identifés"/> - <check_box label="Dont l'âge n'a pas été vérifié" name="limit_age_verified" tool_tip="Interdire les résidents qui n'ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d'informations."/> + <check_box label="Informations de paiement enregistrées [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Bannir les résidents non identifiés."/> + <check_box label="Vérification de l'âge [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Bannir les résidents qui n'ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d'informations."/> <check_box label="Autoriser l'accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l'onglet Général."/> <check_box label="Vendre des pass à  :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/> <combo_box name="pass_combo"> @@ -466,18 +461,22 @@ Sélectionnez l'image miniature pour choisir une texture différente. </combo_box> <spinner label="Prix en L$ :" name="PriceSpin"/> <spinner label="Durée en heures :" name="HoursSpin"/> - <text label="Toujours autoriser" name="AllowedText"> - Résidents autorisés - </text> - <name_list name="AccessList" tool_tip="([LISTED] listés, [MAX] max)"/> - <button label="Ajouter..." label_selected="Ajouter..." name="add_allowed"/> - <button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/> - <text label="Bannir" name="BanCheck"> - Résidents bannis - </text> - <name_list name="BannedList" tool_tip="([LISTED] listés, [MAX] max)"/> - <button label="Ajouter..." label_selected="Ajouter..." name="add_banned"/> - <button label="Supprimer" label_selected="Supprimer" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <text label="Toujours autoriser" name="AllowedText"> + Résidents autorisés + </text> + <name_list name="AccessList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/> + <button label="Ajouter" name="add_allowed"/> + <button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/> + </panel> + <panel name="Banned_layout_panel"> + <text label="Bannir" name="BanCheck"> + Résidents bannis + </text> + <name_list name="BannedList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/> + <button label="Ajouter" name="add_banned"/> + <button label="Supprimer" label_selected="Supprimer" name="remove_banned"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml index e6302089730..f7a796a5086 100644 --- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml @@ -172,7 +172,8 @@ pendant </combo_box> <spinner label="Transition début (s)" name="ease_in_time" tool_tip="Durée (en secondes) de l'entrée en fondu de l'animation"/> <spinner label="Transition fin (s)" name="ease_out_time" tool_tip="Durée (en secondes) de la sortie en fondu de l'animation"/> - <button label="" name="play_btn" tool_tip="Lire/pauser votre animation"/> + <button label="" name="play_btn" tool_tip="Lire votre animation"/> + <button name="pause_btn" tool_tip="Pauser votre animation"/> <button label="" name="stop_btn" tool_tip="Arrêter le playback"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -180,6 +181,6 @@ pendant Nous recommandons les fichiers BVH extraits de Poser 4. </text> - <button label="Annuler" name="cancel_btn"/> <button label="Charger ([AMOUNT] L$)" name="ok_btn"/> + <button label="Annuler" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml index 142e13640a8..313c9496a29 100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml @@ -10,33 +10,37 @@ Textures composées </text> <button label="Vider ces ID dans la console" label_selected="Vider" left="-185" name="Dump" width="175"/> - <texture_picker label="Cheveux" name="hair-baked"/> - <texture_picker label="Cheveux" name="hair_grain"/> - <texture_picker label="Alpha cheveux" name="hair_alpha"/> - <texture_picker label="Tête" name="head-baked"/> - <texture_picker label="Maquillage" name="head_bodypaint"/> - <texture_picker label="Alpha tête" name="head_alpha"/> - <texture_picker label="Tatouage tête" name="head_tattoo"/> - <texture_picker label="Yeux" name="eyes-baked"/> - <texture_picker label="Å’il" name="eyes_iris"/> - <texture_picker label="Alpha yeux" name="eyes_alpha"/> - <texture_picker label="Haut du corps" name="upper-baked"/> - <texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/> - <texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/> - <texture_picker label="Gants" name="upper_gloves"/> - <texture_picker label="Chemise" name="upper_shirt"/> - <texture_picker label="Veste (haut)" name="upper_jacket"/> - <texture_picker label="Alpha haut" name="upper_alpha"/> - <texture_picker label="Tatouage haut" name="upper_tattoo"/> - <texture_picker label="Bas du corps" name="lower-baked"/> - <texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/> - <texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/> - <texture_picker label="Chaussettes" name="lower_socks"/> - <texture_picker label="Chaussures" name="lower_shoes"/> - <texture_picker label="Pantalon" name="lower_pants"/> - <texture_picker label="Veste" name="lower_jacket"/> - <texture_picker label="Alpha bas" name="lower_alpha"/> - <texture_picker label="Tatouage bas" name="lower_tattoo"/> - <texture_picker label="Jupe" name="skirt-baked"/> - <texture_picker label="Jupe" name="skirt"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="Cheveux" name="hair-baked"/> + <texture_picker label="Cheveux" name="hair_grain"/> + <texture_picker label="Alpha cheveux" name="hair_alpha"/> + <texture_picker label="Tête" name="head-baked"/> + <texture_picker label="Maquillage" name="head_bodypaint"/> + <texture_picker label="Alpha tête" name="head_alpha"/> + <texture_picker label="Tatouage tête" name="head_tattoo"/> + <texture_picker label="Yeux" name="eyes-baked"/> + <texture_picker label="Å’il" name="eyes_iris"/> + <texture_picker label="Alpha yeux" name="eyes_alpha"/> + <texture_picker label="Haut du corps" name="upper-baked"/> + <texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/> + <texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/> + <texture_picker label="Gants" name="upper_gloves"/> + <texture_picker label="Chemise" name="upper_shirt"/> + <texture_picker label="Veste (haut)" name="upper_jacket"/> + <texture_picker label="Alpha haut" name="upper_alpha"/> + <texture_picker label="Tatouage haut" name="upper_tattoo"/> + <texture_picker label="Bas du corps" name="lower-baked"/> + <texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/> + <texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/> + <texture_picker label="Chaussettes" name="lower_socks"/> + <texture_picker label="Chaussures" name="lower_shoes"/> + <texture_picker label="Pantalon" name="lower_pants"/> + <texture_picker label="Veste" name="lower_jacket"/> + <texture_picker label="Alpha bas" name="lower_alpha"/> + <texture_picker label="Tatouage bas" name="lower_tattoo"/> + <texture_picker label="Jupe" name="skirt-baked"/> + <texture_picker label="Jupe" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml index 0552cd31080..ecd9dd08638 100644 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml @@ -49,6 +49,6 @@ <check_box label="Modifier" name="next_owner_modify"/> <check_box label="Copier" name="next_owner_copy"/> <check_box initial_value="true" label="Transférer" name="next_owner_transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> - <button label="Ok" name="apply"/> + <button label="OK" name="apply"/> <button label="Annuler" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml index 4ca251f3d93..1f29025a249 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml @@ -46,7 +46,7 @@ [AMT] L$ </text> <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR exchange rate] + [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] </text> <text name="exchange_rate_note"> Saisissez à nouveau le montant pour voir le taux de change actuel. diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml index 0ad6a69d751..c509a4783e0 100644 --- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml @@ -21,7 +21,7 @@ <check_box label="Appliquer maintenant" left="4" name="apply_immediate" width="108"/> <button label="" label_selected="" left_delta="138" name="color_pipette"/> <button label="Annuler" label_selected="Annuler" name="cancel_btn"/> - <button label="Ok" label_selected="Ok" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text left="8" name="Current color:"> Couleur actuelle : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml index ccffb3f84a3..a1cd568571e 100644 --- a/indra/newview/skins/default/xui/fr/floater_customize.xml +++ b/indra/newview/skins/default/xui/fr/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="APPARENCE" width="548"> <tab_container name="customize tab container" tab_min_width="150" width="546"> - <placeholder label="Parties du corps" name="body_parts_placeholder"/> + <text label="Parties du corps" name="body_parts_placeholder"> + Parties du corps + </text> <panel label="Silhouette" left="154" name="Shape" width="389"> <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> <button label="Corps" label_selected="Corps" name="Body"/> @@ -14,8 +16,8 @@ <button label="Torse" label_selected="Torse" name="Torso"/> <button label="Jambes" label_selected="Jambes" name="Legs"/> <radio_group name="sex radio"> - <radio_item label="Femme" name="radio"/> - <radio_item label="Homme" name="radio2"/> + <radio_item label="Femme" name="radio" value="0"/> + <radio_item label="Homme" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,9 +35,7 @@ Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour changer de silhouette, faites-en glisser une à partir de votre -inventaire jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle -et de la porter. + Pour changer de silhouette, faites-en glisser une de votre inventaire à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -68,8 +68,7 @@ et de la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour changer de peau, faites-en glisser une à partir de votre inventaire. -Vous pouvez aussi en créer une nouvelle et la porter. + Pour changer de peau, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -106,9 +105,7 @@ Vous pouvez aussi en créer une nouvelle et la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour changer de chevelure, faites-en glisser une de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle -et la porter. + Pour changer de cheveux, faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -139,8 +136,7 @@ et la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour changer vos yeux, faites-les glisser de votre inventaire jusqu'à -votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. + Pour changer d'yeux, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -154,7 +150,9 @@ votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> </panel> - <placeholder label="Habits" name="clothes_placeholder"/> + <text label="Habits" name="clothes_placeholder"> + Habits + </text> <panel label="Chemise" name="Shirt"> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> @@ -179,8 +177,7 @@ votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter une nouvelle chemise, faites-en glisser une de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. + Pour changer de chemise, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -213,8 +210,7 @@ jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter un nouveau pantalon, faites-en glisser un de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. + Pour changer de pantalon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -240,9 +236,7 @@ jusqu'à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter de nouvelles chaussures, faites-en glisser une paire de votre -inventaire jusqu'à votre avatar. Vous pouvez aussi en créer une -nouvelle paire et la porter. + Pour changer de chaussures, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer des nouvelles et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -275,9 +269,7 @@ nouvelle paire et la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter de nouvelles chaussettes, faites-en glisser une paire de votre -inventaire jusqu'à votre avatar. Vous pouvez aussi en créer une -nouvelle paire et la porter. + Pour changer de chaussettes, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer des nouvelles et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -310,8 +302,7 @@ nouvelle paire et la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter une nouvelle veste, faites-en glisser une de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. + Pour changer de veste, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -345,8 +336,7 @@ jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter de nouveaux gants, faites-les glisser à partir de votre -inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter. + Pour changer de gants, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -379,8 +369,7 @@ inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter de nouveaux sous-vêtements, faites-les glisser à partir de -votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. + Pour changer de sous-vêtements (homme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -414,8 +403,7 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter de nouveaux sous-vêtements, faites-les glisser à partir de -votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. + Pour changer de sous-vêtements (femme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -449,8 +437,7 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. Emplacement : [PATH] </text> <text name="not worn instructions"> - Pour porter une nouvelle jupe, faites-en glisser une à partir de votre -inventaire. Vous pouvez aussi en créer une nouvelle et la porter. + Pour changer de jupe, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. @@ -483,8 +470,7 @@ inventaire. Vous pouvez aussi en créer une nouvelle et la porter. Dans [PATH] </text> <text name="not worn instructions"> - Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. -Vous pouvez aussi en créer un nouveau et le porter. + Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. </text> <text name="no modify instructions"> Vous n'avez pas le droit de modifier cet objet. @@ -520,8 +506,7 @@ Vous pouvez aussi en créer un nouveau et le porter. Dans [PATH] </text> <text name="not worn instructions"> - Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. -Vous pouvez aussi en créer un nouveau et le porter. + Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. </text> <text name="no modify instructions"> Vous n'avez pas le droit de modifier cet objet. @@ -540,6 +525,7 @@ Vous pouvez aussi en créer un nouveau et le porter. </panel> </tab_container> <scroll_container left="251" name="panel_container"/> + <button label="Infos sur les scripts" label_selected="Infos sur les scripts" name="script_info"/> <button label="Créer tenue" label_selected="Créer une tenue..." name="make_outfit_btn"/> <button label="Annuler" label_selected="Annuler" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml index 2bf0b9e2f39..0dedf499bbf 100644 --- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml @@ -12,8 +12,7 @@ <line_editor left="85" name="region name" width="198"/> <check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d'initiation."/> <check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine > Terrain.)"/> - <check_box height="32" label="Réinitialiser le domicile -à la téléportation" name="check reset home" tool_tip="Lorsqu'un résident se téléporte à l'extérieur, réinitialise son domicile à la position de sa destination."/> + <check_box height="32" label="Réinitialiser le domicile à la téléportation" name="check reset home" tool_tip="Quand les résidents s'en vont par téléportation, réinitialisez leur domicile sur l'emplacement de destination."/> <check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/> <check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/> <check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/> @@ -62,12 +61,9 @@ <text left_delta="75" name="region name"> Welsh </text> - <check_box label="Désactiver les -scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/> - <check_box label="Désactiver les -collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/> - <check_box label="Désactiver la -physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/> + <check_box label="Désactiver les scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/> + <check_box label="Désactiver les collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/> + <check_box label="Désactiver la physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/> <button bottom="-85" label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/> <button label="Définir la cible" label_selected="Définir la cible" name="Set Target" tool_tip="Définir l'avatar cible pour la suppression de l'objet."/> <text name="target_avatar_name"> diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml index 2637dfa6700..5ea073365e3 100644 --- a/indra/newview/skins/default/xui/fr/floater_im_container.xml +++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="Messages instantanés"/> +<multi_floater name="floater_im_box" title="CONVERSATIONS"/> diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml index d3c461a4276..110c61aedc9 100644 --- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="incoming call" title="APPEL D'UN(E)INCONNU(E)"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Chat vocal près de vous </floater.string> @@ -12,6 +15,9 @@ <floater.string name="VoiceInviteAdHoc"> a rejoint un chat vocal avec conférence. </floater.string> + <floater.string name="VoiceInviteGroup"> + a rejoint un chat vocal avec le groupe [GROUP]. + </floater.string> <text name="question"> Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ? </text> diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml index af6ae20dfe9..b92c0944dec 100644 --- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="WIKI LSL"> +<floater name="script ed float" title="RÉFÉRENCE LSL"> <check_box label="Suivre le curseur" name="lock_check"/> <combo_box label="Verrouiller" left_delta="120" name="history_combo" width="70"/> <button label="Précédente" left_delta="75" name="back_btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml index 339ca99c920..0677c5d41f8 100644 --- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml @@ -20,7 +20,7 @@ <button label="en avant" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="Envoyer l'URL sur la parcelle" name="assign"/> + <button label="Envoyer la page actuelle à la parcelle" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/> diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml new file mode 100644 index 00000000000..f5dfc8d6df9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container"> + <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <text name="Save item as:"> + Enregistrer la tenue sous : + </text> + <line_editor name="name ed"> + [DESC] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml index 38a9109c841..a6f0970502c 100644 --- a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="outgoing call" title="APPEL EN COURS"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Chat vocal près de vous </floater.string> @@ -21,6 +24,12 @@ <text name="noanswer"> Pas de réponse. Veuillez réessayer ultérieurement. </text> + <text name="nearby"> + Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. + </text> + <text name="nearby_P2P"> + [VOICE_CHANNEL_NAME] a mis fin à l'appel. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. + </text> <text name="leaving"> En train de quitter [CURRENT_CHAT]. </text> diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml index 3e6d3611cc9..4db7ca304c0 100644 --- a/indra/newview/skins/default/xui/fr/floater_preferences.xml +++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml @@ -8,7 +8,7 @@ <panel label="Confidentialité" name="im"/> <panel label="Son" name="audio"/> <panel label="Chat" name="chat"/> - <panel label="Alertes" name="msgs"/> + <panel label="Notifications" name="msgs"/> <panel label="Configuration" name="input"/> <panel label="Avancées" name="advanced1"/> </tab_container> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 6e8767ea073..7133f8754ca 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -24,6 +24,9 @@ <floater.string name="Title"> Geste : [NAME] </floater.string> + <text name="name_text"> + Nom : + </text> <text name="desc_label"> Description : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml index a10c01a24c0..d6ec915fd1f 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="Remarque :"> +<floater name="preview notecard" title="NOTE :"> <floater.string name="no_object"> Impossible de trouver l'objet contenant cette note. </floater.string> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml index 0acfd723230..2ff14b4a68b 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml @@ -9,8 +9,6 @@ <text name="desc txt"> Description : </text> - <button label="OK" name="Keep"/> - <button label="Annuler" name="Discard"/> <text name="dimensions"> [WIDTH] px x [HEIGHT] px </text> @@ -43,4 +41,7 @@ 2:1 </combo_item> </combo_box> + <button label="OK" name="Keep"/> + <button label="Annuler" name="Discard"/> + <button label="Enregistrer sous" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml index c6ffd326509..b96e15e4bbb 100644 --- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml @@ -42,7 +42,7 @@ <combo_box.item label="Sélectionnez une catégorie" name="Select_category"/> <combo_box.item label="Âge > « Age play »" name="Age__Age_play"/> <combo_box.item label="Âge > Résident adulte sur Second Life pour adolescents" name="Age__Adult_resident_on_Teen_Second_Life"/> - <combo_box.item label="Âge > Resident mineur en dehors de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Âge > Résident mineur en dehors de Second Life pour adolescents" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> <combo_box.item label="Assaut > Bac à sable utilisé pour des combats/zone non sécurisée" name="Assault__Combat_sandbox___unsafe_area"/> <combo_box.item label="Assaut > Zone sécurisée" name="Assault__Safe_area"/> <combo_box.item label="Assaut > Bac à sable pour tests d'armes à feu" name="Assault__Weapons_testing_sandbox"/> @@ -68,7 +68,7 @@ <combo_box.item label="Indécence > Contenu ou comportement offensifs" name="Indecency__Broadly_offensive_content_or_conduct"/> <combo_box.item label="Indécence > Nom d'avatar inapproprié" name="Indecency__Inappropriate_avatar_name"/> <combo_box.item label="Indécence > Contenu ou conduite inappropriés dans une région PG" name="Indecency__Mature_content_in_PG_region"/> - <combo_box.item label="Indécence > Contenu ou conduite inappropriés dans une région Mature" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Indécence > Contenu ou conduite inappropriés dans une région modérée" name="Indecency__Inappropriate_content_in_Mature_region"/> <combo_box.item label="Violation de droits de propriété intellectuelle > Suppression de contenu" name="Intellectual_property_infringement_Content_Removal"/> <combo_box.item label="Violation de droits de propriété intellectuelle > CopyBot ou exploitation abusive des droits" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> <combo_box.item label="Intolérance" name="Intolerance"/> diff --git a/indra/newview/skins/default/xui/fr/floater_script_limits.xml b/indra/newview/skins/default/xui/fr/floater_script_limits.xml new file mode 100644 index 00000000000..cc3aaa66531 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="INFORMATIONS SUR LES SCRIPTS"/> diff --git a/indra/newview/skins/default/xui/fr/floater_search.xml b/indra/newview/skins/default/xui/fr/floater_search.xml index 8f13b64dea4..672024466a3 100644 --- a/indra/newview/skins/default/xui/fr/floater_search.xml +++ b/indra/newview/skins/default/xui/fr/floater_search.xml @@ -6,4 +6,11 @@ <floater.string name="done_text"> Terminé </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Relancer la recherche pour refléter le niveau divin actuel + </text> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_select_key.xml b/indra/newview/skins/default/xui/fr/floater_select_key.xml index 0dc47df72ba..664bc0a7231 100644 --- a/indra/newview/skins/default/xui/fr/floater_select_key.xml +++ b/indra/newview/skins/default/xui/fr/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container"> - <button label="Annuler" label_selected="Annuler" name="Cancel" /> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> <text name="Save item as:"> - Appuyer sur une touche pour choisir + Appuyez sur une touche pour définir la touche de contrôle de la fonction Parler. </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml index 3a06f4e189f..e950a64c4c1 100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml @@ -39,7 +39,7 @@ Vendez votre terrain à n'importe qui ou uniquement à un acheteur spécifique. </text> <combo_box bottom_delta="-32" name="sell_to"> - <combo_box.item label="-- Sélectionnez --" name="--selectone--"/> + <combo_box.item label="- Sélectionnez -" name="--selectone--"/> <combo_box.item label="Tout le monde" name="Anyone"/> <combo_box.item label="Personne spécifique :" name="Specificuser:"/> </combo_box> diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml index 6c939b9c68f..486eafef013 100644 --- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml @@ -4,12 +4,12 @@ Destination de la photo </text> <radio_group label="Type de photo" name="snapshot_type_radio" width="228"> - <radio_item label="Envoyer par e-mail" name="postcard"/> - <radio_item label="Enregistrer dans votre inventaire ([AMOUNT] L$)" name="texture"/> - <radio_item label="Enregistrer sur votre disque dur" name="local"/> + <radio_item label="E-mail" name="postcard"/> + <radio_item label="Mon inventaire ([AMOUNT] L$)" name="texture"/> + <radio_item label="Enregistrer sur mon ordinateur" name="local"/> </radio_group> - <button label="Plus >>" name="more_btn" tool_tip="Options avancées"/> - <button label="<< Moins" name="less_btn" tool_tip="Options avancées"/> + <button label="Plus" name="more_btn" tool_tip="Options avancées"/> + <button label="Moins" name="less_btn" tool_tip="Options avancées"/> <text name="type_label2"> Taille </text> @@ -57,13 +57,13 @@ <combo_box.item label="Matte des objets" name="ObjectMattes"/> </combo_box> <text name="file_size_label"> - Taille du fichier : [SIZE] Ko + [SIZE] Ko </text> - <check_box label="Voir l'interface sur la photo" name="ui_check"/> - <check_box label="Voir les éléments HUD sur la photo" name="hud_check"/> + <check_box label="Interface" name="ui_check"/> + <check_box label="HUD" name="hud_check"/> <check_box label="Garder ouvert après enregistrement" name="keep_open_check"/> - <check_box label="Imposer les proportions" name="keep_aspect_check"/> - <check_box label="Prévisualisation plein écran (geler l'écran)" name="freeze_frame_check"/> + <check_box label="Contraindre les proportions" name="keep_aspect_check"/> + <check_box label="Arrêt sur image (plein écran)" name="freeze_frame_check"/> <button label="Rafraîchir" name="new_snapshot_btn"/> <check_box label="Rafraîchissement automatique" name="auto_snapshot_check"/> <button label="Enregistrer ([AMOUNT] L$)" name="upload_btn" width="118"/> diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml index 279320b04e5..9b0253065c8 100644 --- a/indra/newview/skins/default/xui/fr/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/fr/floater_sys_well.xml @@ -1,2 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="NOTIFICATIONS"/> +<floater name="notification_chiclet" title="NOTIFICATIONS"> + <string name="title_im_well_window"> + SESSIONS IM + </string> + <string name="title_notification_well_window"> + NOTIFICATIONS + </string> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml index 1c65a388284..a50cfc25c1d 100644 --- a/indra/newview/skins/default/xui/fr/floater_telehub.xml +++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml @@ -21,11 +21,9 @@ le téléhub. <button label="Ajouter point" name="add_spawn_point_btn"/> <button label="Supprimer point" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - Sélectionnez l'objet et cliquez sur Ajouter pour -indiquer la position. Vous pourrez ensuite -déplacer ou supprimer l'objet. + Sélectionnez l'objet et cliquez sur Ajouter pour indiquer la position. +Vous pourrez ensuite déplacer ou supprimer l'objet. Les positions sont relatives au centre du téléhub. -Sélectionnez l'élément dans la liste pour afficher -sa position dans le Monde. +Sélectionnez un objet dans la liste pour le mettre en surbrillance dans le monde virtuel. </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml index 197651c8fb4..381bcceb005 100644 --- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml @@ -17,7 +17,7 @@ <check_box label="Appliquer maintenant" name="apply_immediate_check"/> <button bottom="-240" label="" label_selected="" name="Pipette"/> <button label="Annuler" label_selected="Annuler" name="Cancel"/> - <button label="Ok" label_selected="Ok" name="Select"/> + <button label="OK" label_selected="OK" name="Select"/> <string name="pick title"> Choisir : </string> diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index e5a5998cfb0..3488ae15d10 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -451,12 +451,12 @@ <spinner label="Vertical (V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - URL du média + Média </text> <button name="add_media" tool_tip="Ajouter un média"/> <button name="delete_media" tool_tip="Supprimer cette texture de média"/> <button name="edit_media" tool_tip="Modifier ce média"/> - <button label="Aligner" label_selected="Aligner le média" name="button align"/> + <button label="Aligner" label_selected="Aligner le média" name="button align" tool_tip="Ajuster la texture du média (le chargement doit d'abord se terminer)"/> </panel> </panel> <panel label="Contenu" name="Contents"> @@ -475,14 +475,7 @@ Surface : [AREA] m² </text> <button label="À propos des terrains" label_selected="À propos des terrains" name="button about land" width="142"/> - <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorier les parcelles en fonction du type de leur propriétaire : - -Vert = votre terrain -Turquoise = le terrain de votre groupe -Rouge = appartenant à d'autres -Jaune = en vente -Mauve = aux enchères -Gris = public"/> + <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorier les parcelles en fonction du type de leur propriétaire : Vert = votre terrain Turquoise = le terrain de votre groupe Rouge = appartenant à d'autres Jaune = en vente Mauve = aux enchères Gris = public"/> <text name="label_parcel_modify"> Modifier la parcelle </text> diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml index 479559367f8..42352e7c1e9 100644 --- a/indra/newview/skins/default/xui/fr/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/fr/floater_top_objects.xml @@ -1,55 +1,56 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="EN COURS DE CHARGEMENT..."> +<floater name="top_objects" title="Objets les plus utilisés"> + <floater.string name="top_scripts_title"> + Scripts principaux + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT] scripts prenant un total de [TIME] ms + </floater.string> + <floater.string name="scripts_score_label"> + Heure + </floater.string> + <floater.string name="scripts_mono_time_label"> + Heure Mono + </floater.string> + <floater.string name="top_colliders_title"> + Collisions les plus consommatrices + </floater.string> + <floater.string name="top_colliders_text"> + [COUNT] collisions les plus consommatrices + </floater.string> + <floater.string name="colliders_score_label"> + Score + </floater.string> + <floater.string name="none_descriptor"> + Aucun résultat. + </floater.string> <text name="title_text"> Chargement... </text> <scroll_list name="objects_list"> - <column label="Score" name="score"/> - <column label="Nom" name="name"/> - <column label="Propriétaire" name="owner"/> - <column label="Lieu" name="location"/> - <column label="Heure" name="time"/> - <column label="Heure Mono" name="mono_time"/> + <scroll_list.columns label="Score" name="score"/> + <scroll_list.columns label="Nom" name="name"/> + <scroll_list.columns label="Propriétaire" name="owner"/> + <scroll_list.columns label="Lieu" name="location"/> + <scroll_list.columns label="Heure" name="time"/> + <scroll_list.columns label="Heure Mono" name="mono_time"/> + <scroll_list.columns label="URL" name="URLs"/> </scroll_list> <text name="id_text"> ID de l'objet : </text> <button label="Afficher balise" name="show_beacon_btn"/> <text name="obj_name_text"> - Objet : + Nom : </text> <button label="Filtre" name="filter_object_btn"/> <text name="owner_name_text"> - Propriétaire : + Propriétaire : </text> <button label="Filtre" name="filter_owner_btn"/> + <button label="Rafraîchir" name="refresh_btn"/> <button label="Renvoyer" name="return_selected_btn"/> <button label="Tout renvoyer" name="return_all_btn"/> <button label="Désactiver" name="disable_selected_btn"/> <button label="Tout désactiver" name="disable_all_btn"/> - <button label="Rafraîchir" name="refresh_btn"/> - <string name="top_scripts_title"> - Scripts principaux - </string> - <string name="top_scripts_text"> - [COUNT] scripts prenant un total de [TIME] ms - </string> - <string name="scripts_score_label"> - Heure - </string> - <string name="scripts_mono_time_label"> - Heure Mono - </string> - <string name="top_colliders_title"> - Collisions les plus consommatrices - </string> - <string name="top_colliders_text"> - [COUNT] collisions les plus consommatrices - </string> - <string name="colliders_score_label"> - Score - </string> - <string name="none_descriptor"> - Aucun résultat. - </string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml index 02d64306995..54ba2ad3e50 100644 --- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml @@ -1,13 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_voice_controls" title="Contrôles vocaux"> - <panel name="control_panel"> - <panel name="my_panel"> - <text name="user_text" value="Mon avatar :"/> - </panel> - <layout_stack> - <layout_panel> - <slider_bar name="volume_slider_bar" tool_tip="Volume principal"/> - </layout_panel> - </layout_stack> - </panel> + <string name="title_nearby"> + CHAT VOCAL PRÈS DE VOUS + </string> + <string name="title_group"> + Appel de groupe avec [GROUP] + </string> + <string name="title_adhoc"> + Téléconférence + </string> + <string name="title_peer_2_peer"> + Appel avec [NAME] + </string> + <string name="no_one_near"> + Il n'y a personne près de vous avec le chat vocal activé + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Quitter l'appel" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml index f1ba403bf9d..99e4954555a 100644 --- a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="whitelist_entry"> +<floater name="whitelist_entry" title="ENTRÉE DE LA LISTE BLANCHE"> <text name="media_label"> Saisissez une URL ou un style d'URL à ajouter à la liste des domaines autorisés </text> diff --git a/indra/newview/skins/default/xui/fr/floater_window_size.xml b/indra/newview/skins/default/xui/fr/floater_window_size.xml new file mode 100644 index 00000000000..cbda4390d8f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="TAILLE DE LA FENÊTRE"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + Définir la taille de la fenêtre : + </text> + <combo_box name="window_size_combo" tool_tip="largeur x hauteur"> + <combo_box.item label="1 000 x 700 (défaut)" name="item0"/> + <combo_box.item label="1 024 x 768" name="item1"/> + <combo_box.item label="1 280 x 720 (720 p)" name="item2"/> + <combo_box.item label="1 920 x 1 080 (1 080p)" name="item3"/> + </combo_box> + <button label="Choisir" name="set_btn"/> + <button label="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml index 03bbd0af084..3ac3580d4b9 100644 --- a/indra/newview/skins/default/xui/fr/floater_world_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml @@ -1,68 +1,90 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="CARTE DU MONDE"> <panel name="objects_mapview" width="542"/> - <icon left="-270" name="self"/> - <text name="you_label"> - Vous - </text> - <icon name="home"/> - <text name="home_label"> - Domicile - </text> - <icon left="-270" name="square2"/> - <text name="auction_label"> - Terrain aux enchères - </text> - <icon left_delta="130" name="square"/> - <text name="land_for_sale_label"> - Terrain à vendre - </text> - <button label="Aller chez moi" label_selected="Aller chez moi" left="-120" name="Go Home" tool_tip="Vous téléporte à votre domicile" width="108"/> - <icon left="-262" name="person"/> - <check_box label="Résident" name="people_chk"/> - <icon left="-266" name="infohub"/> - <check_box label="Infohub" name="infohub_chk"/> - <icon left="-266" name="telehub"/> - <check_box label="Téléhub" name="telehub_chk"/> - <icon left="-266" name="landforsale"/> - <check_box label="Terrain à vendre" name="land_for_sale_chk"/> - <text left="-144" name="events_label"> - Événements : - </text> - <icon left="-132" name="event"/> - <check_box label="PG" name="event_chk"/> - <icon left="-132" name="events_mature_icon"/> - <check_box initial_value="true" label="Mature" name="event_mature_chk"/> - <icon left="-132" name="events_adult_icon"/> - <check_box label="Adult" name="event_adult_chk"/> - <icon left="-270" name="avatar_icon"/> - <combo_box label="Amis connectés" name="friend combo" tool_tip="Ami(e) à afficher sur la carte" width="232"> - <combo_box.item label="Amis connectés" name="item1"/> - </combo_box> - <icon left="-270" name="landmark_icon"/> - <combo_box label="Repères" name="landmark combo" tool_tip="Repère à afficher sur la carte" width="232"> - <combo_box.item label="Repères" name="item1"/> - </combo_box> - <icon left="-270" name="location_icon"/> - <line_editor label="Rechercher par nom de région" name="location" tool_tip="Saisissez le nom d'une région" width="155"/> - <button label="Rechercher" label_selected=">" left_delta="160" name="DoSearch" tool_tip="Recherchez sur la carte" width="75"/> - <text left="-270" name="search_label"> - Résultats de la recherche : - </text> - <scroll_list left="-270" name="search_results" width="252"> - <scroll_list.columns label="" name="icon"/> - <scroll_list.columns label="" name="sim_name"/> - </scroll_list> - <text left="-270" name="location_label"> - Emplacement : - </text> - <spinner left_delta="100" name="spin x" tool_tip="Coordonnées des X du lieu à afficher sur la carte"/> - <spinner name="spin y" tool_tip="Coordonnées des Y du lieu à afficher sur la carte"/> - <spinner name="spin z" tool_tip="Coordonnées des Z du lieu à afficher sur la carte"/> - <button label="Téléporter" label_selected="Téléporter" left="-270" name="Teleport" tool_tip="Téléporter à l'endroit sélectionné"/> - <button label="Afficher la destination" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l'endroit sélectionné" width="165"/> - <button label="Effacer" label_selected="Effacer" left="-270" name="Clear" tool_tip="Arrêter de suivre"/> - <button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l'emplacement de votre avatar" width="165"/> - <button label="Copier la SLurl dans le presse-papiers" left="-270" name="copy_slurl" tool_tip="Copie l'emplacement actuel sous la forme d'une SLurl à utiliser sur le Web."/> - <slider label="Zoom" left="-270" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + Légende + </text> + </panel> + <panel> + <button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l'emplacement de mon avatar" width="165"/> + <text name="me_label"> + Moi + </text> + <check_box label="Résident" name="people_chk"/> + <icon left="-262" name="person"/> + <text name="person_label"> + Résident + </text> + <check_box label="Infohub" name="infohub_chk"/> + <icon left="-266" name="infohub"/> + <text name="infohub_label"> + Infohub + </text> + <check_box label="Terrain à vendre" name="land_for_sale_chk"/> + <icon left="-266" name="landforsale"/> + <text name="land_sale_label"> + Vente de terrains + </text> + <icon left="-270" name="square2"/> + <text name="by_owner_label"> + par le propriétaire + </text> + <text name="auction_label"> + enchères + </text> + <button label="Aller chez moi" label_selected="Aller chez moi" left="-120" name="Go Home" tool_tip="Me téléporter jusqu'à mon domicile" width="108"/> + <text name="Home_label"> + Domicile + </text> + <text left="-144" name="events_label"> + Événements : + </text> + <check_box label="PG" name="event_chk"/> + <icon left="-132" name="event"/> + <text name="pg_label"> + Général + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <icon left="-132" name="events_mature_icon"/> + <text name="mature_label"> + Modéré + </text> + <check_box label="Adult" name="event_adult_chk"/> + <icon left="-132" name="events_adult_icon"/> + <text name="adult_label"> + Adulte + </text> + </panel> + <panel> + <text name="find_on_map_label"> + Situer sur la carte + </text> + </panel> + <panel> + <combo_box label="Amis connectés" name="friend combo" tool_tip="Afficher les amis sur la carte" width="232"> + <combo_box.item label="Mes amis connectés" name="item1"/> + </combo_box> + <icon left="-270" name="landmark_icon"/> + <combo_box label="Mes repères" name="landmark combo" tool_tip="Repère à afficher sur la carte" width="232"> + <combo_box.item label="Mes repères" name="item1"/> + </combo_box> + <search_editor label="Régions par nom" name="location" tool_tip="Saisissez le nom d'une région" width="155"/> + <button label="Trouver" label_selected=">" left_delta="160" name="DoSearch" tool_tip="Recherchez sur la carte" width="75"/> + <scroll_list left="-270" name="search_results" width="252"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="Téléporter" label_selected="Téléporter" left="-270" name="Teleport" tool_tip="Téléporter à l'endroit sélectionné"/> + <button label="Copier la SLurl" left="-270" name="copy_slurl" tool_tip="Copie l'emplacement actuel sous la forme d'une SLurl à utiliser sur le Web."/> + <button label="Afficher la sélection" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l'endroit sélectionné" width="165"/> + </panel> + <panel> + <text name="zoom_label"> + Zoomer + </text> + </panel> + <panel> + <slider label="Zoom" left="-270" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml index bfc4e065308..be23369dc72 100644 --- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml @@ -10,19 +10,17 @@ <string name="Details"> [SL_PROFILE] </string> - <string name="Partner"> - Partenaire : [PARTNER] - </string> <text name="user_name" value="Grumpity ProductEngine"/> <text name="user_subtitle" value="11 mois, 3 jours"/> <text name="user_details"> C'est ma description second life et je la trouve vraiment géniale. </text> - <text name="user_partner"> - Erica Linden - </text> <slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/> <button label="Devenir amis" name="add_friend_btn"/> <button label="IM" name="im_btn"/> <button label="Plus" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Désactiver le chat vocal" name="disable_voice"/> + <button label="Activer le chat vocal" name="enable_voice"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml index 9d6095632ea..4519c380c5a 100644 --- a/indra/newview/skins/default/xui/fr/inspect_group.xml +++ b/indra/newview/skins/default/xui/fr/inspect_group.xml @@ -31,4 +31,5 @@ Méfiez-vous de l'orignal ! Méfiez-vous ! Et de la mangouste aussi ! </text> <button label="Vous inscrire" name="join_btn"/> <button label="Quitter" name="leave_btn"/> + <button label="Voir le profil" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml new file mode 100644 index 00000000000..ccb93f129ea --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Voir le profil" name="Profile..."/> + <menu_item_call label="Devenir amis" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Appeler" name="Call"/> + <menu_item_call label="Inviter dans le groupe" name="Invite..."/> + <menu_item_call label="Ignorer" name="Avatar Mute"/> + <menu_item_call label="Signaler" name="abuse"/> + <menu_item_call label="Geler" name="Freeze..."/> + <menu_item_call label="Expulser" name="Eject..."/> + <menu_item_call label="Débogage" name="Debug..."/> + <menu_item_call label="Zoomer en avant" name="Zoom In"/> + <menu_item_call label="Payer" name="Pay..."/> + <menu_item_call label="Profil de l'objet" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml new file mode 100644 index 00000000000..999a1c156ca --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Toucher" name="Attachment Object Touch"/> + <menu_item_call label="Éditer" name="Edit..."/> + <menu_item_call label="Détacher" name="Detach"/> + <menu_item_call label="Lâcher" name="Drop"/> + <menu_item_call label="Me lever" name="Stand Up"/> + <menu_item_call label="Mon apparence" name="Appearance..."/> + <menu_item_call label="Mes amis" name="Friends..."/> + <menu_item_call label="Mes groupes" name="Groups..."/> + <menu_item_call label="Mon profil" name="Profile..."/> +</context_menu> 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 8f3dfae86ec..3bac25c79b8 100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="Voir le profil..." name="Show Profile"/> + <menu_item_call label="Voir le profil" name="Show Profile"/> <menu_item_call label="Envoyer IM..." name="Send IM"/> <menu_item_call label="Devenir amis..." name="Add Friend"/> <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml new file mode 100644 index 00000000000..289912cd05b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Voir le profil" name="Profile..."/> + <menu_item_call label="Devenir amis" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Appeler" name="Call"/> + <menu_item_call label="Inviter dans le groupe" name="Invite..."/> + <menu_item_call label="Ignorer" name="Avatar Mute"/> + <menu_item_call label="Signaler" name="abuse"/> + <menu_item_call label="Geler" name="Freeze..."/> + <menu_item_call label="Expulser" name="Eject..."/> + <menu_item_call label="Débogage" name="Debug..."/> + <menu_item_call label="Zoomer en avant" name="Zoom In"/> + <menu_item_call label="Payer" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml new file mode 100644 index 00000000000..82945cf96ec --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="Me lever" name="Stand Up"/> + <context_menu label="Enlever >" name="Take Off >"> + <context_menu label="Habits >" name="Clothes >"> + <menu_item_call label="Chemise" name="Shirt"/> + <menu_item_call label="Pantalon" name="Pants"/> + <menu_item_call label="Jupe" name="Skirt"/> + <menu_item_call label="Chaussures" name="Shoes"/> + <menu_item_call label="Chaussettes" name="Socks"/> + <menu_item_call label="Veste" name="Jacket"/> + <menu_item_call label="Gants" name="Gloves"/> + <menu_item_call label="Sous-vêtements (homme)" name="Self Undershirt"/> + <menu_item_call label="Sous-vêtements (femme)" name="Self Underpants"/> + <menu_item_call label="Tatouage" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Tous les habits" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Détacher >" name="Object Detach"/> + <menu_item_call label="Tout détacher" name="Detach All"/> + </context_menu> + <menu_item_call label="Mon apparence" name="Appearance..."/> + <menu_item_call label="Mes amis" name="Friends..."/> + <menu_item_call label="Mes groupes" name="Groups..."/> + <menu_item_call label="Mon profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml index 46db635afd9..3229940980d 100644 --- a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml @@ -4,4 +4,9 @@ <menu_item_check label="Bouton Bouger" name="ShowMoveButton"/> <menu_item_check label="Bouton Afficher" name="ShowCameraButton"/> <menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/> + <menu_item_call label="Couper" name="NearbyChatBar_Cut"/> + <menu_item_call label="Copier" name="NearbyChatBar_Copy"/> + <menu_item_call label="Coller" name="NearbyChatBar_Paste"/> + <menu_item_call label="Supprimer" name="NearbyChatBar_Delete"/> + <menu_item_call label="Tout sélectionner" name="NearbyChatBar_Select_All"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_im_well_button.xml b/indra/newview/skins/default/xui/fr/menu_im_well_button.xml new file mode 100644 index 00000000000..8ef1529e6b4 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="Tout fermer" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..4d9a1030581 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Mettre fin à la session" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml index b1683ffcd02..ecc8cee4139 100644 --- a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet P2P Menu"> - <menu_item_call label="Afficher le profil" name="Show Profile"/> + <menu_item_call label="Voir le profil" name="Show Profile"/> <menu_item_call label="Devenir amis" name="Add Friend"/> <menu_item_call label="Afficher la session" name="Send IM"/> <menu_item_call label="Mettre fin à la session" name="End Session"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml index 9a4926b6785..39ba4b1074d 100644 --- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@ <menu_item_call label="Téléporter" name="teleport"/> <menu_item_call label="Inviter dans le groupe" name="invite_to_group"/> <menu_item_call label="Ignorer" name="block"/> + <menu_item_call label="Ne plus ignorer" name="unblock"/> <menu_item_call label="Signaler" name="report"/> <menu_item_call label="Geler" name="freeze"/> <menu_item_call label="Expulser" name="eject"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index d6da4b5557f..5276aa5b7e1 100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -46,6 +46,9 @@ <menu_item_call label="Téléporter" name="Landmark Open"/> <menu_item_call label="Ouvrir" name="Animation Open"/> <menu_item_call label="Ouvrir" name="Sound Open"/> + <menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/> + <menu_item_call label="Ajouter à la tenue actuelle" name="Add To Outfit"/> + <menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/> <menu_item_call label="Purger l'objet" name="Purge Item"/> <menu_item_call label="Restaurer l'objet" name="Restore Item"/> <menu_item_call label="Trouver l'original" name="Find Original"/> @@ -56,10 +59,9 @@ <menu_item_call label="Copier" name="Copy"/> <menu_item_call label="Coller" name="Paste"/> <menu_item_call label="Coller comme lien" name="Paste As Link"/> + <menu_item_call label="Supprimer le lien" name="Remove Link"/> <menu_item_call label="Supprimer" name="Delete"/> - <menu_item_call label="Enlever de la tenue" name="Remove From Outfit"/> - <menu_item_call label="Ajouter à l'ensemble" name="Add To Outfit"/> - <menu_item_call label="Remplacer l'ensemble" name="Replace Outfit"/> + <menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/> <menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/> <menu_item_call label="Jouer" name="Sound Play"/> <menu_item_call label="À propos du repère" name="About Landmark"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml index 5fe7a215a42..91bccfd699b 100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml @@ -9,4 +9,6 @@ <menu_item_call label="Vider la corbeille" name="empty_trash"/> <menu_item_call label="Vider les Objets trouvés" name="empty_lostnfound"/> <menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/> + <menu_item_call label="Trouver l'original" name="Find Original"/> + <menu_item_call label="Trouver tous les liens" name="Find All Links"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_land.xml b/indra/newview/skins/default/xui/fr/menu_land.xml new file mode 100644 index 00000000000..80cc49aa42f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="À propos des terrains" name="Place Information..."/> + <menu_item_call label="M'asseoir ici" name="Sit Here"/> + <menu_item_call label="Acheter ce terrain" name="Land Buy"/> + <menu_item_call label="Acheter un pass" name="Land Buy Pass"/> + <menu_item_call label="Construire" name="Create"/> + <menu_item_call label="Modifier le terrain" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index ac262a75e62..fc42b029083 100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -23,10 +23,8 @@ <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/> <menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/> <menu_item_call label="Outil d'aperçu XUI" name="UI Preview Tool"/> - <menu_item_call label="Afficher la barre latérale" name="Show Side Tray"/> - <menu_item_call label="Test widget" name="Widget Test"/> - <menu_item_call label="Tests inspecteurs" name="Inspectors Test"/> - <menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"/> + <menu label="Tests de l'interface" name="UI Tests"/> + <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/> <menu_item_call label="Afficher les conditions d'utilisation" name="TOS"/> <menu_item_call label="Afficher le message critique" name="Critical"/> <menu_item_call label="Test du navigateur Web" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml new file mode 100644 index 00000000000..323bfdbf165 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="Tout fermer" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml new file mode 100644 index 00000000000..b6775661adb --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_object.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Toucher" name="Object Touch"/> + <menu_item_call label="Éditer" name="Edit..."/> + <menu_item_call label="Construire" name="Build"/> + <menu_item_call label="Ouvrir" name="Open"/> + <menu_item_call label="M'asseoir ici" name="Object Sit"/> + <menu_item_call label="Profil de l'objet" name="Object Inspect"/> + <menu_item_call label="Zoomer en avant" name="Zoom In"/> + <context_menu label="Porter >" name="Put On"> + <menu_item_call label="Porter" name="Wear"/> + <context_menu label="Joindre >" name="Object Attach"/> + <context_menu label="Joindre les éléments HUD >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Supprimer >" name="Remove"> + <menu_item_call label="Prendre" name="Pie Object Take"/> + <menu_item_call label="Signaler une infraction" name="Report Abuse..."/> + <menu_item_call label="Ignorer" name="Object Mute"/> + <menu_item_call label="Retour" name="Return..."/> + <menu_item_call label="Supprimer" name="Delete"/> + </context_menu> + <menu_item_call label="Prendre une copie" name="Take Copy"/> + <menu_item_call label="Payer" name="Pay..."/> + <menu_item_call label="Acheter" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_participant_list.xml b/indra/newview/skins/default/xui/fr/menu_participant_list.xml index 96d9a003cdf..c8f5b5f1add 100644 --- a/indra/newview/skins/default/xui/fr/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/fr/menu_participant_list.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Participant List Context Menu"> + <menu_item_check label="Trier par nom" name="SortByName"/> + <menu_item_check label="Trier par intervenants récents" name="SortByRecentSpeakers"/> + <menu_item_call label="Voir le profil" name="View Profile"/> + <menu_item_call label="Devenir amis" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Appeler" name="Call"/> + <menu_item_call label="Partager" name="Share"/> + <menu_item_call label="Payer" name="Pay"/> + <menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/> <menu_item_check label="Ignorer le texte" name="MuteText"/> - <menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/> + <context_menu label="Options du modérateur >" name="Moderator Options"> + <menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/> + <menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Ignorer tous les autres" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Ne plus ignorer tous les autres" name="ModerateVoiceUnMuteOthers"/> + </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml new file mode 100644 index 00000000000..eb51b4cf7e8 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Afficher les infos" name="View Info"/> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_call label="Appeler" name="Call"/> + <menu_item_call label="Activer" name="Activate"/> + <menu_item_call label="Quitter" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml index 946063dda2a..d48be969f47 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml @@ -7,4 +7,5 @@ <menu_item_call label="Partager" name="Share"/> <menu_item_call label="Payer" name="Pay"/> <menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/> + <menu_item_call label="Proposer une téléportation" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml index 61a346c6af1..4bb9fa19a8e 100644 --- a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml @@ -2,4 +2,8 @@ <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="Payer" name="pay"/> <menu_item_call label="Partager" name="share"/> + <menu_item_call label="Éjecter" name="kick"/> + <menu_item_call label="Geler" name="freeze"/> + <menu_item_call label="Dégeler" name="unfreeze"/> + <menu_item_call label="Représentant du service consommateur" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 9639e8415d9..272fcfdae61 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -9,7 +9,7 @@ <menu_item_call label="Mon profil" name="Profile"/> <menu_item_call label="Mon apparence" name="Appearance"/> <menu_item_check label="Mon inventaire" name="Inventory"/> - <menu_item_call label="Afficher l'inventaire de la barre latérale" name="ShowSidetrayInventory"/> + <menu_item_call label="Afficher l'inventaire dans le panneau latéral" name="ShowSidetrayInventory"/> <menu_item_call label="Mes gestes" name="Gestures"/> <menu label="Mon statut" name="Status"> <menu_item_call label="Absent" name="Set Away"/> @@ -25,36 +25,30 @@ <menu_item_check label="Chat près de vous" name="Nearby Chat"/> <menu_item_call label="Personnes près de vous" name="Active Speakers"/> <menu_item_check label="Média près de vous" name="Nearby Media"/> - <menu_item_check label="(Ancienne version) Communiquer" name="Instant Message"/> - <menu_item_call label="(Temp) Télécommande média" name="Preferences"/> </menu> <menu label="Monde" name="World"> - <menu_item_check label="Bouger" name="Movement Controls"/> - <menu_item_check label="Affichage" name="Camera Controls"/> - <menu_item_call label="À propos des terrains" name="About Land"/> - <menu_item_call label="Région/Domaine" name="Region/Estate"/> - <menu_item_call label="Acheter du terrain" name="Buy Land"/> - <menu_item_call label="Mes terrains" name="My Land"/> - <menu label="Afficher" name="Land"> - <menu_item_check label="Lignes d'interdiction" name="Ban Lines"/> - <menu_item_check label="Balises" name="beacons"/> - <menu_item_check label="Limites du terrain" name="Property Lines"/> - <menu_item_check label="Propriétaires de terrains" name="Land Owners"/> - </menu> - <menu label="Repères" name="Landmarks"> - <menu_item_call label="Créer un repère ici" name="Create Landmark Here"/> - <menu_item_call label="Définir le domicile ici" name="Set Home to Here"/> - </menu> - <menu_item_call label="Domicile" name="Teleport Home"/> <menu_item_check label="Mini-carte" name="Mini-Map"/> <menu_item_check label="Carte du monde" name="World Map"/> <menu_item_call label="Photo" name="Take Snapshot"/> + <menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/> + <menu label="Profil du lieu" name="Land"> + <menu_item_call label="À propos des terrains" name="About Land"/> + <menu_item_call label="Région/Domaine" name="Region/Estate"/> + </menu> + <menu_item_call label="Acheter ce terrain" name="Buy Land"/> + <menu_item_call label="Mes terrains" name="My Land"/> + <menu label="Afficher" name="LandShow"> + <menu_item_check label="Contrôles de mouvement" name="Movement Controls"/> + <menu_item_check label="Contrôles d'affichage" name="Camera Controls"/> + </menu> + <menu_item_call label="Me téléporter chez moi" name="Teleport Home"/> + <menu_item_call label="Définir le domicile ici" name="Set Home to Here"/> <menu label="Luminosité" name="Environment Settings"> <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 l'heure du domaine" name="Revert to Region Default"/> + <menu_item_call label="Heure du domaine" name="Revert to Region Default"/> <menu_item_call label="Éditeur d'environnement" name="Environment Editor"/> </menu> </menu> @@ -125,21 +119,20 @@ </menu> <menu label="Aide" name="Help"> <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Didacticiel" name="Tutorial"/> <menu_item_call label="Signaler une infraction" name="Report Abuse"/> + <menu_item_call label="Signaler un bug" name="Report Bug"/> <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avancé" name="Advanced"> - <menu_item_check label="Me mettre en mode absent après 30 minutes" name="Go Away/AFK When Idle"/> <menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/> <menu_item_call label="Refixer les textures" name="Rebake Texture"/> <menu_item_call label="Taille de l'interface par défaut" name="Set UI Size to Default"/> + <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/> <menu_item_check label="Limiter la distance de sélection" name="Limit Select Distance"/> <menu_item_check label="Désactiver les contraintes de la caméra" name="Disable Camera Distance"/> <menu_item_check label="Photo haute résolution" name="HighResSnapshot"/> <menu_item_check label="Photos discrètes sur disque" name="QuietSnapshotsToDisk"/> <menu_item_check label="Compresser les photos sur disque" name="CompressSnapshotsToDisk"/> - <menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/> <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"/> @@ -333,7 +326,6 @@ <menu_item_call label="Enregistrer en XML" name="Save to XML"/> <menu_item_check label="Afficher les noms XUI" name="Show XUI Names"/> <menu_item_call label="Envoyer des IM tests" name="Send Test IMs"/> - <menu_item_call label="Tests inspecteurs" name="Test Inspectors"/> </menu> <menu label="Avatar" name="Character"> <menu label="Récupérer la texture fixée" name="Grab Baked Texture"> @@ -366,6 +358,7 @@ <menu_item_call label="Débogage des textures des avatars" name="Debug Avatar Textures"/> <menu_item_call label="Dump Local Textures" name="Dump Local Textures"/> </menu> + <menu_item_check label="Textures HTTP" name="HTTP Textures"/> <menu_item_call label="Compresser les images" name="Compress Images"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> @@ -383,7 +376,7 @@ <menu_item_call label="Obtenir les ID d'actifs" name="Get Assets IDs"/> </menu> <menu label="Parcelle" name="Parcel"> - <menu_item_call label="Propriétaire à moi" name="Owner To Me"/> + <menu_item_call label="Forcer le propriétaire sur moi" name="Owner To Me"/> <menu_item_call label="Définir sur le contenu Linden" name="Set to Linden Content"/> <menu_item_call label="Réclamer un terrain public" name="Claim Public Land"/> </menu> @@ -410,7 +403,6 @@ <menu_item_call label="Tatouage" name="Tattoo"/> <menu_item_call label="Tous les habits" name="All Clothes"/> </menu> - <menu_item_check label="Afficher la barre d'outils" name="Show Toolbar"/> <menu label="Aide" name="Help"> <menu_item_call label="Blog officiel des Linden" name="Official Linden Blog"/> <menu_item_call label="Portail d'écriture de scripts" name="Scripting Portal"/> diff --git a/indra/newview/skins/default/xui/fr/mime_types_linux.xml b/indra/newview/skins/default/xui/fr/mime_types_linux.xml new file mode 100644 index 00000000000..fc5e7ad6592 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Contenu web + </label> + <tooltip name="web_tooltip"> + Cette parcelle propose du contenu web + </tooltip> + <playtip name="web_playtip"> + Afficher le contenu web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Film + </label> + <tooltip name="movie_tooltip"> + Vous pouvez jouer un film ici + </tooltip> + <playtip name="movie_playtip"> + Jouer le film + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Image + </label> + <tooltip name="image_tooltip"> + Cette parcelle contient une image + </tooltip> + <playtip name="image_playtip"> + Afficher l'image qui se trouve ici + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Cette parcelle propose du contenu audio + </tooltip> + <playtip name="audio_playtip"> + Jouer le contenu audio qui se trouve ici + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Flux en temps réel + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Aucun - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Aucun - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vidéo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Image + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Audio/Vidéo Ogg + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Document PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Document Postscript + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Format RTF + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + SMIL (Synchronized Multimedia Integration Language) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Page web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Image (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Image (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Image (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Image (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Image (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Image (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Page web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texte + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Film (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Film (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Film (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Film (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Film (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/fr/mime_types_mac.xml b/indra/newview/skins/default/xui/fr/mime_types_mac.xml new file mode 100644 index 00000000000..fc5e7ad6592 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Contenu web + </label> + <tooltip name="web_tooltip"> + Cette parcelle propose du contenu web + </tooltip> + <playtip name="web_playtip"> + Afficher le contenu web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Film + </label> + <tooltip name="movie_tooltip"> + Vous pouvez jouer un film ici + </tooltip> + <playtip name="movie_playtip"> + Jouer le film + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Image + </label> + <tooltip name="image_tooltip"> + Cette parcelle contient une image + </tooltip> + <playtip name="image_playtip"> + Afficher l'image qui se trouve ici + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Cette parcelle propose du contenu audio + </tooltip> + <playtip name="audio_playtip"> + Jouer le contenu audio qui se trouve ici + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Flux en temps réel + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Aucun - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Aucun - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vidéo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Image + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Audio/Vidéo Ogg + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Document PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Document Postscript + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Format RTF + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + SMIL (Synchronized Multimedia Integration Language) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Page web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Image (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Image (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Image (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Image (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Image (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Image (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Page web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texte + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Film (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Film (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Film (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Film (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Film (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index dd277c9d37d..6d7aef6389c 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -32,10 +32,10 @@ <button name="No" text="$notext"/> </form> </template> - <notification functor="GenericAcknowledge" label="Message d'alerte inconnu" name="MissingAlert"> - Votre version de [APP_NAME] ne peut afficher ce message d'erreur. Veuillez vous assurer que vous avez bien la toute dernière version du client. + <notification functor="GenericAcknowledge" label="Message de notification inconnu" name="MissingAlert"> + Votre version de [APP_NAME] ne peut afficher ce message de notification. Veuillez vous assurer que vous avez bien la toute dernière version du client. -Détails de l'erreur : L'alerte, appelée '[_NAME]', est introuvable dans notifications.xml. +Détails de l'erreur : La notification, appelée '[_NAME]', est introuvable dans notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -95,12 +95,12 @@ Veuillez ne sélectionner qu'un seul objet. </notification> <notification name="GrantModifyRights"> Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. -Souhaitez-vous accorder des droits d'édition à [FIRST_NAME] [LAST_NAME] ? +Souhaitez-vous accorder des droits d'édition à [FIRST_NAME] [LAST_NAME] ? <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> <notification name="GrantModifyRightsMultiple"> Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. -Souhaitez-vous accorder des droits d'édition aux résidents selectionnés ? +Souhaitez-vous accorder des droits d'édition aux résidents sélectionnés ? <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> <notification name="RevokeModifyRights"> @@ -149,6 +149,11 @@ Ajouter ce pouvoir à « [ROLE_NAME] » ? Ajouter ce pouvoir à « [ROLE_NAME] » ? <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> + <notification name="AttachmentDrop"> + Vous êtes sur le point d'abandonner l'élément joint. +Voulez-vous vraiment continuer ? + <usetemplate ignoretext="Confirmez avant d'abandonner les éléments joints." name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> <notification name="ClickUnimplemented"> Désolés, pas encore mis en Å“uvre. </notification> @@ -247,15 +252,9 @@ Pour que les armes fonctionnent, les scripts doivent être autorisés. <notification name="MultipleFacesSelected"> Plusieurs faces sont sélectionnées. Si vous poursuivez cette action, des instances séparées du média seront définies sur plusieurs faces de l'objet. -Pour ne placer le média que sur une seule face, choisissez Sélectionner une texture, cliquez sur la face de l'objet de votre choix, puis sur Ajouter. +Pour ne placer le média que sur une seule face, choisissez Sélectionner une face, cliquez sur la face de l'objet de votre choix, puis sur Ajouter. <usetemplate ignoretext="Le média sera défini sur plusieurs faces sélectionnées" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> - <notification name="WhiteListInvalidatesHomeUrl"> - Si vous ajoutez cette entrée à la liste blanche, l'URL du domicile que vous avez spécifiée -pour cette instance du média ne sera plus valide. Vous n'êtes pas autorisé(e) à faire cela, -l'entrée ne peut donc pas être ajoutée à la liste blanche. - <usetemplate name="okbutton" yestext="Ok"/> - </notification> <notification name="MustBeInParcel"> Pour définir le point d'atterrissage, vous devez vous trouver à l'intérieur de la parcelle. </notification> @@ -346,14 +345,6 @@ Voulez-vous vraiment continuer ? <notification name="SelectHistoryItemToView"> Veuillez sélectionner un historique. </notification> - <notification name="ResetShowNextTimeDialogs"> - Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ? - <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - Voulez-vous désactiver tous les pop-ups qui peuvent être évités ? - <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> - </notification> <notification name="CacheWillClear"> Le cache sera vidé après le redémarrage de [APP_NAME]. </notification> @@ -615,6 +606,10 @@ Veuillez réessayer ultérieurement. <notification name="LandmarkCreated"> Vous avez ajouté [LANDMARK_NAME] à votre dossier [FOLDER_NAME]. </notification> + <notification name="LandmarkAlreadyExists"> + Vous avez déjà un repère pour cet emplacement. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l'autorise pas. </notification> @@ -713,7 +708,8 @@ aucune parcelle sélectionnée. Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer. </notification> <notification name="ForceOwnerAuctionWarning"> - Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ? + Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. +Définir un propriétaire ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -762,11 +758,11 @@ plusieurs parcelles sélectionnées. Essayez de ne sélectionner qu'une seule parcelle. </notification> <notification name="ParcelCanPlayMedia"> - Cette parcelle propose des flux média. -Pour jouer des flux média, il faut avoir une connexion internet rapide. + Cet emplacement propose des flux de média. +Pour jouer des flux de média, il faut avoir une connexion Internet rapide. -Jouer les flux média lorsqu'ils sont disponibles ? -(Vous pourrez modifier cette option ultérieurement sous Préférences > Audio et vidéo.) +Jouer les flux de média lorsqu'ils sont disponibles ? +(Vous pourrez modifier cette option ultérieurement sous Préférences > Confidentialité.) <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -1323,6 +1319,10 @@ Les chats et les messages instantanés ne s'afficheront pas. Les messages i [INVITE] <usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/> </notification> + <notification name="JoinedTooManyGroups"> + Vous avez atteint le nombre de groupes maximum. Vous devez en quitter un avant d'en rejoindre ou d'en créer un nouveau. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> Éjecter cet utilisateur avec quel message ? <form name="form"> @@ -1567,11 +1567,11 @@ Publier cette petite annonce maintenant pour [AMOUNT] L$ ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - Cette petite annonce contient-elle du contenu Mature ? + Cette petite annonce contient-elle du contenu Modéré ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/> </notification> <notification name="SetGroupMature"> - Ce groupe contient-il du contenu Mature ? + Ce groupe contient-il du contenu Modéré ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/> </notification> <notification label="Confirmer le redémarrage" name="ConfirmRestart"> @@ -1587,8 +1587,10 @@ Publier cette petite annonce maintenant pour [AMOUNT] L$ ? </form> </notification> <notification label="Catégorie de la région modifiée" name="RegionMaturityChange"> - La catégorie d'accès de cette région a été mise à jour. + Le niveau de maturité de cette région a été mis à jour. Ce changement n'apparaîtra pas immédiatement sur la carte. + +Pour entrer dans les régions Adultes, le résident doit avoir vérifié son compte, que ce soit par vérification de l'âge ou du mode de paiement. </notification> <notification label="Versions de voix non compatibles" name="VoiceVersionMismatch"> Cette version de [APP_NAME] n'est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour [APP_NAME] pour que le chat vocal fonctionne correctement. @@ -1709,16 +1711,6 @@ Déplacer les objets de l'inventaire ? Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php Conditions d'utilisation] et aux [http://secondlife.com/corporate/cs.php Règles communautaires]. Lorsqu'elles sont signalées, toutes les infractions font l'objet d'une enquête et sont résolues. Vous pouvez consulter les détails de la résolution d'un incident dans le [http://secondlife.com/support/incidentreport.php Rapport d'incident]. - </notification> - <notification name="HelpReportAbuseEmailEO"> - IMPORTANT : ce rapport sera envoyé au propriétaire de la région dans laquelle vous vous trouvez actuellement et non à Linden Lab. - -Pour rendre service aux résidents et visiteurs, le propriétaire de la région dans laquelle vous vous trouvez a choisi de recevoir et de résoudre tous les rapports concernant cette région. Linden Lab n'enquêtera pas sur les rapports que vous envoyez depuis cet emplacement. - -Le propriétaire de la région résoudra les incidents signalés dans les rapports selon les règles locales de cette région, telles qu'elles sont définies dans le règlement du domaine. -(Pour consulter les règlements, sélectionnez À propos des terrains dans le menu Monde.) - -La résolution de ce rapport ne s'applique qu'à cette région. L'accès des résidents aux autres zones de [SECOND_LIFE] ne sera pas affecté par l'issue de ce rapport. Seul Linden Lab peut interdire l'accès à la totalité de [SECOND_LIFE]. </notification> <notification name="HelpReportAbuseSelectCategory"> Veuillez choisir une catégorie pour ce rapport d'infraction. @@ -1954,7 +1946,6 @@ Liez-la à partir d'une page web pour permettre aux autres résidents d&apo </notification> <notification name="UnableToLoadGesture"> Impossible de charger le geste [NAME]. -Merci de réessayer. </notification> <notification name="LandmarkMissing"> Repère absent de la base de données. @@ -2057,7 +2048,7 @@ Veuillez sélectionner un terrain plus petit. Certains termes de votre recherche ont été exclus car ils ne correspondaient pas aux standards fixés dans les Règles communautaires. </notification> <notification name="NoContentToSearch"> - Veuillez sélectionner au moins un type de contenu à rechercher (PG, Mature ou Adulte) + Veuillez sélectionner au moins un type de contenu à rechercher (Général, Modéré ou Adulte) </notification> <notification name="GroupVote"> [NAME] a proposé un vote pour : @@ -2070,6 +2061,9 @@ Veuillez sélectionner un terrain plus petit. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Avis d'événement : @@ -2116,7 +2110,7 @@ Si le problème persiste, veuillez réinstaller le plugin ou contacter le vendeu Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire. </notification> <notification name="OtherObjectsReturned2"> - Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire. + Les objets sur la parcelle de terrain sélectionnée appartenant au résident [NAME] ont été rendus à leur propriétaire. </notification> <notification name="GroupObjectsReturned"> Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l'inventaire de leur propriétaire. @@ -2129,7 +2123,6 @@ Les objets non transférables donnés au groupe ont étés supprimés. <notification name="ServerObjectMessage"> Message de [NAME] : [MSG] - <usetemplate name="okcancelbuttons" notext="OK" yestext="Inspecter"/> </notification> <notification name="NotSafe"> Les dégâts sont autorisés sur ce terrain. @@ -2262,9 +2255,9 @@ Veuillez réessayer dans quelques minutes. [NAME_SLURL] vous a donné un [OBJECTTYPE] : [ITEM_SLURL] <form name="form"> - <button name="Keep" text="Garder"/> <button name="Show" text="Afficher"/> <button name="Discard" text="Jeter"/> + <button name="Mute" text="Ignorer"/> </form> </notification> <notification name="GodMessage"> @@ -2289,6 +2282,9 @@ Veuillez réessayer dans quelques minutes. <button name="Cancel" text="Annuler"/> </form> </notification> + <notification name="TeleportOfferSent"> + Offre de téléportation envoyée à [TO_NAME] + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2306,8 +2302,12 @@ Veuillez réessayer dans quelques minutes. <form name="form"> <button name="Accept" text="Accepter"/> <button name="Decline" text="Refuser"/> + <button name="Send IM" text="Envoyer IM"/> </form> </notification> + <notification name="FriendshipOffered"> + Vous avez proposé à [TO_NAME] de devenir votre ami(e) + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] vous demande de devenir son ami. @@ -2405,14 +2405,6 @@ Accepter cette requête ? <button name="Block" text="Ignorer"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - Vous venez de recevoir [AMOUNT] L$. -Votre solde en L$ est affiché en haut à droite. - </notification> - <notification name="FirstBalanceDecrease"> - Vous venez de payer [AMOUNT] L$. -Votre solde en L$ est affiché en haut à droite. - </notification> <notification name="BuyLindenDollarSuccess"> Nous vous remercions de votre paiement. @@ -2420,58 +2412,17 @@ Votre solde en L$ sera mis à jour une fois le traitement terminé. Si le traite Vous pouvez consulter le statut de votre paiement à la page Historique de mes transactions sur votre [http://secondlife.com/account/ Page d'accueil] </notification> - <notification name="FirstSit"> - Vous êtes assis(e). -Utilisez les touches de direction (ou AWSD) pour regarder autour de vous. -Pour vous lever, cliquez sur le bouton Me lever. - </notification> - <notification name="FirstMap"> - Cliquez et faites glisser pour faire défiler la carte. -Double-cliquez pour vous téléporter. -Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans. - </notification> - <notification name="FirstBuild"> - Vous avez ouvert les outils de construction. Tous les objets autour de vous ont été créés avec ces outils. - </notification> - <notification name="FirstTeleport"> - Vous ne pouvez vous téléporter que dans certaines zones de cette région. La flèche pointe vers votre destination. Cliquez sur la flèche pour la faire disparaître. - </notification> <notification name="FirstOverrideKeys"> Vos mouvements sont maintenant pris en charge par un objet. Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent. Certains objets (comme les armes) nécessitent l'activation du mode Vue subjective pour être utilisés. Pour cela, appuyez sur la touche M. - </notification> - <notification name="FirstAppearance"> - Vous êtes en train d'éditer votre apparence. -Utilisez les touches de direction pour regarder autour de vous. -Une fois terminé, cliquer sur Tout enregistrer. - </notification> - <notification name="FirstInventory"> - Il s'agit de votre inventaire qui contient vos possessions. - -* Pour porter quelque chose, faites glisser l'objet sur vous-même. -* Pour rezzer un objet dans le monde, faites-le glisser sur le sol. -* Pour lire une note, double-cliquez dessus. </notification> <notification name="FirstSandbox"> Cette région est un bac à sable et est utilisée par les résidents pour apprendre à construire. Les objets que vous construisez ici seront supprimés après votre départ. N'oubliez donc pas de cliquer droit et de choisir Prendre pour sauvegarder votre création dans votre inventaire. </notification> - <notification name="FirstFlexible"> - Cet objet est flexible. Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes. - </notification> - <notification name="FirstDebugMenus"> - Vous avez ouvert le menu Avancé. - -Pour activer/désactiver ce menu, - Windows : Ctrl+Alt+D - Mac : ⌥⌘D - </notification> - <notification name="FirstSculptedPrim"> - Vous êtes en train d'éditer un sculptie. Pour spécifier la forme d'un sculptie, vous devez utiliser une texture spécifique. - </notification> <notification name="MaxListSelectMessage"> Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste. </notification> @@ -2565,12 +2516,23 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore <notification name="UnsupportedCommandSLURL"> La SLurl que vous avez saisie n'est pas prise en charge. </notification> + <notification name="BlockedSLURL"> + Une SLurl a été reçue d'un navigateur non sécurisé et a été bloquée pour votre sécurité. + </notification> + <notification name="ThrottledSLURL"> + Plusieurs SLurl ont été reçues d'un navigateur non sécurisé pendant un court laps de temps. +Elles vont être bloquées pendant quelques secondes pour votre sécurité. + </notification> <notification name="IMToast"> [MESSAGE] <form name="form"> <button name="respondbutton" text="Répondre"/> </form> </notification> + <notification name="ConfirmCloseAll"> + Êtes-vous certain de vouloir fermer tous les IM ? + <usetemplate name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> <notification name="AttachmentSaved"> L'élément joint a été sauvegardé. </notification> @@ -2582,6 +2544,14 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore '[ERROR]' <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TextChatIsMutedByModerator"> + Le modérateur ignore votre chat écrit. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Le modérateur ignore vos paroles. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Voulez-vous vraiment supprimer votre historique des téléportations ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> diff --git a/indra/newview/skins/default/xui/fr/panel_active_object_row.xml b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml new file mode 100644 index 00000000000..0baa8353d92 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + Objet inconnu + </string> + <text name="object_name"> + Objet sans nom + </text> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml index fd5ca4b2a79..4191ba42f98 100644 --- a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <panel name="panel_call_buttons"> - <button label="Appeler" name="call_btn"/> - <button label="Quitter l'appel" name="end_call_btn"/> - <button label="Contrôles vocaux" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Appeler" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Quitter l'appel" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Contrôles vocaux" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml index 69e23a2e765..792fd70c7fd 100644 --- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml @@ -23,4 +23,5 @@ </string> <text name="avatar_name" value="Inconnu"/> <text name="last_interaction" value="0s"/> + <button name="profile_btn" tool_tip="Voir le profil"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml index 986970b381f..f54bed4faee 100644 --- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml @@ -4,7 +4,7 @@ Liste des ignorés </text> <scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/> - <button label="Ignorer le résident..." label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/> - <button label="Ignorer l'objet par nom..." label_selected="Ignorer l'objet par nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/> + <button label="Ignorer une personne" label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/> + <button label="Ignorer l'objet par nom" label_selected="Ignorer l'objet par nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/> <button label="Ne plus ignorer" label_selected="Ne plus ignorer" name="Unblock" tool_tip="Enlever le résident ou l'objet de la liste des ignorés"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml index 3107bf60e3d..b3fac96250e 100644 --- a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml @@ -8,7 +8,7 @@ </string> <layout_stack name="toolbar_stack"> <layout_panel name="gesture_panel"> - <gesture_combo_box label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/> + <gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/> </layout_panel> <layout_panel name="movement_panel"> <button label="Bouger" name="movement_btn" tool_tip="Affiche/Masque le contrôle des déplacements"/> @@ -19,5 +19,15 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="Prendre une photo"/> </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="Conversations"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Notifications"/> + </chiclet_notification> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml index ca7b1cd9710..d317e35d2fc 100644 --- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_classified_info"> <panel.string name="type_mature"> - Mature + Modéré </panel.string> <panel.string name="type_pg"> - Contenu PG + Contenu Général </panel.string> <text name="title" value="Infos sur la petite annonce"/> <scroll_container name="profile_scroll"> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml index 392586d8d42..1f44f2fe093 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml @@ -24,10 +24,10 @@ <button label="Définir sur l'emplacement actuel" name="set_to_curr_location_btn"/> <combo_box name="content_type"> <combo_item name="mature_ci"> - Contenu Mature + Contenu Modéré </combo_item> <combo_item name="pg_ci"> - Contenu PG + Contenu Général </combo_item> </combo_box> <spinner label="L$" name="price_for_listing" tool_tip="Coût de l'annonce." value="50"/> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml index a4771db91bd..4a42858861e 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml @@ -19,6 +19,9 @@ <string name="partner_edit_link_url"> http://www.secondlife.com/account/partners.php?lang=fr </string> + <string name="my_account_link_url"> + http://secondlife.com/my + </string> <string name="no_partner_text" value="Aucun"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -44,7 +47,7 @@ <text name="title_partner_text" value="Mon partenaire :"/> <text name="partner_edit_link" value="[[URL] Modifier]"/> <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> + <name_box name="partner_text" value="[FIRST] [LAST]"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_friends.xml b/indra/newview/skins/default/xui/fr/panel_friends.xml index cbeb10287dd..10ec952aa3e 100644 --- a/indra/newview/skins/default/xui/fr/panel_friends.xml +++ b/indra/newview/skins/default/xui/fr/panel_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Amis multiples... + Amis multiples </string> <scroll_list name="friend_list" tool_tip="Pour sélectionner plusieurs amis, cliquez en maintenant la touche Maj ou Ctrl appuyée"> <column name="icon_online_status" tool_tip="Statut en ligne"/> @@ -13,8 +13,8 @@ </scroll_list> <button label="IM/Appel" name="im_btn" tool_tip="Envoyez un IM à ce résident"/> <button label="Profil" name="profile_btn" tool_tip="Consultez le profil de ce résident (photos, groupes et autres infos)"/> - <button label="Téléporter..." name="offer_teleport_btn" tool_tip="Proposez à cet ami d'être téléporté là où vous êtes"/> - <button label="Payer..." name="pay_btn" tool_tip="Donnez des L$ à cet ami"/> - <button label="Supprimer..." name="remove_btn" tool_tip="Supprimez ce résident de votre liste d'amis"/> - <button label="Ajouter..." name="add_btn" tool_tip="Demandez à un résident de devenir votre ami"/> + <button label="Téléporter" name="offer_teleport_btn" tool_tip="Proposez à cet ami d'être téléporté là où vous êtes"/> + <button label="Payer" name="pay_btn" tool_tip="Donnez des L$ à cet ami"/> + <button label="Supprimer" name="remove_btn" tool_tip="Supprimez ce résident de votre liste d'amis"/> + <button label="Ajouter" name="add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml index 3e37ba66dab..69403939aa2 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="Profil du groupe" name="group_info_btn"/> - <panel name="panel_call_buttons"> - <button label="Appeler le groupe" name="call_btn"/> - <button label="Quitter l'appel" name="end_call_btn"/> - <button label="Ouvrir les contrôles vocaux" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="Profil du groupe" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Appeler le groupe" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Quitter l'appel" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Ouvrir les contrôles vocaux" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml index 093d65cdbaf..f0b242c6a13 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml @@ -22,16 +22,16 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus. Mon titre </text> <combo_box name="active_title" tool_tip="Indique le titre qui apparaît en face du nom de votre avatar lorsque votre groupe est actif."/> - <check_box label="Recevoir des notices" name="receive_notices" tool_tip="Indique si vous souhaitez recevoir les notices envoyées au groupe. Décochez si ce groupe vous envoie des spams."/> + <check_box label="Recevoir les notices du groupe" name="receive_notices" tool_tip="Indique si vous souhaitez recevoir les notices envoyées au groupe. Décochez si ce groupe vous envoie des spams."/> <check_box label="Afficher dans mon profil" name="list_groups_in_profile" tool_tip="Indique si vous voulez afficher ce groupe dans votre profil"/> <panel name="preferences_container"> <check_box label="Inscription libre" name="open_enrollement" tool_tip="Indique si ce groupe autorise les nouveaux membres à le rejoindre sans y être invités."/> <check_box label="Frais d'inscription" name="check_enrollment_fee" tool_tip="Indique s'il faut payer des frais d'inscription pour rejoindre ce groupe"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l'option Frais d'inscription est cochée."/> <check_box initial_value="true" label="Afficher dans la recherche" name="show_in_group_list" tool_tip="Permettre aux autres résidents de voir ce groupe dans les résultats de recherche"/> - <combo_box name="group_mature_check" tool_tip="Indique si les informations sur votre groupe sont classées Mature" width="195"> - <combo_box.item label="Contenu PG" name="pg"/> - <combo_box.item label="Contenu Mature" name="mature"/> + <combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195"> + <combo_box.item label="Contenu Général" name="pg"/> + <combo_box.item label="Contenu Modéré" name="mature"/> </combo_box> </panel> </panel> 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 28d13bf3c5a..b2f61fde71d 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml @@ -31,6 +31,8 @@ </accordion> <panel name="button_row"> <button label="Créer" label_selected="Nouveau groupe" name="btn_create"/> + <button label="Chat de groupe" name="btn_chat"/> + <button label="Appel de groupe" name="btn_call"/> <button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml index 0e59366b84d..53f7ac33c2e 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml @@ -7,12 +7,10 @@ (en cours de chargement...) </panel.string> <panel.string name="already_in_group"> - Certains des avatars font déjà partie du groupe et n'ont pas été invités. + Certains résidents que vous avez choisis font déjà partie du groupe et l'invitation ne leur a donc pas été envoyée. </panel.string> <text name="help_text"> - Vous pouvez inviter plusieurs résidents -à la fois. Cliquez d'abord sur -Choisir un résident. + Vous pouvez inviter plusieurs résidents à la fois. Cliquez d'abord sur Choisir un résident. </text> <button label="Choisir un résident" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="Pour sélectionner plusieurs résidents, maintenez la touche Ctrl enfoncée et cliquez sur leurs noms"/> diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml index a61cb787a83..5fb69d19893 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="Inconnu"/> + <button name="profile_btn" tool_tip="Voir le profil"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml index 188fe28d8a0..1ec63cf027d 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notices" name="notices_tab"> <panel.string name="help_text"> - Les notices vous permettent d'envoyer un message et, -facultativement, une pièce jointe. Les notices ne peuvent être envoyées -qu'aux membres du groupe dont le rôle leur permet de -recevoir des notices. Vous pouvez désactiver la réception des notices dans -l'onglet Général. + Les notices vous permettent d'envoyer un message et facultativement, une pièce jointe si vous le souhaitez. +Les notices ne peuvent être envoyées qu'aux membres du groupe dont le rôle leur permet de recevoir des notices. +Vous pouvez désactiver la réception des notices dans l'onglet Général. </panel.string> <panel.string name="no_notices_text"> Pas d'anciennes notices @@ -24,7 +22,7 @@ l'onglet Général. Aucun résultat </text> <button label="Créer une notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/> - <button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices"/> + <button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices" tool_tip="Actualiser la liste des notices"/> <panel label="Créer une notice" name="panel_create_new_notice"> <text name="lbl"> Créer une notice @@ -42,11 +40,11 @@ l'onglet Général. </text> <line_editor left_delta="74" name="create_inventory_name" width="190"/> <text name="string"> - Faites glisser ici pour joindre quelque chose -- > + Faire glisser l'objet et le déposer ici pour le joindre : </text> <button label="Supprimer" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/> <button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/> - <group_drop_target name="drop_target" tool_tip="Pour joindre un objet de l'inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l'objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/> + <group_drop_target name="drop_target" tool_tip="Faites glisser un objet de l'inventaire jusqu'à cette case pour l'envoyer avec la notice. Vous devez avoir l'autorisation de copier et transférer l'objet pour pouvoir le joindre."/> </panel> <panel label="Voir ancienne notice" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/fr/panel_group_notify.xml b/indra/newview/skins/default/xui/fr/panel_group_notify.xml index d3ecbd71d1f..08a49f908ce 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_notify.xml @@ -8,5 +8,5 @@ </panel> <text_editor name="message" value="message"/> <text name="attachment" value="Pièce jointe"/> - <button label="Ok" name="btn_ok"/> + <button label="OK" name="btn_ok"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml index 653f1fff289..0590ed0f1bb 100644 --- a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <text name="avatar_name" value="Inconnu"/> - <button label="Profil" name="view_profile_btn"/> - <button label="Devenir amis" name="add_friend_btn"/> - <button label="Téléporter" name="teleport_btn"/> - <button label="Partager" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="Appeler" name="call_btn"/> - <button label="Quitter l'appel" name="end_call_btn"/> - <button label="Contrôles vocaux" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="Profil" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="Devenir amis" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="Téléporter" name="teleport_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Partager" name="share_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Appeler" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Quitter l'appel" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Contrôles vocaux" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml index 1b54f093d93..a2f82c72df7 100644 --- a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml @@ -21,6 +21,7 @@ <string name="icon_PG" value="parcel_drk_PG"/> <string name="icon_M" value="parcel_drk_M"/> <string name="icon_R" value="parcel_drk_R"/> + <button name="back_btn" tool_tip="Précédent"/> <text name="title" value="Profil du lieu"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml index 55dff07f46b..8f0561d243a 100644 --- a/indra/newview/skins/default/xui/fr/panel_login.xml +++ b/indra/newview/skins/default/xui/fr/panel_login.xml @@ -6,36 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=fr </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - Prénom : - </text> - <line_editor name="first_name_edit" tool_tip="Prénom [SECOND_LIFE]"/> - <text name="last_name_text"> - Nom : - </text> - <line_editor name="last_name_edit" tool_tip="Nom [SECOND_LIFE]"/> - <text name="password_text"> - Mot de passe : - </text> - <button label="Connexion" label_selected="Connexion" name="connect_btn"/> - <text name="start_location_text"> - Lieu de départ : - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Dernier emplacement" name="MyLastLocation"/> - <combo_box.item label="Domicile" name="MyHome"/> - <combo_box.item label="<Saisissez le nom de la région>" name="Typeregionname"/> - </combo_box> - <check_box label="Enregistrer le mot de passe" name="remember_check"/> - <text name="create_new_account_text"> - Créer un compte - </text> - <text name="forgot_password_text"> - Nom ou mot de passe oublié ? - </text> - <text name="channel_text"> - [VERSION] - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Prénom : + </text> + <line_editor label="Prénom" name="first_name_edit" tool_tip="Prénom [SECOND_LIFE]"/> + <text name="last_name_text"> + Nom : + </text> + <line_editor label="Nom :" name="last_name_edit" tool_tip="Nom [SECOND_LIFE]"/> + <text name="password_text"> + Mot de passe : + </text> + <check_box label="Rappel" name="remember_check"/> + <text name="start_location_text"> + Commencer à : + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Dernier emplacement" name="MyLastLocation"/> + <combo_box.item label="Domicile" name="MyHome"/> + <combo_box.item label="<Saisissez le nom de la région>" name="Typeregionname"/> + </combo_box> + <button label="Connexion" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + S'inscrire + </text> + <text name="forgot_password_text"> + Nom ou mot de passe oublié ? + </text> + <text name="login_help"> + Besoin d'aide ? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml index 9a98581cb4c..5dc90422053 100644 --- a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml @@ -3,10 +3,10 @@ <panel.string name="Title"> Choses </panel.string> - <filter_editor label="Filtre" name="inventory search editor"/> + <filter_editor label="Filtrer l'inventaire" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="Tous les objets" name="All Items"/> - <inventory_panel label="Objets récents" name="Recent Items"/> + <inventory_panel label="MON INVENTAIRE" name="All Items"/> + <inventory_panel label="RÉCENT" name="Recent Items"/> </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml index 2e73072e972..afd2d9cd8f7 100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml @@ -1,28 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Général" name="Media Settings General"> <text name="home_label"> - URL du domicile : + Page d'accueil : </text> - <line_editor name="home_url" tool_tip="L'URL du domicile pour cette source média"/> + <text name="home_fails_whitelist_label"> + (Cette page a été rejetée par la liste blanche spécifiée) + </text> + <line_editor name="home_url" tool_tip="La page d'accueil pour cette source média"/> <text name="preview_label"> Prévisualiser </text> <text name="current_url_label"> - URL actuelle : + Page actuelle : </text> - <line_editor name="current_url" tool_tip="L'URL actuelle pour cette source média" value=""/> + <text name="current_url" tool_tip="La page actuelle pour cette source média" value=""/> <button label="Réinitialiser" name="current_url_reset_btn"/> - <text name="controls_label"> - Contrôles : - </text> - <combo_box name="controls"> - <combo_item name="Standard"> - Standard - </combo_item> - <combo_item name="Mini"> - Mini - </combo_item> - </combo_box> <check_box initial_value="false" label="Boucle auto" name="auto_loop"/> <check_box initial_value="false" label="Premier clic interagit" name="first_click_interact"/> <check_box initial_value="false" label="Zoom auto" name="auto_zoom"/> diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml index 88a1897f818..6f6ae035a18 100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Contrôles" name="Media settings for controls"> +<panel label="Personnaliser" name="Media settings for controls"> + <text name="controls_label"> + Contrôles : + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Standard + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> <check_box initial_value="false" label="Désactiver la navigation et l'interactivité" name="perms_owner_interact"/> - <check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_owner_control"/> + <check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_owner_control"/> <check_box initial_value="false" label="Désactiver la navigation et l'interactivité" name="perms_group_interact"/> - <check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_group_control"/> + <check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_group_control"/> <check_box initial_value="false" label="Désactiver la navigation et l'interactivité" name="perms_anyone_interact"/> - <check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_anyone_control"/> + <check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml index 42641f48af0..36d5f4e860e 100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml @@ -1,6 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Sécurité" name="Media Settings Security"> - <check_box initial_value="false" label="Autoriser l'accès aux URL spécifiées uniquement (par préfixe)" name="whitelist_enable"/> + <check_box initial_value="false" label="Autoriser l'accès aux styles d'URL spécifiés uniquement" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + Les entrées par lesquelles la page d'accueil est rejetée sont indiquées : + </text> <button label="Ajouter" name="whitelist_add"/> <button label="Supprimer" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + Avertissement : la page d'accueil spécifiée dans l'onglet Général a été rejetée par la liste blanche. Elle sera désactivée jusqu'à l'ajout d'une entrée valide. + </text> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml index 5ffe0b9d890..bbf760466ab 100644 --- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_my_profile.xml @@ -4,52 +4,44 @@ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] </string> + <string name="payment_update_link_url"> + http://www.secondlife.com/account/billing.php?lang=en + </string> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=en + </string> + <string name="my_account_link_url" value="http://secondlife.com/account"/> <string name="no_partner_text" value="Aucun"/> + <string name="no_group_text" value="Aucun"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d'image"/> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <icon label="" name="real_world_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d'image"/> - <text name="title_rw_descr_text" value="Monde physique :"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Page d'accueil : - </text> - <text name="title_member_text" value="Membre depuis :"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Statut du compte :"/> - <text name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/> - <text name="title_partner_text" value="Partenaire :"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Groupes :"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Devenir amis" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Appeler" name="call"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="Téléporter" name="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Modifier le profil" name="edit_profile_btn"/> - <button label="Changer d'apparence" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d'image"/> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d'image"/> + <text name="title_rw_descr_text" value="Monde physique :"/> + </panel> + <text name="title_member_text" value="Résident depuis :"/> + <text name="title_acc_status_text" value="Statut du compte :"/> + <text name="acc_status_text"> + Résident. Aucune info de paiement enregistrée. + Linden. + </text> + <text name="title_partner_text" value="Partenaire :"/> + <text name="title_groups_text" value="Groupes :"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/> + <button label="Changer d'apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml index 2cb6d91133f..7b89a2b686c 100644 --- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml @@ -9,4 +9,7 @@ <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/> </search_combo_box> </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="Afficher d'avantage de Favoris"/> + </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml index 0195118fd80..b1be2746165 100644 --- a/indra/newview/skins/default/xui/fr/panel_notes.xml +++ b/indra/newview/skins/default/xui/fr/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notes/Perso" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Mes notes perso :"/> @@ -11,13 +11,13 @@ <check_box label="Modifier, supprimer ou prendre mes objets" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Ajouter" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Appeler" name="call"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="Téléporter" name="teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/> + <button label="IM" name="im" tool_tip="Ouvrir une session IM"/> + <button label="Appeler" name="call" tool_tip="Appeler ce résident"/> + <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/> + <button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml index 1ff1227772b..3447d54cf8c 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="Outfits"> - <accordion name="outfits_accordion"> - <accordion_tab name="tab_outfits" title="Barre des tenues"/> - <accordion_tab name="tab_cof" title="Barre de la tenue actuelle"/> - </accordion> - <button label=">" name="selector" tool_tip="Afficher les propriétés de la tenue"/> +<panel label="Choses" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="MES TENUES" name="outfitslist_tab"/> + <inventory_panel label="TENUE" name="cof_accordionpanel"/> + </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> - <button name="add_btn" tool_tip="Ajouter un nouvel objet"/> <dnd_button name="trash_btn" tool_tip="Supprimer l'objet sélectionné"/> + <button label="Enregistrer la tenue" name="make_outfit_btn" tool_tip="Enregistrer l'apparence comme tenue"/> + <button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/> + <button label="M" name="look_edit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml index d900344dccc..47035591117 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Nouvelle tenue" name="new"/> - <menu_item_call label="Porter la tenue" name="wear"/> + <menu_item_call label="Remplacer la tenue actuelle" name="wear"/> + <menu_item_call label="Enlever de la tenue actuelle" name="remove"/> + <menu_item_call label="Renommer" name="rename"/> + <menu_item_call label="Supprimer le lien" name="remove_link"/> <menu_item_call label="Supprimer la tenue" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index ae2b96da3c3..408a7e67d7e 100644 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -49,5 +49,6 @@ <button label="Téléporter" name="teleport_btn" tool_tip="Proposez une téléportation"/> <button label="Profil du groupe" name="group_info_btn" tool_tip="Voir le profil du groupe"/> <button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/> + <button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml index cf110c27b5e..e33281defcf 100644 --- a/indra/newview/skins/default/xui/fr/panel_picks.xml +++ b/indra/newview/skins/default/xui/fr/panel_picks.xml @@ -2,20 +2,16 @@ <panel label="Favoris" name="panel_picks"> <string name="no_picks" value="Pas de favoris"/> <string name="no_classifieds" value="Pas de petites annonces"/> - <text name="empty_picks_panel_text"> - Il n'y a pas de favoris/petites annonces ici - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Favoris"/> <accordion_tab name="tab_classifieds" title="Petites annonces"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Ajouter cet endroit à mes Préférences"/> + <button name="new_btn" tool_tip="Créer une nouvelle préférence ou petite annonce à l'emplacement actuel"/> </panel> <panel name="buttons_cucks"> - <button label="Infos" name="info_btn"/> - <button label="Téléporter" name="teleport_btn"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="â–¼" name="overflow_btn"/> + <button label="Infos" name="info_btn" tool_tip="Afficher les informations du Favori"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone correspondante"/> + <button label="Carte" name="show_on_map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml index 3772d8dd4e1..7ff796a61f6 100644 --- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml @@ -56,6 +56,7 @@ <string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/> <string name="icon_Damage" value="parcel_drk_Damage"/> <string name="icon_DamageNo" value="parcel_drk_DamageNo"/> + <button name="back_btn" tool_tip="Précédent"/> <text name="title" value="Profil du lieu"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> @@ -92,7 +93,7 @@ <text name="region_type_label" value="Type :"/> <text name="region_type" value="Orignal"/> <text name="region_rating_label" value="Catégorie :"/> - <text name="region_rating" value="Explicite"/> + <text name="region_rating" value="Adulte"/> <text name="region_owner_label" value="Propriétaire :"/> <text name="region_owner" value="orignal Van Orignal"/> <text name="region_group_label" value="Groupe :"/> diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml index 79fe4d63c7e..3cea86a3e48 100644 --- a/indra/newview/skins/default/xui/fr/panel_places.xml +++ b/indra/newview/skins/default/xui/fr/panel_places.xml @@ -2,11 +2,12 @@ <panel label="Lieux" name="places panel"> <string name="landmarks_tab_title" value="MES REPÈRES"/> <string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉPORTATIONS"/> - <filter_editor label="Filtre" name="Filter"/> + <filter_editor label="Filtrer les lieux" name="Filter"/> <panel name="button_panel"> - <button label="Téléporter" name="teleport_btn"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> <button label="Carte" name="map_btn"/> - <button label="Éditer" name="edit_btn"/> + <button label="Éditer" name="edit_btn" tool_tip="Modifier les informations du repère"/> + <button name="overflow_btn" tool_tip="Afficher d'autres options"/> <button label="Fermer" name="close_btn"/> <button label="Annuler" name="cancel_btn"/> <button label="Enregistrer" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml index 600a8259734..73f4e1e2bd8 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml @@ -6,9 +6,9 @@ <check_box label="Quand je dépense ou que je reçois des L$" name="notify_money_change_checkbox"/> <check_box label="Quand mes amis se connectent ou se déconnectent" name="friends_online_notify_checkbox"/> <text name="show_label"> - Toujours afficher ces alertes : + Toujours afficher ces notifications : </text> <text name="dont_show_label"> - Ne jamais afficher ces alertes : + Ne jamais afficher ces notifications : </text> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml index d292b002f65..25a8e3b6d49 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat écrit" name="chat"> <radio_group name="chat_font_size"> - <radio_item label="Moins" name="radio"/> - <radio_item label="Moyenne" name="radio2"/> - <radio_item label="Plus" name="radio3"/> + <radio_item label="Moins" name="radio" value="0"/> + <radio_item label="Moyenne" name="radio2" value="1"/> + <radio_item label="Plus" name="radio3" value="2"/> </radio_group> <color_swatch label="Vous" name="user"/> <text name="text_box1"> @@ -40,4 +40,8 @@ <check_box initial_value="true" label="Jouer l'animation clavier quand vous écrivez" name="play_typing_animation"/> <check_box label="M'envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/> <check_box label="Activer l'historique des chats en texte brut" name="plain_text_chat_history"/> + <radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)"> + <radio_item label="Plusieurs fenêtres" name="radio" value="0"/> + <radio_item label="Une fenêtre" name="radio2" value="1"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml index 6d331704eac..b359cf56d84 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml @@ -15,7 +15,6 @@ <combo_box.item label="Polski (Polonais) - Bêta" name="Polish"/> <combo_box.item label="Portugués (Portugais) - Bêta" name="Portugese"/> <combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/> - <combo_box.item label="Tests langue" name="TestLanguage"/> </combo_box> <text name="language_textbox2"> (redémarrage requis) @@ -25,9 +24,9 @@ </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="PG, Mature et Adult" name="Desired_Adult"/> - <combo_box.item label="PG et Mature" name="Desired_Mature"/> - <combo_box.item label="PG" name="Desired_PG"/> + <combo_box.item label="Général, Modéré, Adulte" name="Desired_Adult"/> + <combo_box.item label="Général et Modéré" name="Desired_Mature"/> + <combo_box.item label="Général" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> Lieu de départ : @@ -41,9 +40,9 @@ Affichage des noms : </text> <radio_group name="Name_Tag_Preference"> - <radio_item label="Désactivé" name="radio"/> - <radio_item label="Activé" name="radio2"/> - <radio_item label="Afficher brièvement" name="radio3"/> + <radio_item label="Désactivé" name="radio" value="0"/> + <radio_item label="Activé" name="radio2" value="1"/> + <radio_item label="Afficher brièvement" name="radio3" value="2"/> </radio_group> <check_box label="Afficher mon nom" name="show_my_name_checkbox1"/> <check_box initial_value="true" label="Affichage en petit" name="small_avatar_names_checkbox"/> @@ -51,14 +50,17 @@ <text name="effects_color_textbox"> Mes effets : </text> - <color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> <text name="title_afk_text"> Délai d'absence : </text> - <spinner label="" name="afk_timeout_spinner"/> - <text name="seconds_textbox"> - secondes - </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> + <combo_box label="Délai d'absence :" name="afk"> + <combo_box.item label="2 minutes" name="item0"/> + <combo_box.item label="5 minutes" name="item1"/> + <combo_box.item label="10 minutes" name="item2"/> + <combo_box.item label="30 minutes" name="item3"/> + <combo_box.item label="jamais" name="item4"/> + </combo_box> <text name="text_box3"> Réponse si occupé(e) : </text> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml index 4bb6c766173..88b68d1a06e 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml @@ -11,18 +11,18 @@ <check_box label="Seuls mes amis et groupes peuvent m'appeler ou m'envoyer un IM" name="voice_call_friends_only_check"/> <check_box label="Fermer le micro à la fin d'un appel" name="auto_disengage_mic_check"/> <check_box label="Accepter les cookies" name="cookies_enabled"/> - <check_box label="Autoriser la lecture automatique des médias" name="autoplay_enabled"/> - <check_box label="Lire le média de la parcelle automatiquement" name="parcel_autoplay_enabled"/> + <check_box label="Média activé" name="media_enabled"/> + <check_box label="Autoriser la lecture automatique du média" name="autoplay_enabled"/> <text name="Logs:"> Journaux : </text> <check_box label="Sauvegarder les chats près de moi sur mon ordinateur" name="log_nearby_chat"/> <check_box label="Sauvegarder les IM sur mon ordinateur" name="log_instant_messages"/> <check_box label="Inclure les heures" name="show_timestamps_check_im"/> - <line_editor left="308" name="log_path_string" right="-20"/> <text name="log_path_desc"> - Emplacement + Emplacement : </text> + <line_editor left="308" name="log_path_string" right="-20"/> <button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/> <button label="Liste des ignorés" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml index ffc822d76f5..68a735df90a 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Contrôle et caméra" name="Input panel"> +<panel label="Configuration" name="Input panel"> <button label="Autres accessoires" name="joystick_setup_button" width="175"/> <text name="Mouselook:"> Vue subjective : @@ -26,9 +26,9 @@ Mo </text> <button label="Parcourir" label_selected="Parcourir" name="set_cache"/> - <button label="Réinitialiser" label_selected="Choisir" name="reset_cache"/> + <button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/> <text name="Cache location"> - Emplacement du cache + Emplacement du cache : </text> <text name="Web:"> Web : @@ -41,6 +41,6 @@ <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/> <button label="Parcourir" label_selected="Parcourir" name="set_proxy"/> <text name="Proxy location"> - Emplacement du proxy + Emplacement du proxy : </text> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 27768ac73ba..4f5ef423f5d 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -7,8 +7,8 @@ <slider label="Média" name="Media Volume"/> <slider label="Effets sonores" name="SFX Volume"/> <slider label="Flux musical" name="Music Volume"/> - <check_box label="Voix" name="enable_voice_check"/> - <slider label="Voix" name="Voice Volume"/> + <check_box label="Activer le chat vocal" name="enable_voice_check"/> + <slider label="Chat vocal" name="Voice Volume"/> <text name="Listen from"> Écouter à partir de : </text> diff --git a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml index dd70c40c3ed..c7ab31c4b37 100644 --- a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml @@ -6,7 +6,36 @@ <string name="skip_step"> 0.2 </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Le média est en cours de chargement"/> + </panel> + </layout_stack> <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Naviguer en arrière"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Naviguer vers l'avant"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="Page d'accueil"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="Arrêter le média"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="Recharger"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Arrêter le chargement"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Jouer le média"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Pauser le média"/> + </layout_panel> <layout_panel name="media_address"> <line_editor name="media_address_url" tool_tip="URL du média"/> <layout_stack name="media_address_url_icons"> @@ -21,13 +50,24 @@ <layout_panel name="media_play_position"> <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progrès de la lecture du film"/> </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Reculer"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Avancer"/> + </layout_panel> <layout_panel name="media_volume"> - <button name="media_volume_button" tool_tip="Couper le son de ce média"/> + <button name="media_mute_button" tool_tip="Couper le son de ce média"/> + <slider name="volume_slider" tool_tip="Volume du média"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="Zoom avant sur le média"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Zoom arrière"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="Ouvrir l'URL dans le navigateur"/> </layout_panel> - </layout_stack> - <layout_stack> - <panel name="media_progress_indicator"> - <progress_bar name="media_progress_bar" tool_tip="Le média est en cours de chargement"/> - </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml index c2e291bd095..0c33a0f1e03 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile.xml @@ -12,50 +12,41 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=fr-FR"/> <string name="no_partner_text" value="Aucun"/> + <string name="no_group_text" value="Aucun"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="Monde physique :"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Page d'accueil : - </text> - <text name="title_member_text" value="Membre depuis :"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Statut du compte :"/> - <text name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/> - <text name="title_partner_text" value="Partenaire :"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Groupes :"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Devenir amis" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Appeler" name="call"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="Téléporter" name="teleport"/> - <button label="â–¼" name="overflow_btn"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Modifier le profil" name="edit_profile_btn"/> - <button label="Changer d'apparence" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="Monde physique :"/> + </panel> + <text name="title_member_text" value="Résident depuis :"/> + <text name="title_acc_status_text" value="Statut du compte :"/> + <text name="acc_status_text"> + Résident. Aucune info de paiement enregistrée. + Linden. + </text> + <text name="title_partner_text" value="Partenaire :"/> + <text name="title_groups_text" value="Groupes :"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/> + <button label="IM" name="im" tool_tip="Ouvrir une session IM"/> + <button label="Appeler" name="call" tool_tip="Appeler ce résident"/> + <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/> + <button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/> + <button label="Changer d'apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml index bfe33a1c3da..a0282dd940d 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml @@ -1,9 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Domaine" name="Estate"> <text bottom="-34" name="estate_help_text"> - Les changements apportés aux paramètres -de cet onglet auront des répercussions sur -toutes les régions du domaine. + Les modifications des paramètres de cet onglet affecteront toutes les régions du domaine. </text> <text bottom_delta="-34" name="estate_text"> Domaine : @@ -18,10 +16,10 @@ toutes les régions du domaine. (inconnu) </text> <text name="Only Allow"> - Limiter l'accès aux résidents qui : + Limiter l'accès aux comptes vérifiés par : </text> - <check_box label="Ont enregistré leurs infos de paiement" name="limit_payment" tool_tip="Interdire les résidents non identifiés"/> - <check_box label="Ont fait vérifier leur âge" name="limit_age_verified" tool_tip="Interdire les résidents qui n'ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d'informations."/> + <check_box label="Informations de paiement enregistrées" name="limit_payment" tool_tip="Bannir les résidents non identifiés"/> + <check_box label="Vérification de mon âge" name="limit_age_verified" tool_tip="Bannir les résidents qui n'ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d'informations."/> <check_box label="Autoriser les chats vocaux" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <text name="abuse_email_text"> 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 70782e2aa67..8a59adbd934 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml @@ -39,10 +39,10 @@ <text label="Maturité" name="access_text"> Catégorie : </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="Modéré" name="access_combo"> <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Mature" name="Mature"/> - <combo_box.item label="PG" name="PG"/> + <combo_box.item label="Modéré" name="Mature"/> + <combo_box.item label="Général" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="Appliquer" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml new file mode 100644 index 00000000000..0e72bbc9f58 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Région" name="General"> + <text name="region_text_lbl"> + Région : + </text> + <text name="region_text"> + inconnu + </text> + <text name="version_channel_text_lbl"> + Version : + </text> + <text name="version_channel_text"> + inconnu + </text> + <text name="region_type_lbl"> + Type : + </text> + <text name="region_type"> + inconnu + </text> + <check_box label="Interdire le terraformage" name="block_terraform_check"/> + <check_box label="Interdire le vol" name="block_fly_check"/> + <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 terrains" name="allow_land_resell_check"/> + <check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/> + <check_box label="Interdire l'affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/> + <spinner label="Nombre maximum d'avatars" name="agent_limit_spin"/> + <spinner label="Bonus objet" name="object_bonus_spin"/> + <text label="Accès" name="access_text"> + Catégorie : + </text> + <combo_box label="Modéré" name="access_combo"> + <combo_box.item label="Adulte" name="Adult"/> + <combo_box.item label="Modéré" name="Mature"/> + <combo_box.item label="Général" name="PG"/> + </combo_box> + <button label="Appliquer" name="apply_btn"/> + <button label="Téléporter un résident chez lui..." name="kick_btn"/> + <button label="Téléporter tous les résidents chez eux..." name="kick_all_btn"/> + <button label="Envoyer un message à la région..." name="im_btn"/> + <button label="Gérer le téléhub..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_texture.xml b/indra/newview/skins/default/xui/fr/panel_region_texture.xml index 91d315848eb..a7abb49b1a1 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_texture.xml @@ -43,8 +43,7 @@ Ces valeurs représentent les limites de mélange pour les textures ci-dessus. </text> <text name="height_text_lbl11"> - En mètres, la valeur Bas correspond à la hauteur maximum de la texture n°1 -et la valeur Haut correspond à la hauteur minimum de la texture n°4. + En mètres, la valeur Bas correspond à la hauteur maximum de la texture n°1 et la valeur Haut correspond à la hauteur minimum de la texture n°4. </text> <text name="height_text_lbl12"> et la valeur Haut correspond à la hauteur minimum de la texture n°4. diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml new file mode 100644 index 00000000000..24656bf379a --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MON AVATAR" name="script_limits_my_avatar_panel"> + <text name="loading_text"> + Chargement... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Taille (Ko)" name="size"/> + <scroll_list.columns label="URL" name="urls"/> + <scroll_list.columns label="Nom de l'objet" name="name"/> + <scroll_list.columns label="Endroit" name="location"/> + </scroll_list> + <button label="Rafraîchir la liste" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml new file mode 100644 index 00000000000..1e5e680c097 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MÉMOIRE DE LA RÉGION" name="script_limits_region_memory_panel"> + <text name="script_memory"> + Mémoire des scripts de parcelles + </text> + <text name="parcels_listed"> + Parcelles possédées : + </text> + <text name="memory_used"> + Mémoire utilisée : + </text> + <text name="loading_text"> + Chargement... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Taille (Ko)" name="size"/> + <scroll_list.columns label="Nom de l'objet" name="name"/> + <scroll_list.columns label="Propriétaire d'objet" name="owner"/> + <scroll_list.columns label="Parcelle/emplacement" name="location"/> + </scroll_list> + <button label="Rafraîchir la liste" name="refresh_list_btn"/> + <button label="Surbrillance" name="highlight_btn"/> + <button label="Retour" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray.xml b/indra/newview/skins/default/xui/fr/panel_side_tray.xml index 816834a9855..3ad16719218 100644 --- a/indra/newview/skins/default/xui/fr/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/fr/panel_side_tray.xml @@ -2,9 +2,13 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> + <sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose"/> <sidetray_tab description="Domicile." name="sidebar_home"> <panel label="domicile" name="panel_home"/> </sidetray_tab> + <sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me"> + <panel label="Moi" name="panel_me"/> + </sidetray_tab> <sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people"> <panel_container name="panel_container"> <panel label="Profil du groupe" name="panel_group_info_sidetray"/> @@ -14,13 +18,10 @@ <sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà ." label="Lieux" name="sidebar_places"> <panel label="Lieux" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me"> - <panel label="Moi" name="panel_me"/> + <sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory"> + <panel label="Modifier l'inventaire" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance"> <panel label="Changer d'apparence" name="sidepanel_appearance"/> </sidetray_tab> - <sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory"> - <panel label="Modifier l'inventaire" name="sidepanel_inventory"/> - </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml index 9432b44f0e1..ae575a9facb 100644 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -21,7 +21,8 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde : Cliquez pour acheter plus de L$"/> + <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde"/> + <button label="Acheter des L$" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/> <text name="TimeText" tool_tip="Heure actuelle (Pacifique)"> midi </text> diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml index 623d2deae9e..bfd7a869c52 100644 --- a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml @@ -11,5 +11,7 @@ <accordion_tab name="1_month_and_older" title="Il y a 1 mois ou plus"/> <accordion_tab name="6_months_and_older" title="Il y a 6 mois ou plus"/> </accordion> - <panel label="bottom_panel" name="bottom_panel"/> + <panel label="bottom_panel" name="bottom_panel"> + <button name="gear_btn" tool_tip="Afficher d'autres options"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml index 9d18c52442d..21eb7ff62c2 100644 --- a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="teleport_history_item"> <text name="region" value="..."/> + <button name="profile_btn" tool_tip="Afficher les infos de l'objet"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml index a2df596773c..3367353b283 100644 --- a/indra/newview/skins/default/xui/fr/role_actions.xml +++ b/indra/newview/skins/default/xui/fr/role_actions.xml @@ -1,201 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="Ces pouvoirs permettent d'ajouter et de supprimer des membres du groupe et permettent aux nouveaux membres de rejoindre le groupe sans recevoir d'invitation." - name="Membership"> - <action description="Inviter des membres dans ce groupe" - longdescription="Invitez des membres à rejoindre ce groupe en utilisant le bouton Inviter un nouveau membre à partir de l'onglet Membres et rôles > Membres." - name="member invite" value="1" /> - <action description="Expulser des membres du groupe" - longdescription="Expulsez des membres de ce groupe en utilisant le bouton Expulser un membre à partir de l'onglet Membres et rôles > Membres. Un propriétaire ne peut pas être expulsé. Un membre peut être expulsé d'un groupe uniquement s'il a le rôle Tous (Everyone). Si vous n'êtes pas propriétaire, vous devez d'abord retirer les rôles d'un membre avant de pouvoir l'expulser." - name="member eject" value="2" /> - <action - description="Gérer l'inscription et les frais d'inscription" - longdescription="Choisissez l'inscription libre pour permettre aux nouveaux membres de rejoindre le groupe sans invitation et modifiez les frais d'inscription à l'onglet Général." - name="member options" value="3" /> + <action_set description="Ces pouvoirs permettent d'ajouter et de supprimer des membres du groupe et permettent aux nouveaux membres de rejoindre le groupe sans recevoir d'invitation." name="Membership"> + <action description="Inviter des membres dans ce groupe" longdescription="Invitez des personnes à rejoindre ce groupe en utilisant le bouton Inviter dans l'onglet Membres de la section Rôles." name="member invite" value="1"/> + <action description="Expulser des membres du groupe" longdescription="Expulsez des personnes de ce groupe en utilisant le bouton Expulser dans l'onglet Membres de la section Rôles. Un propriétaire peut expulser tout le monde à l'exception des autres propriétaires. Si vous n'êtes pas propriétaire, vous pouvez expulser un membre d'un groupe uniquement si il n'a que le rôle Tous et AUCUN autre rôle. Pour supprimer des membres des rôles, vous devez disposer du pouvoir correspondant." name="member eject" value="2"/> + <action description="Activez Inscription libre et modifiez les frais d'inscription" longdescription="Activez Inscription libre pour permettre aux nouveaux membres de s'inscrire sans invitation, et changez les frais d'inscription dans la section Général." name="member options" value="3"/> </action_set> - <action_set - description="Ces pouvoirs permettent d'ajouter, de supprimer et de modifier les rôles dans le groupe et d'y assigner des membres et des pouvoirs." - name="Roles"> - <action description="Créer des rôles" - longdescription="Créez de nouveaux rôles à l'onglet Membres et rôles > Rôles." - name="role create" value="4" /> - <action description="Supprimer des rôles" - longdescription="Supprimez des rôles à l'onglet Membres et rôles > Rôles." - name="role delete" value="5" /> - <action description="Modifier les noms, les titres et les descriptions des rôles" - longdescription="Modifiez les noms, titres et descriptions des rôles à l'onglet Membres et rôles > Rôles." - name="role properties" value="6" /> - <action description="Attribuer des rôles limités" - longdescription="Affectez des membres à certains rôles à l'onglet Membres et rôles > Membres. Un membre ne peut attribuer que des rôles auxquels il est lui-même affecté." - name="role assign member limited" value="7" /> - <action description="Attribuer tous les rôles" - longdescription="Affectez des membres à tous types de rôles à l'onglet Membres et rôles > Membres > Rôles assignés. Attention : ce pouvoir peut conférer des rôles très importants, proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." - name="role assign member" value="8" /> - <action description="Destituer des membres de leurs rôles" - longdescription="Destituez des membres de leurs rôles à partir du menu Rôles attribués à l'onglet Membres et rôles > Membres. Les propriétaires ne peuvent pas être destitués." - name="role remove member" value="9" /> - <action description="Modifier les pouvoirs d'un rôle" - longdescription="Attribuez et retirez les pouvoirs d'un rôle à partir du menu Pouvoirs attribués à l'onglet Membres et rôles > Rôles > Pouvoirs attribués. Attention : ce pouvoir peut donner des rôles très importants, proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." - name="role change actions" value="10" /> + <action_set description="Ces pouvoirs permettent d'ajouter, de supprimer et de modifier les rôles dans le groupe et d'y assigner des membres et des pouvoirs." name="Roles"> + <action description="Créer des rôles" longdescription="Créez de nouveaux rôles dans l'onglet Rôles de la section Rôles." name="role create" value="4"/> + <action description="Supprimer des rôles" longdescription="Supprimez des rôles dans l'onglet Rôles de la section Rôles." name="role delete" value="5"/> + <action description="Changez les noms, les titres et les descriptions des rôles, et indiquez si les membres des rôles sont rendus publics" longdescription="Changez les noms, les titres et les descriptions des rôles, et indiquez si les membres des rôles sont rendus publics. Vous pouvez le faire au bas de l'onglet Rôles dans la section Rôles, après avoir sélectionné un rôle." name="role properties" value="6"/> + <action description="Attribuer des rôles limités" longdescription="Assignez des membres aux rôles dans la liste Rôles assignés (section Rôles > onglet Membres). Un membre avec ce pouvoir peut uniquement ajouter des membres à un rôle dans lequel le responsable de l'assignation est déjà présent." name="role assign member limited" value="7"/> + <action description="Attribuer tous les rôles" longdescription="Assignez des membres à n'importe quel rôle dans la liste Rôles assignés (section Rôles > onglet Membres). *AVERTISSEMENT* Tout membre disposant de ce pouvoir peut s'assigner lui-même, ainsi que tout autre membre non-propriétaire, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d'attribuer ce pouvoir." name="role assign member" value="8"/> + <action description="Destituer des membres de leurs rôles" longdescription="Supprimez des membres des rôles dans la liste Rôles assignés (section Rôles > onglet Membres). Les propriétaires ne peuvent pas être supprimés." name="role remove member" value="9"/> + <action description="Modifier les pouvoirs d'un rôle" longdescription="Attribuez et supprimez des pouvoirs pour chaque rôle dans la liste Pouvoirs attribués (section Rôles > onglet Rôles). *AVERTISSEMENT* Tout membre dans un rôle avec ce pouvoir peut s'attribuer à lui-même, ainsi qu'à tout autre membre non-propriétaire, tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d'attribuer ce pouvoir." name="role change actions" value="10"/> </action_set> - <action_set - description="Ces pouvoirs permettent de modifier le profil public du groupe, sa charte et son logo." - name="Group Identity"> - <action - description="Modifier le profil public du groupe" - longdescription="Modifiez la charte, le logo, l'affichage dans la recherche et la liste des membres visibles à l'onglet Général." - name="group change identity" value="11" /> + <action_set description="Ces pouvoirs permettent de modifier le profil public du groupe, sa charte et son logo." name="Group Identity"> + <action description="Modifier le profil public du groupe" longdescription="Modifiez la charte, le logo et l'affichage dans les résultats de recherche. Vous pouvez faire cela dans la section Général." name="group change identity" value="11"/> </action_set> - <action_set - description="Ces pouvoirs permettent de transférer, modifier et vendre du terrain appartenant au groupe. Pour accéder au menu À propos du terrain, cliquez sur le nom de la parcelle en haut de l'écran ou cliquez-droit sur le sol." - name="Parcel Management"> - <action description="Transférer et acheter des parcelles pour le groupe" - longdescription="Transférez et achetez des parcelles pour le groupe à partir du menu À propos du terrain > Général." - name="land deed" value="12" /> - <action description="Abandonner le terrain" - longdescription="Abandonnez des parcelles du groupe à Linden Lab. Attention : ce pouvoir autorise l'abandon d'un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." - name="land release" value="13" /> - <action description="Vendre du terrain" - longdescription="Vendez des parcelles du groupe. Attention : ce pouvoir autorise la vente d'un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." - name="land set sale info" value="14" /> - <action description="Diviser et fusionner des parcelles" - longdescription="Divisez et fusionnez des parcelles. Pour cela, cliquez-droit sur le sol, sélectionnez Modifier le terrain, et faites glisser votre souris sur l'endroit que vous souhaitez modifier. Pour diviser le terrain, sélectionnez un endroit puis cliquez sur Diviser... Pour fusionner des parcelles, sélectionnez au moins deux parcelles adjacentes et cliquez sur Fusionner." - name="land divide join" value="15" /> + <action_set description="Ces pouvoirs incluent les pouvoirs de céder, modifier et vendre les terrains de ce groupe. Pour accéder à la fenêtre À propos des terrains, cliquez sur le sol avec le bouton droit de la souris et sélectionnez À propos des terrains, ou cliquez sur l'icône i dans la barre de navigation." name="Parcel Management"> + <action description="Transférer et acheter des parcelles pour le groupe" longdescription="Transférez et achetez des parcelles pour le groupe à partir du menu À propos du terrain > Général." name="land deed" value="12"/> + <action description="Abandonner le terrain" longdescription="Abandonnez des parcelles du groupe à Linden Lab. Attention : ce pouvoir autorise l'abandon d'un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." name="land release" value="13"/> + <action description="Vendre du terrain" longdescription="Vendez des parcelles du groupe. Attention : ce pouvoir autorise la vente d'un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." name="land set sale info" value="14"/> + <action description="Diviser et fusionner des parcelles" longdescription="Divisez et fusionnez des parcelles. Pour ce faire, cliquez sur le sol avec le bouton droit de la souris, sélectionnez Modifier le terrain et faites glisser la souris sur le terrain pour faire une sélection. Pour diviser une parcelle, sélectionnez ce que vous souhaitez diviser et cliquez sur Sous-diviser. Pour fusionner des parcelles, sélectionnez-en deux ou plus qui sont contiguës et cliquez sur Fusionner." name="land divide join" value="15"/> </action_set> - <action_set - description="Ces pouvoirs permettent de modifier le nom de la parcelle, son référencement dans la recherche et le lieu de téléportation." - name="Parcel Identity"> - <action - description="Afficher dans la recherche et définir une catégorie" - longdescription="Choisissez de faire apparaître la parcelle dans la recherche et définissez sa catégorie à partir du menu À propos du terrain > Options." - name="land find places" value="17" /> - <action - description="Modifier le nom, la description et le référencement du terrain dans la recherche" - longdescription="Modifiez le nom, la description de la parcelle et son référencement dans la recherche à partir du menu À propos du terrain > Options." - name="land change identity" value="18" /> - <action - description="Définir le lieu d'arrivée et le routage des téléportations" - longdescription="Définissez le lieu d'arrivée des téléportations et le routage à partir du menu À propos du terrain > Options." - name="land set landing point" value="19" /> + <action_set description="Ces pouvoirs permettent de modifier le nom de la parcelle, son référencement dans la recherche et le lieu de téléportation." name="Parcel Identity"> + <action description="Activez Afficher le lieu dans la recherche et définissez la catégorie" longdescription="Activez Afficher le lieu dans la recherche et définissez la catégorie d'une parcelle dans l'onglet À propos des terrains > Options." name="land find places" value="17"/> + <action description="Modifiez le nom et la description de la parcelle, ainsi que les paramètres d'affichage du lieu dans la recherche" longdescription="Modifiez le nom et la description de la parcelle, ainsi que les paramètres d'affichage du lieu dans la recherche. Pour ce faire, utilisez l'onglet À propos des terrains > Options." name="land change identity" value="18"/> + <action description="Définir le lieu d'arrivée et le routage des téléportations" longdescription="Définissez le lieu d'arrivée des téléportations et le routage à partir du menu À propos du terrain > Options." name="land set landing point" value="19"/> </action_set> - <action_set - description="Ces pouvoirs permettent de définir les options de la parcelle concernant la musique, les médias, la création d'objets et le relief." - name="Parcel Settings"> - <action description="Modifier la musique et les médias" - longdescription="Changez la musique et les médias à partir du menu À propos du terrain > Médias." - name="land change media" value="20" /> - <action description="Changer l'option Modifier le terrain" - longdescription="Changez l'option Modifier le terrain à partir du menu À propos du terrain > Options. Attention : ce pouvoir permet de terraformer votre terrain et de placer ou déplacer des plantes Linden. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer. " - name="land edit" value="21" /> - <action - description="Changer diverses options du terrain" - longdescription="Changez diverses options de la parcelle à partir du menu À propos du terrain > Options. Vous pouvez permettre aux autres résidents de voler, créer des objets, modifier le terrain, lancer des scripts, créer des repères etc." - name="land options" value="22" /> + <action_set description="Ces pouvoirs permettent de définir les options de la parcelle concernant la musique, les médias, la création d'objets et le relief." name="Parcel Settings"> + <action description="Modifier la musique et les médias" longdescription="Changez la musique et les médias à partir du menu À propos du terrain > Médias." name="land change media" value="20"/> + <action description="Changer l'option Modifier le terrain" longdescription="Changez l'option Modifier le terrain à partir du menu À propos du terrain > Options. Attention : ce pouvoir permet de terraformer votre terrain et de placer ou déplacer des plantes Linden. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer. " name="land edit" value="21"/> + <action description="Changer diverses options du terrain" longdescription="Activez Sécurisé (pas de dégâts), Voler, et autorisez les autres résidents à : modifier le terrain, construire, créer des repères et exécuter des scripts sur les terrains appartenant au groupe dans l'onglet propos des terrains > Options." name="land options" value="22"/> </action_set> - <action_set - description="Ces pouvoirs permettent aux membres d'outrepasser les restrictions sur les parcelles du groupe." - name="Parcel Powers"> - <action description="Toujours autoriser Modifier le terrain" - longdescription="Vous pouvez modifier le relief d'une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." - name="land allow edit land" value="23" /> - <action description="Toujours autoriser à voler" - longdescription="Vous pouvez voler sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." - name="land allow fly" value="24" /> - <action description="Toujours autoriser à créer des objets" - longdescription="Vous pouvez créer des objets sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." - name="land allow create" value="25" /> - <action description="Toujours autoriser à créer des repères" - longdescription="Vous pouvez créer un repère sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." - name="land allow landmark" value="26" /> - <action description="Autoriser à définir un domicile sur le terrain du groupe" - longdescription="Vous pouvez définir votre domicile sur une parcelle du groupe à partir du menu Monde > Définir comme domicile." - name="land allow set home" value="28" /> + <action_set description="Ces pouvoirs permettent aux membres d'outrepasser les restrictions sur les parcelles du groupe." name="Parcel Powers"> + <action description="Toujours autoriser Modifier le terrain" longdescription="Vous pouvez modifier le relief d'une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." name="land allow edit land" value="23"/> + <action description="Toujours autoriser à voler" longdescription="Vous pouvez voler sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." name="land allow fly" value="24"/> + <action description="Toujours autoriser à créer des objets" longdescription="Vous pouvez créer des objets sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." name="land allow create" value="25"/> + <action description="Toujours autoriser à créer des repères" longdescription="Vous pouvez créer un repère sur une parcelle du groupe, même si l'option est désactivée à partir du menu À propos du terrain > Options." name="land allow landmark" value="26"/> + <action description="Autoriser à définir un domicile sur le terrain du groupe" longdescription="Un membre dans un rôle avec ce pouvoir peut utiliser le menu Monde > Repères > Définir le domicile ici sur une parcelle cédée à ce groupe." name="land allow set home" value="28"/> </action_set> - <action_set - description="Ces pouvoirs permettent d'autoriser ou d'interdire l'accès à des parcelles du groupe et de geler ou d'expulser des résidents." - name="Parcel Access"> - <action description="Gérer la liste d'accès à la parcelle" - longdescription="Gérez la liste des résidents autorisés sur la parcelle à partir du menu À propos du terrain > Accès." - name="land manage allowed" value="29" /> - <action description="Gérer la liste noire de cette parcelle" - longdescription="Gérez la liste des résidents interdits sur la parcelle à partir du menu À propos du terrain > Interdire." - name="land manage banned" value="30" /> - <action description="Vendre des pass" - longdescription="Choisissez le prix et la durée des pass pour accéder à la parcelle à partir du menu À propos du terrain > Accès." - name="land manage passes" value="31" /> - <action description="Expulser et geler des résidents" - longdescription="Vous pouvez expulser ou geler un résident indésirable en cliquant-droit sur lui, menu radial > Plus." - name="land admin" value="32" /> + <action_set description="Ces pouvoirs permettent d'autoriser ou d'interdire l'accès à des parcelles du groupe et de geler ou d'expulser des résidents." name="Parcel Access"> + <action description="Gérer la liste d'accès à la parcelle" longdescription="Gérez la liste des résidents autorisés sur la parcelle à partir du menu À propos du terrain > Accès." name="land manage allowed" value="29"/> + <action description="Gérer la liste noire de cette parcelle" longdescription="Gérez les listes des résidents bannis des parcelles dans l'onglet À propos des terrains > Accès." name="land manage banned" value="30"/> + <action description="Modifiez les paramètres Vendre des pass à " longdescription="Modifiez les paramètres Vendre des pass à dans l'onglet À propos des terrains > Accès." name="land manage passes" value="31"/> + <action description="Expulser et geler des résidents" longdescription="Les membres dans un rôle avec ce pouvoir peuvent se charger des résidents indésirables sur une parcelle appartenant au groupe en cliquant dessus, puis en sélectionnant Expulser ou Geler." name="land admin" value="32"/> </action_set> - <action_set - description="Ces pouvoirs permettent de renvoyer des objets du groupe et de placer ou déplacer des plantes Linden pour aménager le paysage. Utilisez ce pouvoir avec précaution car les objets renvoyés le sont définitivement." - name="Parcel Content"> - <action description="Renvoyer les objets transférés au groupe" - longdescription="Vous pouvez renvoyer des objets appartenant au groupe à partir du menu À propos du terrain > Objets." - name="land return group owned" value="48" /> - <action description="Renvoyer les objets attribués au groupe" - longdescription="Renvoyez les objets attribués au groupe et sur des parcelles du groupe à partir du menu À propos du terrain > Objets." - name="land return group set" value="33" /> - <action description="Renvoyer des objets n'appartenant pas au groupe" - longdescription="Renvoyez les objets n'appartenant pas au groupe et sur des parcelles du groupe à partir du menu À propos du terrain > Objets." - name="land return non group" value="34" /> - <action description="Aménager le paysage avec des plantes Linden" - longdescription="Placez et déplacez des arbres, plantes et herbes Linden. Vous les trouverez dans le dossier Objets de la bibliothèque de votre inventaire mais aussi à partir du menu Construire." - name="land gardening" value="35" /> + <action_set description="Ces pouvoirs permettent de renvoyer des objets du groupe et de placer ou déplacer des plantes Linden pour aménager le paysage. Utilisez ce pouvoir avec précaution car les objets renvoyés le sont définitivement." name="Parcel Content"> + <action description="Renvoyer les objets transférés au groupe" longdescription="Vous pouvez renvoyer des objets appartenant au groupe à partir du menu À propos du terrain > Objets." name="land return group owned" value="48"/> + <action description="Renvoyer les objets attribués au groupe" longdescription="Renvoyez les objets attribués au groupe et sur des parcelles du groupe à partir du menu À propos du terrain > Objets." name="land return group set" value="33"/> + <action description="Renvoyer des objets n'appartenant pas au groupe" longdescription="Renvoyez les objets n'appartenant pas au groupe et sur des parcelles du groupe à partir du menu À propos du terrain > Objets." name="land return non group" value="34"/> + <action description="Aménager le paysage avec des plantes Linden" longdescription="Pouvoir de paysagisme permettant de placer et déplacer des arbres, des plantes et des herbes Linden. Vous trouverez ces objets dans le dossier Bibliothèque > Objets de votre inventaire. Vous pouvez aussi les créer à partir du menu Construire." name="land gardening" value="35"/> </action_set> - <action_set - description="Ces pouvoirs permettent de transférer, modifier et vendre des objets du groupe. Ces changements se font à partir du menu Construire > Modifier > Général." - name="Object Management"> - <action description="Transférer des objets au groupe" - longdescription="Transférez des objets au groupe à partir du menu Construire > Modifier > Général." - name="object deed" value="36" /> - <action - description="Manipuler les objets du groupe" - longdescription="Déplacez, copiez et modifiez les objets du groupe à partir du menu Construire > Modifier > Général." - name="object manipulate" value="38" /> - <action description="Vendre des objets du groupe" - longdescription="Mettez en vente des objets du groupe à partir du menu Construire > Modifier > Général." - name="object set sale" value="39" /> + <action_set description="Ces pouvoirs incluent les pouvoirs de céder, modifier et vendre des objets appartenant au groupe. Pour ce faire, utilisez l'onglet Outils de construction > Général. Cliquez sur un objet avec le bouton droit de la souris puis sur Modifier pour accéder à ses paramètres." name="Object Management"> + <action description="Transférer des objets au groupe" longdescription="Cédez des objets au groupe dans l'onglet Outils de construction > Général." name="object deed" value="36"/> + <action description="Manipuler les objets du groupe" longdescription="Manipulez (déplacez, copiez, modifiez) des objets appartenant au groupe dans l'onglet Outils de construction > Général." name="object manipulate" value="38"/> + <action description="Vendre des objets du groupe" longdescription="Mettez des objets appartenant au groupe en vente dans l'onglet Outils de construction > Général." name="object set sale" value="39"/> </action_set> - <action_set - description="Ce pouvoir définit les contributions aux frais du groupe, la réception des dividendes et l'accès aux finances du groupe." - name="Accounting"> - <action description="Contribuer aux frais du groupe et recevoir des dividendes" - longdescription="Contribuez aux frais du groupe et recevez des dividendes en cas de bénéfices. Vous recevrez une partie des ventes de terrains et objets appartenant au groupe et contribuerez aux frais divers (mise en vente des terrains etc.)" - name="accounting accountable" value="40" /> + <action_set description="Ce pouvoir définit les contributions aux frais du groupe, la réception des dividendes et l'accès aux finances du groupe." name="Accounting"> + <action description="Contribuer aux frais du groupe et recevoir des dividendes" longdescription="Contribuez aux frais du groupe et recevez des dividendes en cas de bénéfices. Vous recevrez une partie des ventes de terrains et objets appartenant au groupe et contribuerez aux frais divers (mise en vente des terrains etc.)" name="accounting accountable" value="40"/> </action_set> - <action_set - description="Envoyez, recevez et consultez les notices du groupe." - name="Notices"> - <action description="Envoyer des notices" - longdescription="Envoyez des notices à l'onglet Notices." - name="notices send" value="42" /> - <action description="Recevoir et consulter les notices" - longdescription="Recevez des notices et consulter d'anciennes notices à l'onglet Notices." - name="notices receive" value="43" /> + <action_set description="Envoyez, recevez et consultez les notices du groupe." name="Notices"> + <action description="Envoyer des notices" longdescription="Les membres dans un rôle avec ce pouvoir peuvent envoyer des notices par le biais de la section Groupe > Notices." name="notices send" value="42"/> + <action description="Recevoir et consulter les notices" longdescription="Les membres dans un rôle avec ce pouvoir peuvent recevoir des notices et consulter les anciennes notices par le biais de la section Groupe > Notices." name="notices receive" value="43"/> </action_set> - <action_set - description="Ces pouvoirs permettent de créer de nouvelles propositions, de voter et de consulter l'historique des votes." - name="Proposals"> - <action description="Créer des propositions" - longdescription="Ces pouvoirs permettent de créer des propositions et de les soumettre au vote, à partir du menu Profil du groupe > Propositions." - name="proposal start" value="44" /> - <action description="Voter les propositions" - longdescription="Votez les propositions à partir du menu Profil du groupe > Propositions." - name="proposal vote" value="45" /> + <action_set description="Ces pouvoirs permettent de créer de nouvelles propositions, de voter et de consulter l'historique des votes." name="Proposals"> + <action description="Créer des propositions" longdescription="Ces pouvoirs permettent de créer des propositions et de les soumettre au vote, à partir du menu Profil du groupe > Propositions." name="proposal start" value="44"/> + <action description="Voter les propositions" longdescription="Votez les propositions à partir du menu Profil du groupe > Propositions." name="proposal vote" value="45"/> </action_set> - <action_set - description="Ces pouvoirs vous permettent de gérer l'accès aux sessions de chat écrit ou vocal du groupe." - name="Chat"> - <action description="Participer aux chats" - longdescription="Participez aux chats du groupe." - name="join group chat" /> - <action description="Participer au chat vocal" - longdescription="Participez au chat vocal du groupe. Remarque : vous devez au préalable avoir le pouvoir de participer aux chats." - name="join voice chat" /> - <action description="Modérer les chats" - longdescription="Contrôlez l'accès et la participation aux chats de groupe écrits et vocaux." - name="moderate group chat" /> + <action_set description="Ces pouvoirs vous permettent de gérer l'accès aux sessions de chat écrit ou vocal du groupe." name="Chat"> + <action description="Participer aux chats" longdescription="Participez aux chats du groupe." name="join group chat"/> + <action description="Participer au chat vocal" longdescription="Participez au chat vocal du groupe. Remarque : vous devez au préalable avoir le pouvoir de participer aux chats." name="join voice chat"/> + <action description="Modérer les chats" longdescription="Contrôlez l'accès et la participation aux chats de groupe écrits et vocaux." name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml index 456e1dcb9d8..60fd63bffcf 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Apparence" name="appearance panel"> +<panel label="Tenues" name="appearance panel"> <string name="No Outfit" value="Aucune tenue"/> <panel name="panel_currentlook"> <button label="Éditer" name="editappearance_btn"/> <text name="currentlook_title"> - Tenue actuelle : + (non enregistré) </text> <text name="currentlook_name"> - Ma tenue + Ma tenue avec un nom très long comme ORIGNAL </text> </panel> - <filter_editor label="Filtre" name="Filter"/> + <filter_editor label="Filtrer les tenues" name="Filter"/> <button label="Porter" name="wear_btn"/> <button label="Nouvelle tenue" name="newlook_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index b310574c4c0..eba399f6a31 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -2,7 +2,7 @@ <panel label="Choses" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Infos" name="info_btn"/> + <button label="Profil" name="info_btn"/> <button label="Porter" name="wear_btn"/> <button label="Jouer" name="play_btn"/> <button label="Téléporter" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml index b1df70148b6..31a0534b2dc 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="Propriétés des objets de l'inventaire"> +<panel name="item properties" title="Profil de l'objet"> <panel.string name="unknown"> (inconnu) </panel.string> @@ -15,6 +15,8 @@ <panel.string name="acquiredDate"> [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </panel.string> + <text name="title" value="Profil de l'objet"/> + <text name="where" value="(inventaire)"/> <panel label=""> <text name="LabelItemNameTitle"> Nom : @@ -28,53 +30,50 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="Profil..." name="BtnCreator"/> + <button label="Profil" name="BtnCreator"/> <text name="LabelOwnerTitle"> Propriétaire : </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="Profil..." name="BtnOwner"/> + <button label="Profil" name="BtnOwner"/> <text name="LabelAcquiredTitle"> Acquis : </text> <text name="LabelAcquiredDate"> Wed May 24 12:50:46 2006 </text> - <text name="OwnerLabel"> - Vous : - </text> - <check_box label="Éditer" name="CheckOwnerModify"/> - <check_box label="Copier" name="CheckOwnerCopy"/> - <check_box label="Revendre" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - N'importe qui : - </text> - <check_box label="Copier" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Groupe : - </text> - <check_box label="Partager" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Le prochain propriétaire : - </text> - <check_box label="Éditer" name="CheckNextOwnerModify"/> - <check_box label="Copier" name="CheckNextOwnerCopy"/> - <check_box label="Revendre" name="CheckNextOwnerTransfer"/> + <panel name="perms_inv"> + <text name="perm_modify"> + Vous pouvez : + </text> + <check_box label="Modifier" name="CheckOwnerModify"/> + <check_box label="Copier" name="CheckOwnerCopy"/> + <check_box label="Transférer" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + N'importe qui : + </text> + <check_box label="Copier" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Groupe : + </text> + <check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Transférer."/> + <text name="NextOwnerLabel"> + Le prochain propriétaire : + </text> + <check_box label="Modifier" name="CheckNextOwnerModify"/> + <check_box label="Copier" name="CheckNextOwnerCopy"/> + <check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> + </panel> <check_box label="À vendre" name="CheckPurchase"/> <combo_box name="combobox sale copy"> <combo_box.item label="Copier" name="Copy"/> <combo_box.item label="Original" name="Original"/> </combo_box> - <spinner label="Prix :" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <spinner label="Prix : L$" name="Edit Cost"/> </panel> <panel name="button_panel"> - <button label="Éditer" name="edit_btn"/> <button label="Annuler" name="cancel_btn"/> - <button label="Enregistrer" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml index de7751c4ffe..688bed8cbf4 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="Propriétés de l'objet"> +<panel name="object properties" title="Profil de l'objet"> <panel.string name="text deed continued"> Céder </panel.string> @@ -36,6 +36,8 @@ <panel.string name="Sale Mixed"> Vente mixte </panel.string> + <text name="title" value="Profil de l'objet"/> + <text name="where" value="(dans le monde virtuel)"/> <panel label=""> <text name="Name:"> Nom : @@ -43,11 +45,11 @@ <text name="Description:"> Description : </text> - <text name="Creator:"> + <text name="CreatorNameLabel"> Créateur : </text> <text name="Creator Name"> - Esbee Linden + Erica Linden </text> <text name="Owner:"> Propriétaire : @@ -55,13 +57,12 @@ <text name="Owner Name"> Erica Linden </text> - <text name="Group:"> + <text name="Group_label"> Groupe : </text> <button name="button set group" tool_tip="Choisissez un groupe pour partager les permissions de cet objet"/> <name_box initial_value="Chargement..." name="Group Name Proxy"/> <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les permissions au prochain propriétaire. Seul un officier peut céder les objets d'un groupe."/> - <check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Transférer."/> <text name="label click action"> Cliquer pour : </text> @@ -72,55 +73,56 @@ <combo_box.item label="Payer l'objet" name="Payobject"/> <combo_box.item label="Ouvrir" name="Open"/> </combo_box> - <check_box label="À vendre :" name="checkbox for sale"/> - <combo_box name="sale type"> - <combo_box.item label="Copier" name="Copy"/> - <combo_box.item label="Contenus" name="Contents"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Prix : L$" name="Edit Cost"/> - <check_box label="Afficher dans les résultats de recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/> - <panel name="perms_build"> + <panel name="perms_inv"> <text name="perm_modify"> Vous pouvez modifier cet objet </text> <text name="Anyone can:"> N'importe qui : </text> - <check_box label="Bouger" name="checkbox allow everyone move"/> <check_box label="Copier" name="checkbox allow everyone copy"/> - <text name="Next owner can:"> + <check_box label="Bouger" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + Groupe : + </text> + <check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Transférer."/> + <text name="NextOwnerLabel"> Le prochain propriétaire : </text> <check_box label="Modifier" name="checkbox next owner can modify"/> <check_box label="Copier" name="checkbox next owner can copy"/> <check_box label="Transférer" name="checkbox next owner can transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> - <text name="B:"> - B : - </text> - <text name="O:"> - O : - </text> - <text name="G:"> - G : - </text> - <text name="E:"> - E : - </text> - <text name="N:"> - N : - </text> - <text name="F:"> - F : - </text> </panel> + <check_box label="À vendre" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Contenus" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Prix : L$" name="Edit Cost"/> + <check_box label="Afficher dans les résultats de recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/> + <text name="B:"> + B : + </text> + <text name="O:"> + O : + </text> + <text name="G:"> + G : + </text> + <text name="E:"> + E : + </text> + <text name="N:"> + N : + </text> + <text name="F:"> + F : + </text> </panel> <panel name="button_panel"> - <button label="Éditer" name="edit_btn"/> <button label="Ouvrir" name="open_btn"/> <button label="Payer" name="pay_btn"/> <button label="Acheter" name="buy_btn"/> - <button label="Annuler" name="cancel_btn"/> - <button label="Enregistrer" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index b45a016822c..c6f73dde212 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -10,6 +10,9 @@ <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Grille de Second Life </string> @@ -49,6 +52,9 @@ <string name="LoginInitializingMultimedia"> Multimédia en cours d'initialisation… </string> + <string name="LoginInitializingFonts"> + Chargement des polices en cours... + </string> <string name="LoginVerifyingCache"> Fichiers du cache en cours de vérification (peut prendre 60-90 s)... </string> @@ -79,6 +85,9 @@ <string name="LoginDownloadingClothing"> Habits en cours de téléchargement... </string> + <string name="LoginFailedNoNetwork"> + Erreur réseau : impossible d'établir la connexion. Veuillez vérifier votre connexion réseau. + </string> <string name="Quit"> Quitter </string> @@ -174,7 +183,7 @@ Afficher la carte pour </string> <string name="BUTTON_CLOSE_DARWIN"> - Fermer (⌘W) + Fermer (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> Fermer (Ctrl+W) @@ -191,9 +200,6 @@ <string name="BUTTON_DOCK"> Attacher </string> - <string name="BUTTON_UNDOCK"> - Détacher - </string> <string name="BUTTON_HELP"> Afficher l'aide </string> @@ -626,11 +632,14 @@ <string name="ControlYourCamera"> Contrôler votre caméra </string> + <string name="NotConnected"> + Pas connecté(e) + </string> <string name="SIM_ACCESS_PG"> - PG + Général </string> <string name="SIM_ACCESS_MATURE"> - Mature + Modéré </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -818,6 +827,9 @@ <string name="InventoryNoMatchingItems"> Aucun objet correspondant dans l'inventaire. </string> + <string name="FavoritesNoMatchingItems"> + Faites glisser un repère ici pour l'ajouter à vos Favoris. + </string> <string name="InventoryNoTexture"> Vous n'avez pas de copie de cette texture dans votre inventaire </string> @@ -1288,6 +1300,156 @@ <string name="RegionInfoAllowedGroups"> Groupes autorisés : ([ALLOWEDGROUPS], max. [MAXACCESS]) </string> + <string name="ScriptLimitsParcelScriptMemory"> + Mémoire des scripts de parcelles + </string> + <string name="ScriptLimitsParcelsOwned"> + Parcelles répertoriées : [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + Mémoire utilisée : [COUNT] Ko sur [MAX] ; [AVAILABLE] Ko disponibles + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + Mémoire utilisée : [COUNT] Ko + </string> + <string name="ScriptLimitsParcelScriptURLs"> + URL des scripts de parcelles + </string> + <string name="ScriptLimitsURLsUsed"> + URL utilisées : [COUNT] sur [MAX] ; [AVAILABLE] disponible(s) + </string> + <string name="ScriptLimitsURLsUsedSimple"> + URL utilisées : [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + Une erreur est survenue pendant la requête d'informations. + </string> + <string name="ScriptLimitsRequestWrongRegion"> + Erreur : les informations de script ne sont disponibles que dans votre région actuelle. + </string> + <string name="ScriptLimitsRequestWaiting"> + Extraction des informations en cours... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + Vous n'avez pas le droit d'examiner cette parcelle. + </string> + <string name="SITTING_ON"> + Assis(e) dessus + </string> + <string name="ATTACH_CHEST"> + Poitrine + </string> + <string name="ATTACH_HEAD"> + Tête + </string> + <string name="ATTACH_LSHOULDER"> + Épaule gauche + </string> + <string name="ATTACH_RSHOULDER"> + Épaule droite + </string> + <string name="ATTACH_LHAND"> + Main gauche + </string> + <string name="ATTACH_RHAND"> + Main droite + </string> + <string name="ATTACH_LFOOT"> + Pied gauche + </string> + <string name="ATTACH_RFOOT"> + Pied droit + </string> + <string name="ATTACH_BACK"> + Précédent + </string> + <string name="ATTACH_PELVIS"> + Bassin + </string> + <string name="ATTACH_MOUTH"> + Bouche + </string> + <string name="ATTACH_CHIN"> + Menton + </string> + <string name="ATTACH_LEAR"> + Oreille gauche + </string> + <string name="ATTACH_REAR"> + Oreille droite + </string> + <string name="ATTACH_LEYE"> + Å’il gauche + </string> + <string name="ATTACH_REYE"> + Å’il droit + </string> + <string name="ATTACH_NOSE"> + Nez + </string> + <string name="ATTACH_RUARM"> + Bras droit + </string> + <string name="ATTACH_RLARM"> + Avant-bras droit + </string> + <string name="ATTACH_LUARM"> + Bras gauche + </string> + <string name="ATTACH_LLARM"> + Avant-bras gauche + </string> + <string name="ATTACH_RHIP"> + Hanche droite + </string> + <string name="ATTACH_RULEG"> + Cuisse droite + </string> + <string name="ATTACH_RLLEG"> + Jambe droite + </string> + <string name="ATTACH_LHIP"> + Hanche gauche + </string> + <string name="ATTACH_LULEG"> + Cuisse gauche + </string> + <string name="ATTACH_LLLEG"> + Jambe gauche + </string> + <string name="ATTACH_BELLY"> + Ventre + </string> + <string name="ATTACH_RPEC"> + Pectoral droit + </string> + <string name="ATTACH_LPEC"> + Pectoral gauche + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD centre 2 + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUD en haut à droite + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD en haut au centre + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD en haut à gauche + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD centre 1 + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD en bas à gauche + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD en bas + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD en bas à droite + </string> <string name="CursorPos"> Ligne [LINE], colonne [COLUMN] </string> @@ -1338,6 +1500,12 @@ <string name="ClassifiedUpdateAfterPublish"> (mise à jour après la publication) </string> + <string name="NoPicksClassifiedsText"> + Il n'y a pas de préférences/petites annonces ici + </string> + <string name="PicksClassifiedsLoadingText"> + Chargement... + </string> <string name="MultiPreviewTitle"> Prévisualiser </string> @@ -1414,23 +1582,35 @@ Extension de fichier inconnue .%s .wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés </string> + <string name="MuteObject2"> + Ignorer + </string> + <string name="MuteAvatar"> + Ignorer + </string> + <string name="UnmuteObject"> + Ne plus ignorer + </string> + <string name="UnmuteAvatar"> + Ne plus ignorer + </string> <string name="AddLandmarkNavBarMenu"> - Ajouter un repère... + Ajouter à mes repères... </string> <string name="EditLandmarkNavBarMenu"> - Modifier le repère... + Modifier mon repère... </string> <string name="accel-mac-control"> - ⌃ + ⌃ </string> <string name="accel-mac-command"> - ⌘ + ⌘ </string> <string name="accel-mac-option"> - ⌥ + ⌥ </string> <string name="accel-mac-shift"> - ⇧ + ⇧ </string> <string name="accel-win-control"> Ctrl+ @@ -1616,7 +1796,7 @@ Si le problème persiste, vous devrez peut-être complètement désinstaller pui Erreur fatale </string> <string name="MBRequiresAltiVec"> - [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure). + [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure). </string> <string name="MBAlreadyRunning"> [APP_NAME] est déjà en cours d'exécution. @@ -1628,7 +1808,7 @@ Si ce message persiste, redémarrez votre ordinateur. Voulez-vous envoyer un rapport de crash ? </string> <string name="MBAlert"> - Alerte + Notification </string> <string name="MBNoDirectX"> [APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure. @@ -2010,12 +2190,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Eyes Bugged"> Yeux globuleux </string> - <string name="Eyes Shear Left Up"> - Å’il gauche vers le haut - </string> - <string name="Eyes Shear Right Up"> - Å’il droit vers le haut - </string> <string name="Face Shear"> Visage </string> @@ -3010,7 +3184,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Ajouter à mes repères </string> <string name="LocationCtrlEditLandmarkTooltip"> - Modifier mes repères + Modifier mon repère </string> <string name="LocationCtrlInfoBtnTooltip"> En savoir plus sur l'emplacement actuel @@ -3018,6 +3192,27 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="LocationCtrlComboBtnTooltip"> Historique de mes emplacements </string> + <string name="LocationCtrlForSaleTooltip"> + Acheter ce terrain + </string> + <string name="LocationCtrlVoiceTooltip"> + Chat vocal indisponible ici + </string> + <string name="LocationCtrlFlyTooltip"> + Vol interdit + </string> + <string name="LocationCtrlPushTooltip"> + Pas de bousculades + </string> + <string name="LocationCtrlBuildTooltip"> + Construction/placement d'objets interdit + </string> + <string name="LocationCtrlScriptsTooltip"> + Scripts interdits + </string> + <string name="LocationCtrlDamageTooltip"> + Santé + </string> <string name="UpdaterWindowTitle"> [APP_NAME] - Mise à jour </string> @@ -3075,6 +3270,33 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="IM_moderator_label"> (Modérateur) </string> + <string name="started_call"> + A appelé quelqu'un + </string> + <string name="joined_call"> + A rejoint l'appel + </string> + <string name="ringing-im"> + En train de rejoindre l'appel... + </string> + <string name="connected-im"> + Connecté(e), cliquez sur Quitter l'appel pour raccrocher + </string> + <string name="hang_up-im"> + A quitté l'appel + </string> + <string name="answering-im"> + Connexion en cours... + </string> + <string name="conference-title"> + Conférence ad-hoc + </string> + <string name="inventory_item_offered-im"> + Objet de l'inventaire offert + </string> + <string name="share_alert"> + Faire glisser les objets de l'inventaire ici + </string> <string name="only_user_message"> Vous êtes le seul participant à cette session. </string> @@ -3084,6 +3306,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="invite_message"> Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME]. </string> + <string name="muted_message"> + Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré. + </string> + <string name="generic"> + Erreur lors de la requête, veuillez réessayer ultérieurement. + </string> <string name="generic_request_error"> Erreur lors de la requête, veuillez réessayer ultérieurement. </string> @@ -3102,19 +3330,37 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="not_a_mod_error"> Vous n'êtes pas modérateur de session. </string> + <string name="muted"> + Un modérateur de groupe a désactivé votre chat écrit. + </string> <string name="muted_error"> Un modérateur de groupe a désactivé votre chat écrit. </string> <string name="add_session_event"> Impossible d'ajouter des participants à la session de chat avec [RECIPIENT]. </string> + <string name="message"> + Impossible d'envoyer votre message à la session de chat avec [RECIPIENT]. + </string> <string name="message_session_event"> Impossible d'envoyer votre message à la session de chat avec [RECIPIENT]. </string> + <string name="mute"> + Erreur lors de la modération. + </string> + <string name="removed"> + Vous avez été supprimé du groupe. + </string> <string name="removed_from_group"> Vous avez été supprimé du groupe. </string> <string name="close_on_no_ability"> Vous ne pouvez plus participer à la session de chat. </string> + <string name="unread_chat_single"> + [SOURCES] a dit quelque chose de nouveau + </string> + <string name="unread_chat_multiple"> + [SOURCES] ont dit quelque chose de nouveau + </string> </strings> -- GitLab From e67bbf399ceec42b3f7788451c774cb8662ec4d4 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Fri, 29 Jan 2010 17:16:06 -0800 Subject: [PATCH 363/521] EXT-4756 Black text in sell land confirmation dialog, EXT-2241 layout of Preferences > Sound needs to be improved for I18N, EXT-4683 Build>Options submenus are non-intuitive, EXT-3787 System messages needs to be visually distinct in Nearby and IM --- indra/newview/skins/default/colors.xml | 26 +++++--- .../default/xui/en/floater_color_picker.xml | 61 ++++++++----------- .../skins/default/xui/en/menu_object.xml | 20 +++--- .../skins/default/xui/en/menu_viewer.xml | 61 +++++++------------ .../default/xui/en/panel_preferences_chat.xml | 38 +++++++----- .../xui/en/panel_preferences_sound.xml | 7 ++- 6 files changed, 102 insertions(+), 111 deletions(-) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index e2480479308..ec196245a1a 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -47,7 +47,7 @@ <color name="Black" value="0 0 0 1" /> - <color + <colork name="Black_10" value="0 0 0 0.1" /> <color @@ -77,6 +77,16 @@ <color name="Purple" value="1 0 1 1" /> + <color + name="Lime" + value=".8 1 .73 1" /> + <color + name="LtYellow" + value="1 1 .79 1" /> + <color + name="LtOrange" + value="1 .85 .73 1" /> + <!-- This color name makes potentially unused colors show up bright purple. Leave this here until all Unused? are removed below, otherwise the viewer generates many warnings on startup. --> @@ -97,7 +107,7 @@ value="1 0.82 0.46 1" /> <color name="AlertCautionTextColor" - reference="Black" /> + reference="LtYellow" /> <color name="AgentLinkColor" reference="White" /> @@ -226,10 +236,10 @@ reference="White" /> <color name="ColorPaletteEntry16" - reference="White" /> + reference="LtYellow" /> <color name="ColorPaletteEntry17" - reference="White" /> + reference="LtGreen" /> <color name="ColorPaletteEntry18" reference="LtGray" /> @@ -544,7 +554,7 @@ reference="White" /> <color name="ObjectChatColor" - reference="EmphasisColor" /> + reference="EmphasisColor_35" /> <color name="OverdrivenColor" reference="Red" /> @@ -592,7 +602,7 @@ value="0.39 0.39 0.39 1" /> <color name="ScriptErrorColor" - value="0.82 0.27 0.27 1" /> + value="Red" /> <color name="ScrollBGStripeColor" reference="Transparent" /> @@ -649,7 +659,7 @@ reference="FrogGreen" /> <color name="SystemChatColor" - reference="White" /> + reference="LtGray" /> <color name="TextBgFocusColor" reference="White" /> @@ -703,7 +713,7 @@ reference="White" /> <color name="llOwnerSayChatColor" - reference="LtGray" /> + reference="LtYellow" /> <!-- New Colors --> <color diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index fbecebc363d..9009c60a997 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -13,20 +13,19 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="r_val_text" - top="35" + top="25" width="413"> Red: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="128" layout="topleft" @@ -39,20 +38,18 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="g_val_text" - top="56" width="413"> Green: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="128" layout="topleft" @@ -65,20 +62,18 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="b_val_text" - top="77" width="413"> Blue: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="128" layout="topleft" @@ -91,20 +86,18 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="h_val_text" - top="108" width="413"> Hue: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="180" layout="topleft" @@ -117,20 +110,18 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="s_val_text" - top="129" width="413"> Sat: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="50" layout="topleft" @@ -143,20 +134,18 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="10" + height="20" layout="topleft" - left="12" + left="10" mouse_opaque="false" name="l_val_text" - top="150" width="413"> Lum: </text> <spinner decimal_digits="0" follows="left" - height="16" + height="20" increment="1" initial_value="50" layout="topleft" @@ -170,11 +159,11 @@ height="20" label="Apply now" layout="topleft" - left="12" + left="10" name="apply_immediate" top_pad="185" width="100" /> - <button + <button follows="left|bottom" height="28" image_selected="eye_button_active.tga" @@ -185,7 +174,7 @@ width="28" /> <button follows="right|bottom" - height="20" + height="23" label="OK" label_selected="OK" layout="topleft" @@ -195,7 +184,7 @@ width="100" /> <button follows="right|bottom" - height="20" + height="23" label="Cancel" label_selected="Cancel" layout="topleft" @@ -209,7 +198,7 @@ follows="left|top" height="16" layout="topleft" - left="12" + left="10" name="Current color:" top="172" width="110"> @@ -221,7 +210,7 @@ follows="left|top" height="16" layout="topleft" - left="12" + left="10" name="(Drag below to save.)" top_pad="66" width="130"> diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 35518cd13b9..56028bb2e57 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -86,16 +86,6 @@ <context_menu label="Remove >" name="Remove"> - <menu_item_call - enabled="false" - label="Take" - name="Pie Object Take"> - <menu_item_call.on_click - function="Tools.BuyOrTake" /> - <menu_item_call.on_enable - function="Tools.EnableBuyOrTake" - parameter="Buy,Take" /> - </menu_item_call> <menu_item_call enabled="false" label="Report Abuse" @@ -134,6 +124,16 @@ </menu_item_call> </context_menu> <menu_item_separator layout="topleft" /> + <menu_item_call + enabled="false" + label="Take" + name="Pie Object Take"> + <menu_item_call.on_click + function="Tools.BuyOrTake" /> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake" + parameter="Buy,Take" /> + </menu_item_call> <menu_item_call enabled="false" label="Take Copy" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index a98a049c178..7a4f63bfe48 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -662,6 +662,18 @@ <menu_item_call.on_enable function="Tools.EnableUnlink" /> </menu_item_call> + <menu_item_check + label="Edit Linked Parts" + layout="topleft" + name="Edit Linked Parts"> + <menu_item_check.on_check + control="EditLinkedParts" /> + <menu_item_check.on_click + function="Tools.EditLinkedParts" + parameter="EditLinkedParts" /> + <menu_item_check.on_enable + function="Tools.EnableToolNotPie" /> + </menu_item_check> <menu_item_separator layout="topleft" /> <menu_item_call @@ -799,18 +811,6 @@ layout="topleft" name="Options" tear_off="true"> - <menu_item_check - label="Edit Linked Parts" - layout="topleft" - name="Edit Linked Parts"> - <menu_item_check.on_check - control="EditLinkedParts" /> - <menu_item_check.on_click - function="Tools.EditLinkedParts" - parameter="EditLinkedParts" /> - <menu_item_check.on_enable - function="Tools.EnableToolNotPie" /> - </menu_item_check> <menu_item_call label="Set Default Upload Permissions" layout="topleft" @@ -819,10 +819,10 @@ function="Floater.Toggle" parameter="perm_prefs" /> </menu_item_call> - <menu_item_check - label="Show Advanced Permissions" - layout="topleft" - name="DebugPermissions"> + <menu_item_check + label="Show Advanced Permissions" + layout="topleft" + name="DebugPermissions"> <menu_item_check.on_check function="CheckControl" parameter="DebugPermissions" /> @@ -832,13 +832,7 @@ </menu_item_check> <menu_item_separator layout="topleft" /> - <menu - create_jump_keys="true" - label="Selection" - layout="topleft" - name="Selection" - tear_off="true"> - <menu_item_check + <menu_item_check label="Select Only My Objects" layout="topleft" name="Select Only My Objects"> @@ -866,14 +860,9 @@ control="RectangleSelectInclusive" /> <menu_item_check.on_click function="Tools.SelectBySurrounding" /> - </menu_item_check> - </menu> - <menu - create_jump_keys="true" - label="Show" - layout="topleft" - name="Show" - tear_off="true"> + </menu_item_check> + <menu_item_separator + layout="topleft" /> <menu_item_check label="Show Hidden Selection" layout="topleft" @@ -902,13 +891,8 @@ function="ToggleControl" parameter="ShowSelectionBeam" /> </menu_item_check> - </menu> - <menu - create_jump_keys="true" - label="Grid" - layout="topleft" - name="Grid" - tear_off="true"> + <menu_item_separator + layout="topleft" /> <menu_item_check label="Snap to Grid" layout="topleft" @@ -953,7 +937,6 @@ <menu_item_call.on_enable function="Tools.EnableToolNotPie" /> </menu_item_call> - </menu> </menu> <menu create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index 6e0b94ac2bf..433dfc17fe5 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -23,7 +23,7 @@ layout="topleft" left="0" name="radio" - value="0" + value="0" top="10" width="125" /> <radio_item @@ -32,7 +32,7 @@ layout="topleft" left_delta="145" name="radio2" - value="1" + value="1" top_delta="0" width="125" /> <radio_item @@ -41,7 +41,7 @@ layout="topleft" left_delta="170" name="radio3" - value="2" + value="2" top_delta="0" width="125" /> </radio_group> @@ -105,7 +105,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.6 0.6 1 1" + color="LtGray" follows="left|top" height="47" label_width="60" @@ -136,7 +136,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.8 1 1 1" + color="LtGray" follows="left|top" height="47" label_width="44" @@ -167,7 +167,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.82 0.82 0.99 1" + color="Red" follows="left|top" height="47" layout="topleft" @@ -197,7 +197,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.7 0.9 0.7 1" + color="EmphasisColor_35" follows="left|top" height="47" layout="topleft" @@ -227,7 +227,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.7 0.9 0.7 1" + color="LtYellow" follows="left|top" height="47" layout="topleft" @@ -257,7 +257,7 @@ </text> <color_swatch can_apply_immediately="true" - color="0.6 0.6 1 1" + color="EmphasisColor" follows="left|top" height="47" layout="topleft" @@ -316,22 +316,30 @@ <text left="30" height="20" - width="300" + width="120" top_pad="20"> - Show IMs in: (Requires restart) + Show IMs in: </text> + <text + left_pad="6" + height="20" + width="100" + text_color="White_25" + > + (requires restart) + </text> <radio_group height="30" layout="topleft" - left_delta="30" + left="30" control_name="ChatWindow" name="chat_window" top_pad="0" - tool_tip="Show your Instant Messages in separate windows, or in one window with many tabs (Requires restart)" + tool_tip="Show your Instant Messages in separate floaters, or in one floater with many tabs (Requires restart)" width="331"> <radio_item height="16" - label="Multiple windows" + label="Separate windows" layout="topleft" left="0" name="radio" @@ -340,7 +348,7 @@ width="150" /> <radio_item height="16" - label="One window" + label="Tabs" layout="topleft" left_delta="0" name="radio2" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index d8e3f4ccfb4..c01a0322096 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -236,9 +236,10 @@ disabled_control="CmdLineDisableVoice" label="Enable voice" layout="topleft" - left="28" + font.style="BOLD" + left="101" name="enable_voice_check" - top_pad="5" + top_pad="13" width="110" > </check_box> @@ -365,7 +366,7 @@ name="device_settings_panel" class="panel_voice_device_settings" width="501" - top="285"> + top="280"> <panel.string name="default_text"> Default -- GitLab From 0bbb95c84be891f95be1c4c1ce7ea5aa14bed815 Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Fri, 29 Jan 2010 17:46:35 -0800 Subject: [PATCH 364/521] DEV-43688 Cycle3 JA (correct version) --- .../default/xui/ja/floater_buy_currency.xml | 388 +++--------------- 1 file changed, 65 insertions(+), 323 deletions(-) diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index d202bf1b9f1..ffdcf838d3f 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -1,324 +1,66 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<floater - legacy_header_height="18" - can_minimize="false" - height="275" - layout="topleft" - title="BUY L$" - name="buy currency" - help_topic="buy_linden_dollars" - single_instance="true" - width="350"> - <floater.string - name="buy_currency"> - Buy L$ [LINDENS] for approx. [LOCALAMOUNT] - </floater.string> - <icon - height="215" - image_name="Linden_Dollar_Background" - layout="topleft" - left="0" - name="normal_background" - top="17" - width="350" /> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifHuge" - layout="topleft" - left="20" - height="30" - top="25" - width="300" - name="info_need_more"> - You need more L$ - </text> - <text - type="string" - length="1" - follows="top|left" - height="16" - layout="topleft" - top="246" - left="15" - width="300" - name="contacting"> - Contacting LindeX... - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifHuge" - layout="topleft" - left="20" - height="30" - top="25" - width="200" - name="info_buying"> - Buy L$ - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifMedium" - height="16" - layout="topleft" - left="20" - name="balance_label" - top="65" - width="210"> - I have - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - follows="top|left" - halign="right" - height="16" - layout="topleft" - left="200" - name="balance_amount" - top_delta="0" - width="120"> - L$ [AMT] - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifMedium" - height="16" - top="95" - layout="topleft" - left="20" - name="currency_action" - width="210"> - I want to buy - </text> - <text - font="SansSerifMedium" - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - top_delta="0" - left="217" - name="currency_label" - width="15"> - L$ - </text> - <line_editor - type="string" - halign="right" - font="SansSerifMedium" - select_on_focus="true" - follows="top|left" - top_delta="-7" - height="22" - label="L$" - left_pad="3" - name="currency_amt" - width="85"> - 1234 - </line_editor> - <text - type="string" - font="SansSerifMedium" - length="1" - follows="top|left" - height="16" - layout="topleft" - left="20" - top="125" - name="buying_label" - width="210"> - For the price - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - text_color="EmphasisColor" - follows="top|left" - halign="right" - height="16" - top_delta="0" - layout="topleft" - left="150" - name="currency_est" - width="170"> - approx. [LOCALAMOUNT] - </text> - <text - type="string" - font="SansSerifSmall" - text_color="EmphasisColor" - length="1" - follows="top|left" - height="16" - layout="topleft" - top="125" - left="170" - width="150" - halign="right" - name="getting_data"> - Estimating... - </text> - <text - type="string" - font="SansSerifSmall" - top="145" - length="1" - follows="top|left" - height="16" - halign="right" - left="150" - width="170" - layout="topleft" - name="buy_action"> - [NAME] L$ [PRICE] - </text> - <text - type="string" - font="SansSerifMedium" - length="1" - follows="top|left" - height="16" - layout="topleft" - left="20" - name="total_label" - top="165" - width="210"> - My new balance will be - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - follows="top|left" - top_delta="0" - height="16" - layout="topleft" - left="200" - halign="right" - name="total_amount" - width="120"> - L$ [AMT] - </text> - <text - type="string" - length="1" - text_color="0.7 0.7 0.7 0.5" - follows="top|left" - layout="topleft" - halign="right" - top="189" - left="20" - width="300" - height="30" - name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] - </text> - <text - type="string" - length="1" - text_color="0.7 0.7 0.7 0.5" - follows="top|left" - layout="topleft" - halign="right" - top="202" - left="20" - width="300" - height="30" - name="exchange_rate_note"> -Re-enter amount to see the latest exchange rate. - </text> - <text - type="string" - length="1" - text_color="0.7 0.7 0.7 0.5" - follows="top|left" - layout="topleft" - halign="right" - top="213" - left="10" - width="310" - height="30" - name="purchase_warning_repurchase"> - Confirming this purchase only buys L$, not the object. - </text> - <text - type="string" - length="1" - text_color="0.7 0.7 0.7 0.5" - follows="top|left" - layout="topleft" - halign="right" - top="213" - left="20" - width="300" - height="30" - name="purchase_warning_notenough"> - You aren't buying enough L$. Please increase the amount. - </text> - - <button - follows="bottom|left" - height="20" - label="Buy Now" - layout="topleft" - left="151" - name="buy_btn" - top="242" - width="90"/> - <button - follows="bottom|right" - height="20" - label="Cancel" - layout="topleft" - left_pad="10" - name="cancel_btn" - width="90"/> - <icon - height="215" - image_name="Linden_Dollar_Alert" - layout="topleft" - left="0" - name="error_background" - top="15" - width="350"/> - <text - type="string" - font="SansSerifHuge" - left="165" - width="170" - height="25" - top="25" - name="info_cannot_buy"> - Unable to Buy - </text> - <text - type="string" - width="175" - height="125" - top="60" - left="165" - word_wrap="true" - follows="bottom|right" - name="cannot_buy_message"> - </text> - <button - follows="bottom|left" - height="20" - label="Continue to the Web" - layout="topleft" - left="170" - name="error_web" - top="200" - width="160"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy currency" title="L$ ã®è³¼å…¥"> + <floater.string name="buy_currency"> + ç´„ [LOCALAMOUNT] ã§ L$ [LINDENS] を購入 + </floater.string> + <text name="info_need_more"> + L$ ãŒè¶³ã‚Šã¾ã›ã‚“ + </text> + <text name="contacting"> + LindeXã¨ã‚³ãƒ³ã‚¿ã‚¯ãƒˆä¸â€¦ + </text> + <text name="info_buying"> + L$ ã®è³¼å…¥ + </text> + <text name="balance_label"> + 残高 + </text> + <text name="balance_amount"> + L$ [AMT] + </text> + <text name="currency_action"> + è³¼å…¥å¸Œæœ›é¡ + </text> + <text name="currency_label"> + L$ + </text> + <line_editor label="L$" name="currency_amt"> + 1234 + </line_editor> + <text name="buying_label"> + ä¾¡æ ¼ + </text> + <text name="currency_est"> + ç´„ [LOCALAMOUNT] + </text> + <text left_delta="3" name="getting_data"> + 見ç©ã‚‚りä¸... + </text> + <text name="buy_action"> + [NAME] L$ [PRICE] + </text> + <text name="total_label"> + æ–°ã—ã„æ®‹é«˜ + </text> + <text name="total_amount"> + L$ [AMT] + </text> + <text name="currency_links"> + [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate] + </text> + <text name="exchange_rate_note"> + 金é¡ã‚’å†å…¥åŠ›ã—ã¦æœ€æ–°æ›ç®—レートを確èªã—ã¾ã™ã€‚ + </text> + <text name="purchase_warning_repurchase"> + ã“ã®å–引を決定ã™ã‚‹ã¨ã€L$ を購入ã—ã¾ã™ã€‚オブジェクトã¯è³¼å…¥ã—ã¾ã›ã‚“。 + </text> + <text name="purchase_warning_notenough"> + 購入ã—よã†ã¨ã—ã¦ã„ã‚‹ L$ ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚ 金é¡ã‚’上ã’ã¦ãã ã•ã„。 + </text> + <button label="購入ã™ã‚‹" name="buy_btn"/> + <button label="å–り消ã—" name="cancel_btn"/> + <text name="info_cannot_buy"> + 購入ã§ãã¾ã›ã‚“ + </text> + <button label="Web サイトã«ç§»å‹•" name="error_web" width="140"/> </floater> -- GitLab From 690061c86c8944f7bda5faed9e86cddbb1cf3e62 Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Fri, 29 Jan 2010 18:40:49 -0800 Subject: [PATCH 365/521] DEV-45525 GUI Previewer is broken for launching an Editor path --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index f3bda19ed1f..2a7c3b0f745 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10686,7 +10686,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <real>150000.0</real> + <string /> </map> <key>YawFromMousePosition</key> <map> -- GitLab From 77db05a93e0bf446c790ff5c1dd17ced607f170d Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Fri, 29 Jan 2010 19:27:13 -0800 Subject: [PATCH 366/521] DEV-43688 commit 3 missing FR translations - FR cycle3 --- indra/newview/skins/default/xui/fr/floater_buy_currency.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml index 1f29025a249..5ea36d85059 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml @@ -46,7 +46,7 @@ [AMT] L$ </text> <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] + [http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR mode de paiement] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR devise] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR taux de change] </text> <text name="exchange_rate_note"> Saisissez à nouveau le montant pour voir le taux de change actuel. -- GitLab From 7408a22fd89c116bae79b87b21cff04c453bdd89 Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Fri, 29 Jan 2010 19:48:04 -0800 Subject: [PATCH 367/521] Add translate="false" to all the dummy strings in the /en folder. These constantly pollute the localization extraction of real strings. --- .../skins/default/xui/en/accordion_drag.xml | 2 +- .../skins/default/xui/en/accordion_parent.xml | 1 + .../skins/default/xui/en/floater_aaa.xml | 3 ++- .../default/xui/en/floater_report_abuse.xml | 3 +++ .../default/xui/en/floater_test_button.xml | 1 + .../default/xui/en/floater_test_checkbox.xml | 1 + .../default/xui/en/floater_test_combobox.xml | 1 + .../default/xui/en/floater_test_inspectors.xml | 1 + .../default/xui/en/floater_test_layout.xml | 1 + .../xui/en/floater_test_line_editor.xml | 1 + .../default/xui/en/floater_test_list_view.xml | 1 + .../xui/en/floater_test_navigation_bar.xml | 1 + .../default/xui/en/floater_test_radiogroup.xml | 1 + .../default/xui/en/floater_test_slider.xml | 1 + .../default/xui/en/floater_test_spinner.xml | 1 + .../xui/en/floater_test_text_editor.xml | 1 + .../default/xui/en/floater_test_textbox.xml | 1 + .../default/xui/en/floater_test_widgets.xml | 1 + .../default/xui/en/floater_ui_preview.xml | 1 + .../skins/default/xui/en/menu_login.xml | 4 ++++ .../skins/default/xui/en/panel_group_roles.xml | 18 +++++++++--------- .../skins/default/xui/en/panel_login.xml | 4 ++-- .../skins/default/xui/en/panel_my_profile.xml | 8 +++++++- .../default/xui/en/panel_notification.xml | 1 + .../xui/en/panel_notifications_channel.xml | 1 + .../skins/default/xui/en/panel_profile.xml | 6 ++++++ .../default/xui/en/panel_sys_well_item.xml | 1 + .../skins/default/xui/en/panel_toast.xml | 3 ++- 28 files changed, 55 insertions(+), 15 deletions(-) diff --git a/indra/newview/skins/default/xui/en/accordion_drag.xml b/indra/newview/skins/default/xui/en/accordion_drag.xml index 94839a75939..e8a705e7449 100644 --- a/indra/newview/skins/default/xui/en/accordion_drag.xml +++ b/indra/newview/skins/default/xui/en/accordion_drag.xml @@ -4,5 +4,5 @@ height="5" left="50" top="50" - follows="left|bottom|right" background_visible="true" label="splitter_drag" title=""> + follows="left|bottom|right" background_visible="true" label="splitter_drag" title="" translate="false"> </panel> diff --git a/indra/newview/skins/default/xui/en/accordion_parent.xml b/indra/newview/skins/default/xui/en/accordion_parent.xml index ea34bac0a77..e17a0dd351d 100644 --- a/indra/newview/skins/default/xui/en/accordion_parent.xml +++ b/indra/newview/skins/default/xui/en/accordion_parent.xml @@ -3,5 +3,6 @@ background_visible="true" label="splitter_parent" title="" + translate="false" > </panel> diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index b4d2dabc5c8..7236351f2e0 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -17,7 +17,7 @@ save_visibility="true" single_instance="true" width="320"> - <string name="nudge_parabuild">Nudge 1</string> + <string name="nudge_parabuild" translate="false">Nudge 1</string> <string name="test_the_vlt">This string CHANGE2 is extracted.</string> <string name="testing_eli">Just a test. change here. more change.</string> <chat_history @@ -35,6 +35,7 @@ parse_highlights="true" text_color="ChatHistoryTextColor" text_readonly_color="ChatHistoryTextColor" + translate="false" width="320"> Really long line that is long enough to wrap once with jyg descenders. Really long line that is long enough to wrap once with jyg descenders. 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 aa219b96152..ac0fca9cce9 100644 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -52,6 +52,7 @@ left_pad="5" name="reporter_field" top_delta="0" + translate="false" use_ellipses="true" width="200"> Loremipsum Dolorsitamut Longnamez @@ -153,6 +154,7 @@ left_pad="6" name="object_name" top_delta="0" + translate="false" use_ellipses="true" width="185"> Consetetur Sadipscing @@ -180,6 +182,7 @@ left_pad="6" name="owner_name" top_delta="0" + translate="false" use_ellipses="true" width="185"> Hendrerit Vulputate Kamawashi Longname diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml index 8c6ad5c0f7f..bf0a774e766 100644 --- a/indra/newview/skins/default/xui/en/floater_test_button.xml +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_button" help_topic="floater_test_button" + translate="false" width="500"> <button height="23" diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml index 042b4226c34..c828f6b284f 100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_checkbox" help_topic="floater_test_checkbox" + translate="false" width="400"> <check_box control_name="ShowStartLocation" diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml index 317d8f5ba86..45e2e34da76 100644 --- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_combobox" help_topic="floater_test_combobox" + translate="false" width="400"> <text type="string" diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml index 9143048aeb8..0f5c5f2be07 100644 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml @@ -7,6 +7,7 @@ name="floater_test_inspectors" help_topic="floater_test_inspectors" title="TEST INSPECTORS" + translate="false" width="400"> <text height="20" diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml index c6acb7c96e5..94f7e0b7980 100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_layout" help_topic="floater_test_layout" + translate="false" width="500"> <text type="string" diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml index fe6ec91709d..2894ad2a325 100644 --- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_line_editor" help_topic="floater_test_line_editor" + translate="false" width="400"> <line_editor height="20" diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml index 247c705687d..32ccc31dfd4 100644 --- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml +++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_list_view" help_topic="floater_test_list_view" + translate="false" width="400"> <!-- intentionally empty --> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml index c6b4cca6b9f..f4a50ecc962 100644 --- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_navigation_bar" help_topic="floater_test_navigation_bar" + translate="false" width="900"> <panel name="navigation_bar" diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml index 7ef2d97cdc9..db14ecae831 100644 --- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_radiogroup" help_topic="floater_test_radiogroup" + translate="false" width="400"> <radio_group height="54" diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml index 85d8bb2bb1b..20bd555a032 100644 --- a/indra/newview/skins/default/xui/en/floater_test_slider.xml +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_slider" help_topic="floater_test_slider" + translate="false" width="450"> <slider height="20" diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml index 3c44a4884d8..acd49aa492e 100644 --- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_spinner" help_topic="floater_test_spinner" + translate="false" width="450"> <spinner height="32" diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml index 8be0c28c5c5..dc8f00d5f36 100644 --- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml @@ -5,6 +5,7 @@ height="600" layout="topleft" name="floater_test_text_editor" + translate="false" width="800"> <text_editor height="50" diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml index 8fc2677cbee..2df9bb35fe8 100644 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -6,6 +6,7 @@ layout="topleft" name="floater_test_textbox" help_topic="floater_test_textbox" + translate="false" width="800"> <text type="string" diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 2f88c234cce..447bd7f599b 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -25,6 +25,7 @@ layout="topleft" name="floater_test_widgets" help_topic="floater_test_widgets" + translate="false" width="850"> <!-- Strings are used by C++ code for localization. They are not visible diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml index 8b2136c2dc4..e86cb23c1eb 100644 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -10,6 +10,7 @@ help_topic="gui_preview_tool" single_instance="true" title="XUI PREVIEW TOOL" + translate="false" width="750"> <panel bottom="640" diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 5f385227581..bbe6892b278 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -196,6 +196,7 @@ <menu_item_call label="Textbox" name="Textbox" + translate="false" shortcut="control|1"> <menu_item_call.on_click function="Floater.Show" @@ -204,6 +205,7 @@ <menu_item_call label="Text Editor" name="Text Editor" + translate="false" shortcut="control|2"> <menu_item_call.on_click function="Floater.Show" @@ -212,6 +214,7 @@ <menu_item_call label="Widgets" name="Widgets" + translate="false" shortcut="control|shift|T"> <menu_item_call.on_click function="Floater.Show" @@ -219,6 +222,7 @@ </menu_item_call> <menu_item_call label="Inspectors" + translate="false" name="Inspectors"> <menu_item_call.on_click function="Floater.Show" diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 618d2f3b8e8..5f6b670cd27 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -50,15 +50,15 @@ Select multiple Members by holding the Ctrl key and clicking on their names. </panel.string> <panel.string - name="power_folder_icon"> + name="power_folder_icon" translate="false"> Inv_FolderClosed </panel.string> <panel.string - name="power_all_have_icon"> + name="power_all_have_icon" translate="false"> Checkbox_On </panel.string> <panel.string - name="power_partial_icon"> + name="power_partial_icon" translate="false"> Checkbox_Off </panel.string> <filter_editor @@ -142,15 +142,15 @@ including the Everyone and Owner Roles. The 'Everyone' and 'Owners' Roles are special and can't be deleted. </panel.string> <panel.string - name="power_folder_icon"> + name="power_folder_icon" translate="false"> Inv_FolderClosed </panel.string> <panel.string - name="power_all_have_icon"> + name="power_all_have_icon" translate="false"> Checkbox_On </panel.string> <panel.string - name="power_partial_icon"> + name="power_partial_icon" translate="false"> Checkbox_Off </panel.string> <filter_editor @@ -223,15 +223,15 @@ including the Everyone and Owner Roles. things in this group. There's a broad variety of Abilities. </panel.string> <panel.string - name="power_folder_icon"> + name="power_folder_icon" translate="false"> Inv_FolderClosed </panel.string> <panel.string - name="power_all_have_icon"> + name="power_all_have_icon" translate="false"> Checkbox_On </panel.string> <panel.string - name="power_partial_icon"> + name="power_partial_icon" translate="false"> Checkbox_Off </panel.string> <filter_editor diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index df942b1a267..4657d39a0f1 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -12,10 +12,10 @@ top="600" http://join.secondlife.com/ </panel.string> <panel.string - name="real_url"> + name="real_url" translate="false"> http://secondlife.com/app/login/ </panel.string> - <string name="reg_in_client_url"> + <string name="reg_in_client_url" translate="false"> http://secondlife.eniac15.lindenlab.com/reg-in-client/ </string> <panel.string diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index 4894ae01da5..4164ce73dd5 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -119,6 +119,7 @@ textbox.max_length="512" name="sl_description_edit" top_pad="-3" + translate="false" width="181" expanded_bg_visible="true" expanded_bg_color="DkGray"> @@ -172,6 +173,7 @@ textbox.max_length="512" name="fl_description_edit" top_pad="-3" + translate="false" width="181" expanded_bg_visible="true" expanded_bg_color="DkGray"> @@ -187,6 +189,7 @@ left="10" name="homepage_edit" top_pad="0" + translate="false" value="http://librarianavengers.org" width="300" word_wrap="false" @@ -209,6 +212,7 @@ layout="topleft" left="10" name="register_date" + translate="false" value="05/31/2376" width="300" word_wrap="true" /> @@ -241,6 +245,7 @@ left="10" name="acc_status_text" top_pad="0" + translate="false" width="300" word_wrap="true"> Resident. No payment info on file. @@ -294,7 +299,8 @@ layout="topleft" left="7" name="sl_groups" - top_pad="0" + top_pad="0" + translate="false" width="298" expanded_bg_visible="true" expanded_bg_color="DkGray"> diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index df37f9973ce..145a24b6427 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -11,6 +11,7 @@ name="notification_panel" top="0" height="140" + translate="false" width="305"> <!-- THIS PANEL CONTROLS TOAST HEIGHT? --> <panel diff --git a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml index 7b6c0f33da8..16593751f78 100644 --- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml @@ -3,6 +3,7 @@ height="100" layout="topleft" name="notifications_panel" + translate="false" width="100"> <layout_stack follows="left|right|top|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 7c584ba2c87..1f0ace58430 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -109,6 +109,7 @@ textbox.max_length="512" name="sl_description_edit" top_pad="-3" + translate="false" width="180" expanded_bg_visible="true" expanded_bg_color="DkGray"> @@ -152,6 +153,7 @@ textbox.max_length="512" name="fl_description_edit" top_pad="-3" + translate="false" width="180" expanded_bg_visible="true" expanded_bg_color="DkGray"> @@ -167,6 +169,7 @@ left="10" name="homepage_edit" top_pad="0" + translate="false" value="http://librarianavengers.org" width="300" word_wrap="false" @@ -189,6 +192,7 @@ layout="topleft" left="10" name="register_date" + translate="false" value="05/31/2376" width="300" word_wrap="true" /> @@ -221,6 +225,7 @@ left="10" name="acc_status_text" top_pad="0" + translate="false" width="300" word_wrap="true"> Resident. No payment info on file. @@ -275,6 +280,7 @@ left="7" name="sl_groups" top_pad="0" + translate="false" width="290" expanded_bg_visible="true" expanded_bg_color="DkGray"> diff --git a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml index 2822f7b841b..5e74689c5a2 100644 --- a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- All our XML is utf-8 encoded. --> <panel + translate="false" name="sys_well_item" title="sys_well_item" visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index d198237e5d5..bfe3cce7d0a 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -40,8 +40,9 @@ word_wrap="true" text_color="white" top="5" + translate="false" v_pad="5" - use_ellipses="true" + use_ellipses="true" width="260"> Toast text; </text> -- GitLab From 9fd539f4db5857bb12cd2da06816a1fec9b585bf Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 13:09:00 -0500 Subject: [PATCH 368/521] Replaced maturity icons new versions. http://jira.secondlife.com/browse/EXT-4709 --- .../default/textures/icons/Parcel_M_Dark.png | Bin 333 -> 348 bytes .../default/textures/icons/Parcel_M_Light.png | Bin 322 -> 335 bytes .../default/textures/icons/Parcel_PG_Dark.png | Bin 407 -> 400 bytes .../default/textures/icons/Parcel_PG_Light.png | Bin 387 -> 403 bytes .../default/textures/icons/Parcel_R_Dark.png | Bin 319 -> 357 bytes .../default/textures/icons/Parcel_R_Light.png | Bin 309 -> 355 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png index 2f5871b8ffcf846835da70f7576aaf8e3ae24300..60e6a00a25ca1ec5f73554bdb04b7b4c105b5f6e 100644 GIT binary patch delta 284 zcmV+%0ptG70^9<SNq_!HL_t(|+G70w|33pY01JqC_39NrklFym4kYS70K@@eVqzbe zpaSF=!T{9+(#ybvBtR~3KsE>tu3fv%;2#joP+3)jBL3~$H?TMeV*^aMtN|JL`t=() z|J127c%6mQAZI5>hW-2Z!}*skT>^`dY>=Lw9>bx-N5E{5%YXLn+Yc5a*&s7B6NZl; zKQWv>bC%)M>C-^IDTA1pDE@SW4RCRBF*rKfGhDuWnc?>BI}Gk_Zsdg#2w0e#1H<Vc z!;>dZ!7e12vT*?|Elmb~em({xBSWwY@c~9qUIS(kiZUE9i!d@F<r#9p0pu_WAk(k| iP`wbZQ3C)37!?2vM^I<XyjDX10000<MNUMnLSTX)?RgIX delta 269 zcmV+o0rLLb0?h)DNq_H2L_t(|+N_f?4ul{OMMtuYHd|Qg8T1Nx0}D%!sL9?yN^Naz zwKdts)@5eJAX!XgeF;K7%+Cxs-ny=E2M_!RA)a!2$-yti3psMm`I~KmiwSHo7z<1j zT;Y3ZI@2^kRaFp%A(Ul#*sJRr#&LwAC?JZW!yYq@mSurq7=NH`TbSp0*Kyr64ej9> z6K2adj$;Z`pfPGTtVUUuQLv)xI?^s1B}qba-}ietO0)h)zwmt@(ln*4f*_zZYL_!o z<zYr>c2?GDMhHH!x?uCUO+4&1*&=^6oNN(~X+7hL(C;XBG!t9wx3oL>2rvL}?OCr8 TPYHtn0000<MFvhpu0mjfvXFJa diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png index 724ac22744cc07f744f3960cd2f254aa478be626..55f97f3b4e7a473a1ae0be2bf7c78b3f01f77d60 100644 GIT binary patch delta 271 zcmV+q0r3990?z`FNq_N4L_t(|+N@JC3WGop9L3HeR<<I3Ks&V(MX=Kc`iQh5f;MU? z;uq{qVQua%A_k(wO9mEh=h(T~<yKgh1^<9Rg@Pcsk@KB|cd@=CkrYMo5Lbdn1Zxeg zg}5Vl;q8SsxULIg6=|Bj@rt4_p2jDLN6+ZG4o%axJPgBATYrZ_ZQCM_<1IH$lW~`Y zx~_xcIP6TF*|yEN%R+gcLzZPkQ3T)jF$@F7aXb`~jxMHYLen&`EDMHVAj>ko8BtVK z#oAL<l{q|vbaq+SHRgFn-}lVnH!Jef!jZovh`XKPMY*3*!YNj+wXfFxfu{fi0257A V_vX_G4FCWD00>D%PDHLkV1mvbeaQd- delta 257 zcmV+c0sj8a0>T22Nq^)?L_t(|+N@JC4udcZG!+X|#mdMCBRqf)An^+R!%r&lfeef= zhLMq#c4AC(DTzuYPy?KFU>x~$cCaIapex|wk*4Wgz8;d9Wj&KD+O~bUOX7LZNVe2E zH@XP!Zz9igN|J=8X`-sCR%c~dQV;~xbsg1py*k@;<oiB_VR~r3ApmY+Q)r%N<xB%H za@In9-%}jN<awTA6h$g$ErdB}ClG;H(=`7NTVotY8iv8NgcuiK?MS=A(DhC2VONNA zu3UhK_uydH<cgeHIJqL`&t@ld*mrBiK{2+}ep<T%Zvh4XWPMjf&maHV00000NkvXX Hu0mjf9=UVO diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png index f0565f02ddebbe0b5a734cea38baa8e99f6c02e5..11ab1f1e60856a2c6a6eeaf986ffc824d38e1852 100644 GIT binary patch delta 336 zcmV-W0k8g-1CRrdNq;g)L_t(|+G70w|33pY03*ntLr;G31KAsZ*nvd-2Y@)hPKNCx z6I6g4Ll~fXKzbRNkOVNmk8fWY9^AOX@ZrrXLWVK0;F8_Db}7TImGc-hO{^K-ym$f@ ziz%pOkdRZvsvfIB=ML{>IJ$j3Lt)PxxW+AuW-u(7(9BTMH-C?KgHG<=!r&4TgJQdl zR}h1cm;~6n99-NOdYG^o^x(!N1}Oy<jBtX95$z&m05agfrd43}^)p8qGMgqcC}`*q z=OR!5KYMTo%m#Tcp{$7^BBva$g;)*Jv$SW}vt|jyi%0k2Vtdvs#%mB(uNm1oGyM4a znW4WV1s?q(5=k;ZFX<7?BL8tENRX>Qv4kuAfB-OyFtQ-!8I05oG5}k^V##mtFbaSP ikdtZQUZVy82rvNii*mA{HM;Zw0000<MNUMnLSTYp@0Ef8 delta 343 zcmV-d0jU0v1D6AkNq;#>L_t(|+N@J8kApxE9WFJf6G*UFEJ(0mnqc`g`~wmc77NKK zY*&H=iv<bk8IT-r4@i5Z$@SwU%dqUs+j%pLFijJ^0|z`9W1qA6nwR-tJe$|iG|lhB z^5OhsBIXh+d^{T2w(WgsKoA5}*Y$RwC<<AYMY^ujIF6L2DSwq^$-l$TFbr~Cmqby# zCIW2R<_oB*ilQhYRaGg=GHRNJeBbARAjZWY_dJjL-<76m8n+<G^Ze>|SnQGAjWnR| z`%T{IblL&|WVZTrUB};LS>7iC$?AmL9LJ$y80fDLGK4&28;0R65emE3=n}}RC<=bQ zF6`qt-hBSmeo%BTNs>)AEE=%een^odX_p9D;tatcfiH@UI<62fYx9V_G;s5XY=1U; pfrnkz==dZVTVj8uy#qf23;=fji}7UOCOQBB002ovPDHLkV1g8@pkDw0 diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png index f32b0570a128d57ed726c96e8665691cb1130c95..b536762ddc467659f54fd6f79a01c27fb1ff2bde 100644 GIT binary patch delta 339 zcmV-Z0j&Om1Cs-gNq;p-L_t(|+G70w|33pY01Jq)>O9B~q&5Jt1Bv<%0CB*va{G@= zPyuobVSwrZ>1AL-62Jgl94rjRih>N{f}Dg5gLn-a$Z=F+h%%F9IQQs1gCsx1po)#x z7;ZoRj600bL4c7IgP*=6L;Rw1aE(=-Y78CzS`5K6P7-fWpnskO!;({vQEZ=k;xWUM zk3YcP{r2Mzh8`wt2C0hkGF*ik0t+V@0S>qr(Jn#;(!hXDw2%d}jpPIwa#vkqID7v+ zaV`P{u(l*Gm<{q?&hkqPW$UluwGgX8dv3mAhyli!D%3C#C;-MH!IX^-Hk^CLzy}PQ zg>gpk=zsq4J50mvmt=&|qGOL3)&LFE1iI=IFqUrP320=44q!{&plHSxuvqdNJd6Th l0_0>`5QC9g#Rx!v0RXQ$X);p;&w2m=002ovPDHLkV1m<rk&plY delta 323 zcmV-J0lfZ`1A_yQNq;3tL_t(|+N@Kdj)XuAEf*4kx<!H^!61;}K<o!VvY*8NU@pNT zRv<xQ`33G2lAYI30>>r0$I_(C3^VWbwKLVGX`(Ys$0v%SPc?igzy1?{SAJ`n=0~4@ zd><5Yow3>non)ej@;u*cjN?dc+fr3kWSS<$aZF(t@_ZNus(<U6_jg3FzVE5)I-Wa@ zLrIb_C<p?wZJU8ud!9#Gmhm|u+YsT9Y+!@}-}f0<6vYxm&LF^_M3!YSSQNnw!&ubH z8TdM_9T6hKrADX&YT~*suVF}6f~{-2Awrb0EH{xLA3%&q4f}A^Xica;yH<b!NYj*4 zf-<DNCV{>5jyzCksKpb265QZ#<r;cTwa8lyr&{E^mn}q>xdG`w(_WU;&aj670|1j5 Vf69sfb&~)9002ovPDHLkV1h^`lpFv6 diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png index e0e6e14ccab60fd3ad9f27a410639dbf19002538..bf618752f635930d85d66f5debbc403e32e47d66 100644 GIT binary patch delta 294 zcmV+>0one)0_6gbNPhtbNkl<Zc-mt8|NlP&H2@2Uc(;8AKako0#116tKLEr5LY^KU znV<sX7{UP61JcXDgd{*Na6mQ)C&-vKgTcGGmEqgZpLo^bHR$21R}7EezGaXV7G~IY z=`#5S?Y?l4!BtO}!N=5uVaw?=<QW9=%D&5281$8t7%bG)z<(~g_V_XB2A#Zho8jZP zZw%rB{0y%?egu2(*!3Hv8+7FAHL&KjM~{Os9~URsg}4Hp1)JcTPoEf0+`i2)Ej^V% zUQ7(`)zGdUuuC0vb%=A(9$+AYTmv%%1i0AQ!2!Sh>{+ZXVg%(iU>2b$!vV7hBNI}d sAr~A#_F4d$h94b(>V<fX8UP@`053LVoh$Vvi2wiq07*qoM6N<$f}zibhyVZp delta 255 zcmV<b0095x0>1)~NPhs~Nkl<Zc-pK}I}U>|3^f%CQzcfiva)8)5s=^v+=nx;GV};u zSy{8fh}2GuG)@UZBBJ5*Bqx@Y_vB~A-ZV{c2YfmZ@u{wt3UQE+DpDcD$Da%DlZ}X( z>pkEm__m^y63VjN)Z;jYq9`B;0yiOpJkKGDBAxer4|QEb+jzFXIp4h9wMHV;1%)Ax z<LGY9plKRylR%x2r6fs?3w2!w!!Rs4W6V0Azd~7-X<Meds;ac0sX5PRjW7&%XXGqo zY|*T2@Mzc6id<SawIa*U#tS;Qww9h0!<qZDb_c!!3;+lBOcW;^;8g$s002ovPDHLk FV1ktubawy% diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png index efca6776da7533cadab65e3e7959d8af55155a4f..a67bbd0cc578bb9522d3eff0a1050472296a0315 100644 GIT binary patch delta 292 zcmV+<0o(qy0^<UZNPhtZNkl<Zc-mt8|NlP&H2@>Xpj!?${6O{wAa)>8{{bKlP&;ts zBNJ4B977nOdO&&^n2-d>1rEpt;RFgR*D?T|&cMVYfL9$}gV@w{8Q8?d8GgNd$-o;F zOuj*U0saghj~r!qzjYgfptl!!27$c7Z)?Nw?d(~GuX}cbU4O=5W<|O|+^%j6%se~{ zzn?x~V3CmldymJ_38z6UxFmS(9l)A}qGG`OzhAz9UHERQ0K>m8ABZ!EMM{o=$3Tza zL3$>`ubY?QURBw$1?<w#>sJxyHNL<guxnt3fB?u9pnw<f@y44)D9UiabjHYplxN5V q2avrMK&D{_pdET4UZVy82rvMu`B;#j8CKx{0000<MNUMnLSTYnfP#7e delta 245 zcmV<R01E%(0<{8=NPhs=Nkl<Zc-pK}Ar6Ev5L_+@+*MXqA}e?R64@v4Jmg8_J)okp z5{c|N9M^4FatRG7TqjxDY}m=nrc<oz3OP{Xr)ip}KVH7ti}P<^N^AWow}!hZq}^tV z2V_DSYYHKt@B2f4nkE>A0hVP+BO;9B2=hFLJLep_u7kR+!EP9H`1jNrlAsDK8m_7; z-5Nnk8Ehg@30kt&UME63jIsTW3S;|8+7a3!bxNr~NWJ78{lYnSx}#(wvW2^fp}?&9 vi2M~eACY`7n~2yJK)4ZFwp+`AuK)u8SgumEL^2J`00000NkvXXu0mjf2}f)X -- GitLab From e7d22ddc8150f2a7b5a564d6464b2a27e07943be Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 13:54:39 -0500 Subject: [PATCH 369/521] Added "refresh" button to clear map. http://jira.secondlife.com/browse/EXT-4342 --- .../default/xui/en/floater_world_map.xml | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml index 65c9c2a8fa9..e1df50bf58c 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -403,7 +403,7 @@ height="16" image_name="map_track_16.tga" layout="topleft" - left="5" + left="3" top="11" mouse_opaque="true" name="friends_icon" @@ -415,7 +415,7 @@ label="Online Friends" layout="topleft" top_delta="-4" - left_pad="5" + left_pad="7" max_chars="60" name="friend combo" tool_tip="Show friends on map" @@ -433,7 +433,7 @@ height="16" image_name="map_track_16.tga" layout="topleft" - left="5" + left="3" top_pad="8" mouse_opaque="true" name="landmark_icon" @@ -445,7 +445,7 @@ label="My Landmarks" layout="topleft" top_delta="-3" - left_pad="5" + left_pad="7" max_chars="64" name="landmark combo" tool_tip="Landmark to show on map" @@ -463,7 +463,7 @@ height="16" image_name="map_track_16.tga" layout="topleft" - left="5" + left="3" top_pad="7" mouse_opaque="true" name="region_icon" @@ -476,7 +476,7 @@ label="Regions by Name" layout="topleft" top_delta="-2" - left_pad="5" + left_pad="7" name="location" select_on_focus="true" tool_tip="Type the name of a region" @@ -497,6 +497,19 @@ <button.commit_callback function="WMap.Location" /> </button> + <button + image_overlay="Refresh_Off" + follows="top|right" + height="23" + layout="topleft" + left="0" + name="Clear" + tool_tip="Clear tracking lines and reset map" + top_pad="5" + width="23"> + <button.commit_callback + function="WMap.Clear" /> + </button> <scroll_list draw_stripes="false" bg_writeable_color="MouseGray" @@ -505,7 +518,7 @@ layout="topleft" left="28" name="search_results" - top_pad="5" + top_pad="-23" width="209" sort_column="1"> <scroll_list.columns @@ -545,19 +558,6 @@ <button.commit_callback function="WMap.CopySLURL" /> </button> - <!-- <button - follows="right|bottom" - height="23" - label="Clear" - layout="topleft" - left="10" - name="Clear" - tool_tip="Stop tracking" - top_pad="5" - width="105"> - <button.commit_callback - function="WMap.Clear" /> - </button>--> <button enabled="false" follows="right|bottom" -- GitLab From 5815bcc162a4acc26185a228c4e28cb77e361d44 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 14:27:56 -0500 Subject: [PATCH 370/521] Swapped the login button and destination dropdown locations. http://jira.secondlife.com/browse/EXT-3751 --- .../skins/default/xui/en/panel_login.xml | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index df942b1a267..901cfaa365f 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -122,11 +122,23 @@ label="Remember" top_pad="3" name="remember_check" width="135" /> +<button + follows="left|bottom" + height="23" + image_unselected="PushButton_On" + image_selected="PushButton_On_Selected" + label="Log In" + label_color="White" + layout="topleft" + left_pad="10" + name="connect_btn" + top="35" + width="90" /> <text follows="left|bottom" font="SansSerifSmall" height="15" - left_pad="8" + left_pad="18" name="start_location_text" top="20" width="130"> @@ -163,18 +175,6 @@ top_pad="2" name="server_combo" width="135" visible="false" /> -<button - follows="left|bottom" - height="23" - image_unselected="PushButton_On" - image_selected="PushButton_On_Selected" - label="Log In" - label_color="White" - layout="topleft" - left_pad="15" - name="connect_btn" - top="35" - width="90" /> </layout_panel> <layout_panel follows="right|bottom" -- GitLab From 62f8cc21f6c2f6a488e6f74f2663b2e5c6acdf6f Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 16:55:12 -0500 Subject: [PATCH 371/521] Edited graphics to better indicate "flying". http://jira.secondlife.com/browse/EXT-4411 --- .../textures/bottomtray/Move_Fly_Off.png | Bin 393 -> 3347 bytes .../textures/icons/Parcel_FlyNo_Dark.png | Bin 424 -> 3221 bytes .../textures/icons/Parcel_FlyNo_Light.png | Bin 429 -> 3235 bytes .../default/textures/icons/Parcel_Fly_Dark.png | Bin 271 -> 3077 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png index 28ff6ba976932568651a72e2f3ae89408d0c9ccc..9e7291d6fbf131ec27337bd13434c37ba4af2128 100644 GIT binary patch delta 3345 zcmV+s4es)Z1Ctt%BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@ zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX< z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~ zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4 z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_ zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83 z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~ zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn= z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7 zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~ z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_> zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^ ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0 z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k( zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n* zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J= z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;* zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83 zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9! zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL# z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+ z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0007ZNkl<ZIDZk9 zlg*3LK^Vv9SH3K5zO1jCL3pshT#`c34ofQrVW&a}qmyi4UW5qNvz{~|4?%@wRDZyx zhlrL$>4m~5JBVO=SWVM>`I#Zb?r(MNJ5jO_mJWQFXP$ZHJM+vlL&#)p24Tk>4u>|G zOp<Q5OZxpj84icPh{a-)sR)HaZGSu-zh1A`uWW5?iT((r(`jNdnI;pVQ97N@%5mIN z2;2mMa=A=gF4ssvtyYihe;O8x<pKm=gB738H;QE#hPd5slFepEzOe>^_XYxi6^Oi9 zTU+y}RI1|$R@m+KnM5K%dc7Xm-rgp>u?oK@ATW;;&7)`A?Y3-nb@eLCvVZGlv-y!i zp~&<3{QpT10V4Fs|5B&Zd5m2jrc$ZP5PT1EzyV0J*(A%$%VWh3Vdk9Q@4ta6J;Q=m z;5qKXTd7p;*J?F->H1(WNCX19ANeaaC45JnPUq=RC}c#n4q*HPa6llJ%TJX`r5e&H z*laegSS-rnXRTH%VPMcE0)INA(YO?iMi&tz!I*9}07F18Vh*e$P4(vHW;>I~e9q-^ zMX^}?0#D%s6*?l3NKS^sVVlR}(GCWKkNJFl19xKrGE_~0m@>GFbSfC@V4nd}a1d2{ zD-wx<Jg?V#J`#zXot>TiQYaLjRI61EUtmt7(NGckHR$`l2fov%fPelSNP<Nmg~)#N zEoNtD=NewB1i61j6DgI-!wU-wI;m9p5&^fs1{l}&VS?TvVent%jYi|5OeWJC42Bap z$tU=4gAACs@mj4GixZR}vV>K4z=Mfb?+Rp40fOI6%T7!DZP(mXCWA^$wP0NEo^cb? b`hNn$_7uUtb7K_%015yANkvXXu0mjfJ+5?; delta 367 zcmV-#0g(Qa8i@mtBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zD@jB_RCwBA{Qv(y12q5>1GNAJF5&`WdmxqqnL)0LSl!*-J@4JSmwNc{VPkS##Hy;Q z>izur^VLAT`+?XRYzC<YX=`gcAsG@6a|{bq-U{SbVhmcfYJZidgoK31%a<>Y0O<oT zaYm47@7}%Z6%rCMBGy$PLx2YU1hMn-@)iTlcnEgUojZ5Va&T}wN7taJsA$8>%gc{0 z{_x?$>$$nPsUWtwx%oYi5ZIsx4;}~t4H8AyASWk>HCCTKeaZ)8o0*xtg?kMMnt|Ac zSg)Nrb?U~aPiUV`xwyDIV`OC9Nph?K)pGy+`*#i~#x`!;*a;MphbJLYqaWF@Ns}hk zz*06@Sp;O*zkmO>fDGHSXHNjx20;x|2I9>?><%)6anKbbR5J)5zyM{yytH1Pv2XwY N002ovPDHLkV1m)MrHB9k diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png index 0455a52fdc8bdeed55430f60db0329acece8fe62..e0b18b2451ed930f309c1f14019e2b8d70a09291 100644 GIT binary patch delta 3218 zcmV;D3~lqM1C<$&BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@ zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX< z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~ zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4 z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_ zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83 z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~ zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn= z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7 zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~ z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_> zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^ ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0 z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k( zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n* zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J= z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;* zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83 zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9! zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL# z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+ z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0005_Nkl<ZIDZkH zls`yYQ542s8m$EjQ7DE6#plpP9V{poTj5Q*3L@eb2OS)$i&F(xMUa3Fr3HP9R7FJB ziX@7ECMB+w79}F2MU4m+Bocq$>kCLQ=G6~=Il1?q^SzUM?~5-QjT#>GjGRt5gm`Yg zWm&mXh6=o>j-+wu^OCF_ug0z9)_=gMioD3Hv58p*mZ1m=%8PL^F13(?-_Q*0@Tj~z z{RIw9kbnXB2-=cAun!NaP{;46(zU68J?Mg0PzL%1d6lo@AQfW}zE`QP*I^6P{V&L? zhm1$b9)aAodgflkE}WMnPF5=?r}v9fm;Pireal=dm^j=ZI`Z9nLAsflfPX4T!b>QH ztaKxOKu=(EyE-_xVEC{9X4kUO#=KVp?XgaL6Xrqs21}5w(wnARpf@iP*xnrueYG9a zba~m$X@Bn`^Br&m;bhgDL84>4LTrRJn1i37#1hagcnjY_N`^kqwEX*O#EULc&qH5k zujz7?In_u*`p`apf)8*8ZGZ3{W<Uv7kgEoF!XidMT^iZ~VvMl`j<HTzw_pl(K!pd8 zPe<;8>6&Tim=jG6B<-;d$`3j`b^Dkp%SKEe$fm=9dssH(FqmM2;mc(77w~_=P%n)I zDTssVqHzNcJ66X}Q3pj4x6mS*umYA$iBIcTg@tqnEl!Cl6>i?B01E&B07*qoM6N<$ Eg3M+$c>n+a delta 399 zcmV;A0dW468K?u0BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zN=ZaPRCwC7lrc`jKoCX8fGB9<E}}qjL!Tq;5pn~Z6W}9o14v6_Q>35^Cx}6!4;4Z* zj;JDmWEv>VpXjf(SXePmJkr-_z4G(;&+K|dQAiiDCmqEaoPVb2rK*dH11JJK-ZeOc z7McM+-v!vS%>%Hf2^#7Lj4?M`g9#l$88n0Ze=s5xF{wU0U``0mp)2U(4?sq_k<&t{ z1N)UMHQ>}Pj-FrS_&S!u_YboYF}l}(d%dq(F<=Ar<%mAlM(^QK`qNw4|N5?OC4i4x zHE(rtI&dt>SbvaD3)f={_{2SV7Mg6Bh=_SXPzcZ+dsOb1C(nV7H%x)G$*}1m{vrna ziNytO^K>z502RlEK>Y+%2)CTy2c&5LaK=j23Iq73R!pzU26}C-O@QXKB6qwFxE=z$ tY<q2vI0e@0fG1Y}VA;xwrtu@d00@kYi;psQA^-pY00>D%PDHLkV1lett_=VH diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png index be0c379d844826f4002e972497c991e22e2acc00..101aaa42b1edfcb79bbc766e7db3b22696d0c218 100644 GIT binary patch delta 3232 zcmV;R3}5rD1EU#`BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@ zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX< z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~ zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4 z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_ zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83 z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~ zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn= z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7 zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~ z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_> zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^ ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0 z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k( zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n* zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J= z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;* zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83 zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9! zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL# z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+ z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_00068Nkl<ZIDZkX z(@#hgVI0Qs8I=@Q$_P>rWiHX7i?IYjht_|1h(ZwY5W=P)^anCYqK-jykic6<=Mdsa z1R=zr5>YfZ+R#D}Nv)s=V%yL$)1AK0HUn<%Ze#So$M=0_-uLH^nOQR&4jTbez`kpk z^JE;0#bOz2Z4R1KZ0tu}kOTWEe1DRH2k_;87B(r?02fbDg1iaZaWPenBY`4Zz&YfM zHU-H+HdWvSZlVqEu!ec;Nsx|Db7~w%v5a~gMj1XLYw~qm$%*@j?mBsv`54swTYN>< zm^r@Vd+ff2!mOtZW4dO0XQy@j$G67KpD))<vn1rY;}!3hCjI??7QV=h2Y=AZdV^Yo z;Ae!%a)Yzg*Ztiw%Jhw7#-{isUGkst3FfnSglXKt6dWjVG^4dA=?wQKe-}*@m>YM? zOJ5CziU+y3g6QY!W7iqeg=-kqiM~x0e1d93q0X;BKaL3)P0m(_MiMVixusW=n;&j0 zE_AYPNnbUL9*us-mzmqp4}YNxxA7QNc!=H6<5428kEBxP>2i=q@S62=SV({DYnl)p z&`X=~=GvGoE8ay*&y%8B>JezP^hfbK{={6LPCL#ZS5a=IyV7V=?2z}eY}Qd&uwj_4 zyZ6=VM!rz+8TTVdAP&o;buIsF)$f?~zS6?(0q;bF(ZVPqD$4k89U1H3-|`FN`HLE$ S)6Z@I0000<MNUMnLSTYfUr?6- delta 404 zcmV;F0c-xF8Lb15BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zPf0{URCwC7ltD_vP!NVE#idYpT}iWXDRhwo1bTtoz}Jmi(;Ik%_5_V5P*2dh&!Vo~ zSX{Yl5iArj{v-cLjA@A>85kaUknjET&%EblSte~nM_P(+aDNa4x0-Dzenv)s&zb^z z<}sjiEFm&U({$9N#}RUgbU5Uy5yb%Y6-e+ka_|pEj0&g4%_FW8DwYG_1+#2l_JJ+d zRb`&<K4iRkm)>U<y`G+_s73GP>7i&vS4$#T6`ve}4!1kGeA~+L-@BCnJ}OQ{mu0C9 z4!+%#L7}eC@qe^2brhm@`YI6cX{Q7l?}J*ixGo8D0Nv+$6z9h+Av7uLa3QR*A^&rz zVg~pl#rgT>X-N}6#})c!Hu&l%phCD9^q0p~1Aq%ERVzZkH>#Lk|1{96^K1fS*MFV! y+UNHG;8opcGvXAO*9yI31*=+CRE;kI1^{MhiFxmFkqwIg0000<MNUMnLSTY5a<<|C diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png index ed4a512e04a419639f9695670697bca7dee85bb1..c27f18e3c745b985d3024548b5c7073b9fca28bb 100644 GIT binary patch delta 3072 zcmV+b4FB_w0)-fmBYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@ zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX< z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~ zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4 z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_ zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83 z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~ zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn= z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7 zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~ z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_> zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^ ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0 z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k( zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n* zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J= z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;* zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83 zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9! zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL# z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+ z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0004KNkl<ZIDZkf z)W1staTv#O&3-`*1yM^vt<}&_6jX2!)E^)cfq_9S4bk4vTC@ZWH8r#p5z*8Va!}${ z)LP(T1R6om;38b_4=Lz*r(fv$z)LxOp69;jeb2CM+aZIrP!q!|p4|18Ww}2Jslg<p z6zyT%q*yhkgXgFn#=DwKVmf$;VSf&;(2Axp8QjK{5qzP5DJ-I4OwQiPgh}MEflcTq z`M@JQ(`?1lbZOi4;{kE>p$EDG-}tR~fR0@xt2(vn6w=V@v+#}Aig&1fL(<hX#&H5s zbYTrj`|n%rYxRnk_-Y?&%%d9`P>FWL3zo3}^{(I;XQ+u*tUG>(^YS+;x_Lyge5@x; zyFgFg0W?ex$_;ukfx76d*BHbtbc0G*MF+GCj!=oNMDB5ld8AMm4c^8qKA}sT!3nnT zjYjbtss;^CL%ZM*8I0o@e~Jd{(jw5!yFefbJC6PWf{)ie4&*HVHuwiwnm%1oVBF~d O0000<MNUMnLSTZIfB4P- delta 244 zcmV<Q01N+x7>@#wBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy zu}MThRCwBA{Qv(y11$g(1C0RK-~$H^^n)-hT&w`Z1wg~+Q`_JKAie;ifrjT(!(c{O z<N*!j2T?$50J6Zr!C@iA215-E0OAKgya9*>NHC)S=!l8vf^95NdI8kn4?sKth#RmN z@BoUD!3Ss%GT<^;0F7qAVekPg;veuCoB+ij%>_6Nc7S4R24AFG<RRxgn4t?OH54W1 uAsL!T?VPuPT85&8@z5&WhLpho0R{jo?n8D5`;B4%0000<MNUMnLSTZ|AzuOj -- GitLab From fb531ffd6bea24290362fd58dd6ff6e99f8b1177 Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Sat, 30 Jan 2010 14:25:23 -0800 Subject: [PATCH 372/521] DEV-43688 Cycle3 JA, FR, DE (minor spacing corrections) --- indra/newview/skins/default/xui/de/strings.xml | 4 ++-- indra/newview/skins/default/xui/fr/strings.xml | 4 ++-- indra/newview/skins/default/xui/ja/strings.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 8fd1c59ca0b..858bbf27b11 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1486,8 +1486,8 @@ <string name="covenant_last_modified"> Zuletzt geändert: </string> - <string name="none_text" value=" (keiner)"/> - <string name="never_text" value=" (nie)"/> + <string name="none_text" value=" (keiner) "/> + <string name="never_text" value=" (nie) "/> <string name="GroupOwned"> In Gruppenbesitz </string> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index c6f73dde212..1888dc1827b 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1486,8 +1486,8 @@ <string name="covenant_last_modified"> Dernière modification : </string> - <string name="none_text" value=" (aucun)"/> - <string name="never_text" value=" (jamais)"/> + <string name="none_text" value=" (aucun) "/> + <string name="never_text" value=" (jamais) "/> <string name="GroupOwned"> Propriété du groupe </string> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index d2a1977fc97..288ad4bc1d0 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1486,8 +1486,8 @@ <string name="covenant_last_modified"> æœ€çµ‚ä¿®æ£æ—¥ï¼š </string> - <string name="none_text" value=" (ãªã—)"/> - <string name="never_text" value=" (無)"/> + <string name="none_text" value=" (ãªã—) "/> + <string name="never_text" value=" (無) "/> <string name="GroupOwned"> グループ所有 </string> -- GitLab From 2ae22a481d45e8c6634cc250386ca4cf488e635c Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Sat, 30 Jan 2010 14:37:21 -0800 Subject: [PATCH 373/521] DEV-43688 resident translations for DA (set4-set5), resident translations for PL (set1 thru set4), resident translations for IT (set1 thru set6) (I can promise this is the last weekend I work for LL. Peace Love & Hope 2010.) --- .../skins/default/xui/da/floater_activeim.xml | 2 + .../skins/default/xui/da/floater_auction.xml | 14 +- .../default/xui/da/floater_avatar_picker.xml | 44 +- .../default/xui/da/floater_bulk_perms.xml | 64 +- .../skins/default/xui/da/floater_bumps.xml | 29 +- .../default/xui/da/floater_buy_object.xml | 8 +- .../skins/default/xui/da/floater_camera.xml | 19 +- .../default/xui/da/floater_color_picker.xml | 12 +- .../skins/default/xui/da/floater_gesture.xml | 37 +- .../skins/default/xui/da/floater_hud.xml | 4 +- .../default/xui/da/floater_im_session.xml | 9 + .../default/xui/da/floater_land_holdings.xml | 4 +- .../default/xui/da/floater_live_lsleditor.xml | 21 +- .../default/xui/da/floater_mem_leaking.xml | 16 +- .../skins/default/xui/da/floater_moveview.xml | 45 +- .../default/xui/da/floater_my_friends.xml | 6 +- .../default/xui/da/floater_perm_prefs.xml | 2 +- .../skins/default/xui/da/floater_postcard.xml | 12 +- .../default/xui/da/floater_preferences.xml | 19 +- .../xui/da/floater_preview_animation.xml | 11 +- .../xui/da/floater_preview_classified.xml | 8 +- .../default/xui/da/floater_preview_sound.xml | 11 +- .../default/xui/da/floater_region_info.xml | 4 +- .../default/xui/da/floater_script_queue.xml | 21 +- .../skins/default/xui/da/floater_search.xml | 16 + .../default/xui/da/floater_select_key.xml | 6 +- .../default/xui/da/floater_sound_preview.xml | 6 +- .../default/xui/da/floater_texture_ctrl.xml | 22 +- .../skins/default/xui/da/floater_tools.xml | 585 ++-- .../default/xui/da/floater_voice_controls.xml | 25 + .../default/xui/da/floater_world_map.xml | 120 +- .../skins/default/xui/da/inspect_avatar.xml | 21 + .../skins/default/xui/da/inspect_group.xml | 22 + .../default/xui/da/inspect_remote_object.xml | 13 + .../default/xui/da/menu_attachment_other.xml | 17 + .../default/xui/da/menu_attachment_self.xml | 12 + .../skins/default/xui/da/menu_avatar_icon.xml | 7 + .../default/xui/da/menu_avatar_other.xml | 16 + .../skins/default/xui/da/menu_avatar_self.xml | 27 + .../skins/default/xui/da/menu_bottomtray.xml | 12 + .../skins/default/xui/da/menu_favorites.xml | 10 + .../default/xui/da/menu_gesture_gear.xml | 10 + .../skins/default/xui/da/menu_group_plus.xml | 5 + .../skins/default/xui/da/menu_hide_navbar.xml | 5 + .../default/xui/da/menu_imchiclet_adhoc.xml | 4 + .../default/xui/da/menu_imchiclet_group.xml | 6 + .../default/xui/da/menu_imchiclet_p2p.xml | 7 + .../xui/da/menu_inspect_avatar_gear.xml | 17 + .../xui/da/menu_inspect_object_gear.xml | 17 + .../default/xui/da/menu_inspect_self_gear.xml | 8 + .../xui/da/menu_inventory_gear_default.xml | 14 + .../skins/default/xui/da/menu_land.xml | 9 + .../skins/default/xui/da/menu_landmark.xml | 7 + .../skins/default/xui/da/menu_login.xml | 33 +- .../skins/default/xui/da/menu_mini_map.xml | 3 +- .../skins/default/xui/da/menu_navbar.xml | 11 + .../skins/default/xui/da/menu_nearby_chat.xml | 9 + .../skins/default/xui/da/menu_object.xml | 24 + .../skins/default/xui/da/menu_object_icon.xml | 5 + .../default/xui/da/menu_participant_list.xml | 16 + .../xui/da/menu_people_friends_view_sort.xml | 7 + .../xui/da/menu_people_groups_view_sort.xml | 5 + .../default/xui/da/menu_people_nearby.xml | 10 + .../xui/da/menu_people_nearby_multiselect.xml | 8 + .../xui/da/menu_people_nearby_view_sort.xml | 8 + .../xui/da/menu_people_recent_view_sort.xml | 7 + .../skins/default/xui/da/menu_picks_plus.xml | 5 + .../skins/default/xui/da/menu_place.xml | 7 + .../default/xui/da/menu_place_add_button.xml | 5 + .../xui/da/menu_places_gear_folder.xml | 15 + .../default/xui/da/menu_profile_overflow.xml | 5 + .../skins/default/xui/da/menu_slurl.xml | 8 +- .../xui/da/menu_teleport_history_gear.xml | 6 + .../xui/da/menu_teleport_history_item.xml | 6 + .../xui/da/menu_teleport_history_tab.xml | 5 + .../skins/default/xui/da/menu_text_editor.xml | 8 + .../skins/default/xui/da/menu_url_agent.xml | 6 + .../skins/default/xui/da/menu_url_group.xml | 6 + .../skins/default/xui/da/menu_url_http.xml | 7 + .../default/xui/da/menu_url_inventory.xml | 6 + .../skins/default/xui/da/menu_url_map.xml | 6 + .../default/xui/da/menu_url_objectim.xml | 8 + .../skins/default/xui/da/menu_url_parcel.xml | 6 + .../skins/default/xui/da/menu_url_slapp.xml | 5 + .../skins/default/xui/da/menu_url_slurl.xml | 7 + .../default/xui/da/menu_url_teleport.xml | 6 + .../skins/default/xui/da/menu_viewer.xml | 493 +-- .../skins/default/xui/da/mime_types_mac.xml | 217 ++ .../skins/default/xui/da/notifications.xml | 990 +++--- .../default/xui/da/panel_avatar_list_item.xml | 25 + .../default/xui/da/panel_classified_info.xml | 22 + .../default/xui/da/panel_edit_classified.xml | 33 + .../skins/default/xui/da/panel_edit_hair.xml | 12 + .../default/xui/da/panel_edit_profile.xml | 91 +- .../skins/default/xui/da/panel_edit_shape.xml | 23 + .../skins/default/xui/da/panel_edit_shirt.xml | 10 + .../skins/default/xui/da/panel_edit_skirt.xml | 10 + .../default/xui/da/panel_edit_tattoo.xml | 8 + .../default/xui/da/panel_group_list_item.xml | 4 + .../default/xui/da/panel_group_notify.xml | 8 + .../default/xui/da/panel_group_roles.xml | 14 +- .../default/xui/da/panel_im_control_panel.xml | 13 + .../default/xui/da/panel_landmark_info.xml | 37 + .../skins/default/xui/da/panel_landmarks.xml | 14 + .../skins/default/xui/da/panel_login.xml | 54 +- .../da/panel_media_settings_permissions.xml | 20 + .../default/xui/da/panel_navigation_bar.xml | 15 + .../skins/default/xui/da/panel_notes.xml | 23 + .../xui/da/panel_outfits_inventory.xml | 7 + .../panel_outfits_inventory_gear_default.xml | 9 + .../skins/default/xui/da/panel_people.xml | 53 + .../skins/default/xui/da/panel_picks.xml | 20 + .../skins/default/xui/da/panel_places.xml | 14 + .../xui/da/panel_preferences_privacy.xml | 49 +- .../xui/da/panel_preferences_setup.xml | 58 +- .../skins/default/xui/da/panel_profile.xml | 37 + .../default/xui/da/panel_region_covenant.xml | 6 +- .../default/xui/da/panel_region_debug.xml | 51 +- .../default/xui/da/panel_region_texture.xml | 24 +- .../skins/default/xui/da/panel_script_ed.xml | 43 + .../skins/default/xui/da/panel_side_tray.xml | 26 + .../xui/da/panel_stand_stop_flying.xml | 6 + .../default/xui/da/panel_teleport_history.xml | 14 + .../default/xui/da/sidepanel_item_info.xml | 70 + .../default/xui/da/sidepanel_task_info.xml | 119 + .../newview/skins/default/xui/da/strings.xml | 2 +- .../skins/default/xui/it/floater_about.xml | 69 +- .../default/xui/it/floater_about_land.xml | 476 ++- .../skins/default/xui/it/floater_activeim.xml | 2 + .../xui/it/floater_animation_preview.xml | 216 +- .../skins/default/xui/it/floater_auction.xml | 14 +- .../default/xui/it/floater_avatar_picker.xml | 53 +- .../xui/it/floater_avatar_textures.xml | 50 +- .../skins/default/xui/it/floater_beacons.xml | 26 +- .../default/xui/it/floater_build_options.xml | 13 +- .../default/xui/it/floater_bulk_perms.xml | 64 +- .../skins/default/xui/it/floater_bumps.xml | 27 +- .../default/xui/it/floater_buy_contents.xml | 5 +- .../default/xui/it/floater_buy_currency.xml | 80 +- .../skins/default/xui/it/floater_buy_land.xml | 47 +- .../default/xui/it/floater_buy_object.xml | 4 +- .../skins/default/xui/it/floater_camera.xml | 19 +- .../default/xui/it/floater_color_picker.xml | 13 +- .../default/xui/it/floater_customize.xml | 202 +- .../xui/it/floater_device_settings.xml | 2 +- .../default/xui/it/floater_env_settings.xml | 6 +- .../skins/default/xui/it/floater_gesture.xml | 28 +- .../xui/it/floater_hardware_settings.xml | 21 +- .../default/xui/it/floater_help_browser.xml | 8 + .../skins/default/xui/it/floater_im.xml | 2 +- .../default/xui/it/floater_im_container.xml | 2 + .../default/xui/it/floater_im_session.xml | 9 + .../default/xui/it/floater_image_preview.xml | 22 +- .../default/xui/it/floater_incoming_call.xml | 21 + .../skins/default/xui/it/floater_inspect.xml | 17 +- .../default/xui/it/floater_inventory.xml | 57 +- .../it/floater_inventory_item_properties.xml | 82 +- .../skins/default/xui/it/floater_joystick.xml | 42 +- .../skins/default/xui/it/floater_lagmeter.xml | 221 +- .../default/xui/it/floater_land_holdings.xml | 6 +- .../default/xui/it/floater_live_lsleditor.xml | 19 +- .../default/xui/it/floater_lsl_guide.xml | 4 +- .../default/xui/it/floater_media_settings.xml | 6 + .../default/xui/it/floater_mem_leaking.xml | 2 +- .../skins/default/xui/it/floater_moveview.xml | 42 +- .../default/xui/it/floater_mute_object.xml | 8 +- .../default/xui/it/floater_nearby_chat.xml | 2 + .../default/xui/it/floater_openobject.xml | 2 +- .../default/xui/it/floater_outgoing_call.xml | 28 + .../skins/default/xui/it/floater_pay.xml | 32 +- .../default/xui/it/floater_pay_object.xml | 37 +- .../default/xui/it/floater_perm_prefs.xml | 2 +- .../skins/default/xui/it/floater_postcard.xml | 14 +- .../default/xui/it/floater_preferences.xml | 16 +- .../xui/it/floater_preview_animation.xml | 7 +- .../xui/it/floater_preview_classified.xml | 6 +- .../default/xui/it/floater_preview_event.xml | 6 +- .../xui/it/floater_preview_gesture.xml | 60 +- .../xui/it/floater_preview_gesture_info.xml | 2 + .../it/floater_preview_gesture_shortcut.xml | 15 + .../xui/it/floater_preview_gesture_steps.xml | 2 + .../xui/it/floater_preview_notecard.xml | 22 +- .../default/xui/it/floater_preview_sound.xml | 7 +- .../xui/it/floater_preview_texture.xml | 37 +- .../default/xui/it/floater_region_info.xml | 2 +- .../default/xui/it/floater_report_abuse.xml | 100 +- .../xui/it/floater_script_debug_panel.xml | 2 + .../default/xui/it/floater_script_preview.xml | 3 + .../default/xui/it/floater_script_queue.xml | 17 +- .../default/xui/it/floater_script_search.xml | 10 +- .../skins/default/xui/it/floater_search.xml | 16 + .../default/xui/it/floater_select_key.xml | 2 +- .../default/xui/it/floater_sell_land.xml | 126 +- .../default/xui/it/floater_settings_debug.xml | 8 +- .../skins/default/xui/it/floater_snapshot.xml | 75 +- .../skins/default/xui/it/floater_stats.xml | 71 + .../skins/default/xui/it/floater_sys_well.xml | 9 + .../skins/default/xui/it/floater_telehub.xml | 19 +- .../default/xui/it/floater_texture_ctrl.xml | 14 +- .../skins/default/xui/it/floater_tools.xml | 623 ++-- .../default/xui/it/floater_top_objects.xml | 10 +- .../skins/default/xui/it/floater_tos.xml | 3 +- .../default/xui/it/floater_voice_controls.xml | 25 + .../skins/default/xui/it/floater_water.xml | 45 +- .../xui/it/floater_whitelist_entry.xml | 9 + .../default/xui/it/floater_world_map.xml | 125 +- .../skins/default/xui/it/inspect_avatar.xml | 21 + .../skins/default/xui/it/inspect_group.xml | 22 + .../skins/default/xui/it/inspect_object.xml | 34 + .../default/xui/it/inspect_remote_object.xml | 13 + .../default/xui/it/menu_attachment_other.xml | 17 + .../default/xui/it/menu_attachment_self.xml | 12 + .../skins/default/xui/it/menu_avatar_icon.xml | 7 + .../default/xui/it/menu_avatar_other.xml | 16 + .../skins/default/xui/it/menu_avatar_self.xml | 27 + .../skins/default/xui/it/menu_bottomtray.xml | 12 + .../skins/default/xui/it/menu_favorites.xml | 10 + .../default/xui/it/menu_gesture_gear.xml | 10 + .../skins/default/xui/it/menu_group_plus.xml | 5 + .../skins/default/xui/it/menu_hide_navbar.xml | 5 + .../default/xui/it/menu_imchiclet_adhoc.xml | 4 + .../default/xui/it/menu_imchiclet_group.xml | 6 + .../default/xui/it/menu_imchiclet_p2p.xml | 7 + .../xui/it/menu_inspect_avatar_gear.xml | 17 + .../xui/it/menu_inspect_object_gear.xml | 17 + .../default/xui/it/menu_inspect_self_gear.xml | 8 + .../skins/default/xui/it/menu_inventory.xml | 24 +- .../default/xui/it/menu_inventory_add.xml | 32 + .../xui/it/menu_inventory_gear_default.xml | 14 + .../skins/default/xui/it/menu_land.xml | 9 + .../skins/default/xui/it/menu_landmark.xml | 7 + .../skins/default/xui/it/menu_login.xml | 27 +- .../skins/default/xui/it/menu_mini_map.xml | 3 +- .../skins/default/xui/it/menu_navbar.xml | 11 + .../skins/default/xui/it/menu_nearby_chat.xml | 9 + .../skins/default/xui/it/menu_object.xml | 24 + .../skins/default/xui/it/menu_object_icon.xml | 5 + .../default/xui/it/menu_participant_list.xml | 16 + .../xui/it/menu_people_friends_view_sort.xml | 7 + .../xui/it/menu_people_groups_view_sort.xml | 5 + .../default/xui/it/menu_people_nearby.xml | 10 + .../xui/it/menu_people_nearby_multiselect.xml | 8 + .../xui/it/menu_people_nearby_view_sort.xml | 8 + .../xui/it/menu_people_recent_view_sort.xml | 7 + .../skins/default/xui/it/menu_picks.xml | 8 + .../skins/default/xui/it/menu_picks_plus.xml | 5 + .../skins/default/xui/it/menu_place.xml | 7 + .../default/xui/it/menu_place_add_button.xml | 5 + .../xui/it/menu_places_gear_folder.xml | 15 + .../xui/it/menu_places_gear_landmark.xml | 18 + .../default/xui/it/menu_profile_overflow.xml | 5 + .../skins/default/xui/it/menu_slurl.xml | 2 +- .../xui/it/menu_teleport_history_gear.xml | 6 + .../xui/it/menu_teleport_history_item.xml | 6 + .../xui/it/menu_teleport_history_tab.xml | 5 + .../skins/default/xui/it/menu_text_editor.xml | 8 + .../skins/default/xui/it/menu_url_agent.xml | 6 + .../skins/default/xui/it/menu_url_group.xml | 6 + .../skins/default/xui/it/menu_url_http.xml | 7 + .../default/xui/it/menu_url_inventory.xml | 6 + .../skins/default/xui/it/menu_url_map.xml | 6 + .../default/xui/it/menu_url_objectim.xml | 8 + .../skins/default/xui/it/menu_url_parcel.xml | 6 + .../skins/default/xui/it/menu_url_slapp.xml | 5 + .../skins/default/xui/it/menu_url_slurl.xml | 7 + .../default/xui/it/menu_url_teleport.xml | 6 + .../skins/default/xui/it/menu_viewer.xml | 499 +-- .../skins/default/xui/it/mime_types_linux.xml | 217 ++ .../skins/default/xui/it/mime_types_mac.xml | 217 ++ .../skins/default/xui/it/notifications.xml | 1385 +++----- .../xui/it/panel_active_object_row.xml | 9 + .../xui/it/panel_adhoc_control_panel.xml | 8 + .../default/xui/it/panel_avatar_list_item.xml | 25 + .../xui/it/panel_block_list_sidetray.xml | 10 + .../skins/default/xui/it/panel_bottomtray.xml | 23 + .../default/xui/it/panel_classified_info.xml | 22 + .../skins/default/xui/it/panel_edit_alpha.xml | 10 + .../default/xui/it/panel_edit_classified.xml | 33 + .../skins/default/xui/it/panel_edit_eyes.xml | 9 + .../default/xui/it/panel_edit_gloves.xml | 10 + .../skins/default/xui/it/panel_edit_hair.xml | 12 + .../default/xui/it/panel_edit_jacket.xml | 11 + .../skins/default/xui/it/panel_edit_pants.xml | 10 + .../skins/default/xui/it/panel_edit_pick.xml | 28 + .../default/xui/it/panel_edit_profile.xml | 91 +- .../skins/default/xui/it/panel_edit_shape.xml | 23 + .../skins/default/xui/it/panel_edit_shirt.xml | 10 + .../skins/default/xui/it/panel_edit_shoes.xml | 10 + .../skins/default/xui/it/panel_edit_skin.xml | 14 + .../skins/default/xui/it/panel_edit_skirt.xml | 10 + .../skins/default/xui/it/panel_edit_socks.xml | 10 + .../default/xui/it/panel_edit_tattoo.xml | 8 + .../default/xui/it/panel_edit_underpants.xml | 10 + .../default/xui/it/panel_edit_undershirt.xml | 10 + .../default/xui/it/panel_edit_wearable.xml | 101 + .../skins/default/xui/it/panel_friends.xml | 10 +- .../xui/it/panel_group_control_panel.xml | 9 + .../default/xui/it/panel_group_general.xml | 79 +- .../xui/it/panel_group_info_sidetray.xml | 36 + .../default/xui/it/panel_group_invite.xml | 22 +- .../default/xui/it/panel_group_land_money.xml | 45 +- .../default/xui/it/panel_group_list_item.xml | 4 + .../default/xui/it/panel_group_notices.xml | 55 +- .../default/xui/it/panel_group_notify.xml | 8 + .../default/xui/it/panel_group_roles.xml | 145 +- .../default/xui/it/panel_im_control_panel.xml | 13 + .../default/xui/it/panel_landmark_info.xml | 37 + .../skins/default/xui/it/panel_landmarks.xml | 14 + .../skins/default/xui/it/panel_login.xml | 59 +- .../default/xui/it/panel_main_inventory.xml | 64 + .../newview/skins/default/xui/it/panel_me.xml | 7 + .../xui/it/panel_media_settings_general.xml | 32 + .../it/panel_media_settings_permissions.xml | 20 + .../xui/it/panel_media_settings_security.xml | 12 + .../skins/default/xui/it/panel_my_profile.xml | 37 + .../default/xui/it/panel_navigation_bar.xml | 15 + .../default/xui/it/panel_nearby_chat.xml | 9 + .../default/xui/it/panel_nearby_chat_bar.xml | 11 + .../skins/default/xui/it/panel_notes.xml | 23 + .../xui/it/panel_outfits_inventory.xml | 7 + .../panel_outfits_inventory_gear_default.xml | 9 + .../skins/default/xui/it/panel_people.xml | 53 + .../skins/default/xui/it/panel_pick_info.xml | 16 + .../skins/default/xui/it/panel_picks.xml | 20 + .../default/xui/it/panel_place_profile.xml | 103 + .../skins/default/xui/it/panel_places.xml | 14 + .../xui/it/panel_preferences_advanced.xml | 38 +- .../xui/it/panel_preferences_alerts.xml | 18 +- .../default/xui/it/panel_preferences_chat.xml | 32 +- .../xui/it/panel_preferences_general.xml | 116 +- .../xui/it/panel_preferences_graphics1.xml | 207 +- .../xui/it/panel_preferences_privacy.xml | 50 +- .../xui/it/panel_preferences_setup.xml | 78 +- .../xui/it/panel_preferences_sound.xml | 62 +- .../xui/it/panel_prim_media_controls.xml | 28 + .../skins/default/xui/it/panel_profile.xml | 36 +- .../default/xui/it/panel_profile_view.xml | 16 + .../default/xui/it/panel_region_covenant.xml | 23 +- .../default/xui/it/panel_region_debug.xml | 16 +- .../default/xui/it/panel_region_estate.xml | 8 +- .../default/xui/it/panel_region_texture.xml | 6 +- .../skins/default/xui/it/panel_script_ed.xml | 43 + .../skins/default/xui/it/panel_side_tray.xml | 26 + .../xui/it/panel_side_tray_tab_caption.xml | 5 + .../xui/it/panel_stand_stop_flying.xml | 6 + .../skins/default/xui/it/panel_status_bar.xml | 53 +- .../default/xui/it/panel_teleport_history.xml | 14 + .../skins/default/xui/it/panel_world_map.xml | 6 + .../skins/default/xui/it/role_actions.xml | 72 + .../default/xui/it/sidepanel_appearance.xml | 11 + .../default/xui/it/sidepanel_inventory.xml | 11 + .../default/xui/it/sidepanel_item_info.xml | 70 + .../default/xui/it/sidepanel_task_info.xml | 119 + .../newview/skins/default/xui/it/strings.xml | 2886 ++++++++++++++++- .../skins/default/xui/it/teleport_strings.xml | 6 +- .../skins/default/xui/pl/floater_about.xml | 69 +- .../default/xui/pl/floater_mute_object.xml | 17 +- .../default/xui/pl/floater_report_abuse.xml | 99 +- .../skins/default/xui/pl/floater_stats.xml | 71 + .../default/xui/pl/menu_attachment_other.xml | 17 + .../default/xui/pl/menu_attachment_self.xml | 12 + .../skins/default/xui/pl/menu_avatar_icon.xml | 7 + .../default/xui/pl/menu_avatar_other.xml | 16 + .../skins/default/xui/pl/menu_avatar_self.xml | 27 + .../skins/default/xui/pl/menu_bottomtray.xml | 12 + .../skins/default/xui/pl/menu_favorites.xml | 10 + .../default/xui/pl/menu_gesture_gear.xml | 10 + .../skins/default/xui/pl/menu_group_plus.xml | 5 + .../skins/default/xui/pl/menu_hide_navbar.xml | 5 + .../default/xui/pl/menu_imchiclet_adhoc.xml | 4 + .../default/xui/pl/menu_imchiclet_group.xml | 6 + .../default/xui/pl/menu_imchiclet_p2p.xml | 7 + .../xui/pl/menu_inspect_avatar_gear.xml | 17 + .../xui/pl/menu_inspect_object_gear.xml | 17 + .../default/xui/pl/menu_inspect_self_gear.xml | 8 + .../skins/default/xui/pl/menu_inventory.xml | 24 +- .../default/xui/pl/menu_inventory_add.xml | 32 + .../xui/pl/menu_inventory_gear_default.xml | 14 + .../skins/default/xui/pl/menu_land.xml | 9 + .../skins/default/xui/pl/menu_landmark.xml | 7 + .../skins/default/xui/pl/menu_login.xml | 33 +- .../skins/default/xui/pl/menu_mini_map.xml | 3 +- .../skins/default/xui/pl/menu_navbar.xml | 11 + .../skins/default/xui/pl/menu_nearby_chat.xml | 9 + .../skins/default/xui/pl/menu_object.xml | 24 + .../skins/default/xui/pl/menu_object_icon.xml | 5 + .../default/xui/pl/menu_participant_list.xml | 16 + .../xui/pl/menu_people_friends_view_sort.xml | 7 + .../xui/pl/menu_people_groups_view_sort.xml | 5 + .../default/xui/pl/menu_people_nearby.xml | 10 + .../xui/pl/menu_people_nearby_multiselect.xml | 8 + .../xui/pl/menu_people_nearby_view_sort.xml | 8 + .../xui/pl/menu_people_recent_view_sort.xml | 7 + .../skins/default/xui/pl/menu_picks.xml | 8 + .../skins/default/xui/pl/menu_picks_plus.xml | 5 + .../skins/default/xui/pl/menu_place.xml | 7 + .../default/xui/pl/menu_place_add_button.xml | 5 + .../xui/pl/menu_places_gear_folder.xml | 15 + .../xui/pl/menu_places_gear_landmark.xml | 18 + .../default/xui/pl/menu_profile_overflow.xml | 5 + .../skins/default/xui/pl/menu_slurl.xml | 8 +- .../xui/pl/menu_teleport_history_gear.xml | 6 + .../xui/pl/menu_teleport_history_item.xml | 6 + .../xui/pl/menu_teleport_history_tab.xml | 5 + .../skins/default/xui/pl/menu_text_editor.xml | 8 + .../skins/default/xui/pl/menu_url_agent.xml | 6 + .../skins/default/xui/pl/menu_url_group.xml | 6 + .../skins/default/xui/pl/menu_url_http.xml | 7 + .../default/xui/pl/menu_url_inventory.xml | 6 + .../skins/default/xui/pl/menu_url_map.xml | 6 + .../default/xui/pl/menu_url_objectim.xml | 8 + .../skins/default/xui/pl/menu_url_parcel.xml | 6 + .../skins/default/xui/pl/menu_url_slapp.xml | 5 + .../skins/default/xui/pl/menu_url_slurl.xml | 7 + .../default/xui/pl/menu_url_teleport.xml | 6 + .../skins/default/xui/pl/menu_viewer.xml | 491 +-- .../xui/pl/panel_block_list_sidetray.xml | 10 + .../default/xui/pl/panel_group_roles.xml | 165 +- .../skins/default/xui/pl/panel_login.xml | 65 +- .../default/xui/pl/panel_main_inventory.xml | 64 + .../xui/pl/panel_preferences_advanced.xml | 38 +- .../xui/pl/panel_preferences_alerts.xml | 23 +- .../default/xui/pl/panel_preferences_chat.xml | 31 +- .../xui/pl/panel_preferences_sound.xml | 66 +- .../skins/default/xui/pl/panel_world_map.xml | 6 + .../newview/skins/default/xui/pl/strings.xml | 2865 +++++++++++++++- .../skins/default/xui/pl/teleport_strings.xml | 12 +- 427 files changed, 15895 insertions(+), 5411 deletions(-) create mode 100644 indra/newview/skins/default/xui/da/floater_activeim.xml create mode 100644 indra/newview/skins/default/xui/da/floater_im_session.xml create mode 100644 indra/newview/skins/default/xui/da/floater_search.xml create mode 100644 indra/newview/skins/default/xui/da/floater_voice_controls.xml create mode 100644 indra/newview/skins/default/xui/da/inspect_avatar.xml create mode 100644 indra/newview/skins/default/xui/da/inspect_group.xml create mode 100644 indra/newview/skins/default/xui/da/inspect_remote_object.xml create mode 100644 indra/newview/skins/default/xui/da/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/da/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_icon.xml create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/da/menu_bottomtray.xml create mode 100644 indra/newview/skins/default/xui/da/menu_favorites.xml create mode 100644 indra/newview/skins/default/xui/da/menu_gesture_gear.xml create mode 100644 indra/newview/skins/default/xui/da/menu_group_plus.xml create mode 100644 indra/newview/skins/default/xui/da/menu_hide_navbar.xml create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_group.xml create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml create mode 100644 indra/newview/skins/default/xui/da/menu_land.xml create mode 100644 indra/newview/skins/default/xui/da/menu_landmark.xml create mode 100644 indra/newview/skins/default/xui/da/menu_navbar.xml create mode 100644 indra/newview/skins/default/xui/da/menu_nearby_chat.xml create mode 100644 indra/newview/skins/default/xui/da/menu_object.xml create mode 100644 indra/newview/skins/default/xui/da/menu_object_icon.xml create mode 100644 indra/newview/skins/default/xui/da/menu_participant_list.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml create mode 100644 indra/newview/skins/default/xui/da/menu_picks_plus.xml create mode 100644 indra/newview/skins/default/xui/da/menu_place.xml create mode 100644 indra/newview/skins/default/xui/da/menu_place_add_button.xml create mode 100644 indra/newview/skins/default/xui/da/menu_places_gear_folder.xml create mode 100644 indra/newview/skins/default/xui/da/menu_profile_overflow.xml create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_item.xml create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml create mode 100644 indra/newview/skins/default/xui/da/menu_text_editor.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_agent.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_group.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_http.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_inventory.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_map.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_objectim.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_parcel.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_slapp.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_slurl.xml create mode 100644 indra/newview/skins/default/xui/da/menu_url_teleport.xml create mode 100644 indra/newview/skins/default/xui/da/mime_types_mac.xml create mode 100644 indra/newview/skins/default/xui/da/panel_avatar_list_item.xml create mode 100644 indra/newview/skins/default/xui/da/panel_classified_info.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_classified.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_hair.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_shape.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_shirt.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_skirt.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_tattoo.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_list_item.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_notify.xml create mode 100644 indra/newview/skins/default/xui/da/panel_im_control_panel.xml create mode 100644 indra/newview/skins/default/xui/da/panel_landmark_info.xml create mode 100644 indra/newview/skins/default/xui/da/panel_landmarks.xml create mode 100644 indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml create mode 100644 indra/newview/skins/default/xui/da/panel_navigation_bar.xml create mode 100644 indra/newview/skins/default/xui/da/panel_notes.xml create mode 100644 indra/newview/skins/default/xui/da/panel_outfits_inventory.xml create mode 100644 indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml create mode 100644 indra/newview/skins/default/xui/da/panel_people.xml create mode 100644 indra/newview/skins/default/xui/da/panel_picks.xml create mode 100644 indra/newview/skins/default/xui/da/panel_places.xml create mode 100644 indra/newview/skins/default/xui/da/panel_profile.xml create mode 100644 indra/newview/skins/default/xui/da/panel_script_ed.xml create mode 100644 indra/newview/skins/default/xui/da/panel_side_tray.xml create mode 100644 indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml create mode 100644 indra/newview/skins/default/xui/da/panel_teleport_history.xml create mode 100644 indra/newview/skins/default/xui/da/sidepanel_item_info.xml create mode 100644 indra/newview/skins/default/xui/da/sidepanel_task_info.xml create mode 100644 indra/newview/skins/default/xui/it/floater_activeim.xml create mode 100644 indra/newview/skins/default/xui/it/floater_help_browser.xml create mode 100644 indra/newview/skins/default/xui/it/floater_im_container.xml create mode 100644 indra/newview/skins/default/xui/it/floater_im_session.xml create mode 100644 indra/newview/skins/default/xui/it/floater_incoming_call.xml create mode 100644 indra/newview/skins/default/xui/it/floater_media_settings.xml create mode 100644 indra/newview/skins/default/xui/it/floater_nearby_chat.xml create mode 100644 indra/newview/skins/default/xui/it/floater_outgoing_call.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml create mode 100644 indra/newview/skins/default/xui/it/floater_script_debug_panel.xml create mode 100644 indra/newview/skins/default/xui/it/floater_search.xml create mode 100644 indra/newview/skins/default/xui/it/floater_stats.xml create mode 100644 indra/newview/skins/default/xui/it/floater_sys_well.xml create mode 100644 indra/newview/skins/default/xui/it/floater_voice_controls.xml create mode 100644 indra/newview/skins/default/xui/it/floater_whitelist_entry.xml create mode 100644 indra/newview/skins/default/xui/it/inspect_avatar.xml create mode 100644 indra/newview/skins/default/xui/it/inspect_group.xml create mode 100644 indra/newview/skins/default/xui/it/inspect_object.xml create mode 100644 indra/newview/skins/default/xui/it/inspect_remote_object.xml create mode 100644 indra/newview/skins/default/xui/it/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/it/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_icon.xml create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/it/menu_bottomtray.xml create mode 100644 indra/newview/skins/default/xui/it/menu_favorites.xml create mode 100644 indra/newview/skins/default/xui/it/menu_gesture_gear.xml create mode 100644 indra/newview/skins/default/xui/it/menu_group_plus.xml create mode 100644 indra/newview/skins/default/xui/it/menu_hide_navbar.xml create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_group.xml create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inventory_add.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml create mode 100644 indra/newview/skins/default/xui/it/menu_land.xml create mode 100644 indra/newview/skins/default/xui/it/menu_landmark.xml create mode 100644 indra/newview/skins/default/xui/it/menu_navbar.xml create mode 100644 indra/newview/skins/default/xui/it/menu_nearby_chat.xml create mode 100644 indra/newview/skins/default/xui/it/menu_object.xml create mode 100644 indra/newview/skins/default/xui/it/menu_object_icon.xml create mode 100644 indra/newview/skins/default/xui/it/menu_participant_list.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml create mode 100644 indra/newview/skins/default/xui/it/menu_picks.xml create mode 100644 indra/newview/skins/default/xui/it/menu_picks_plus.xml create mode 100644 indra/newview/skins/default/xui/it/menu_place.xml create mode 100644 indra/newview/skins/default/xui/it/menu_place_add_button.xml create mode 100644 indra/newview/skins/default/xui/it/menu_places_gear_folder.xml create mode 100644 indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml create mode 100644 indra/newview/skins/default/xui/it/menu_profile_overflow.xml create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_item.xml create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml create mode 100644 indra/newview/skins/default/xui/it/menu_text_editor.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_agent.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_group.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_http.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_map.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_objectim.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_parcel.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_slapp.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_slurl.xml create mode 100644 indra/newview/skins/default/xui/it/menu_url_teleport.xml create mode 100644 indra/newview/skins/default/xui/it/mime_types_linux.xml create mode 100644 indra/newview/skins/default/xui/it/mime_types_mac.xml create mode 100644 indra/newview/skins/default/xui/it/panel_active_object_row.xml create mode 100644 indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml create mode 100644 indra/newview/skins/default/xui/it/panel_avatar_list_item.xml create mode 100644 indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml create mode 100644 indra/newview/skins/default/xui/it/panel_bottomtray.xml create mode 100644 indra/newview/skins/default/xui/it/panel_classified_info.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_alpha.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_classified.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_eyes.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_gloves.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_hair.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_jacket.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_pants.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_pick.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shape.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shirt.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shoes.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_skin.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_skirt.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_socks.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_tattoo.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_underpants.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_undershirt.xml create mode 100644 indra/newview/skins/default/xui/it/panel_edit_wearable.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_control_panel.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_list_item.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_notify.xml create mode 100644 indra/newview/skins/default/xui/it/panel_im_control_panel.xml create mode 100644 indra/newview/skins/default/xui/it/panel_landmark_info.xml create mode 100644 indra/newview/skins/default/xui/it/panel_landmarks.xml create mode 100644 indra/newview/skins/default/xui/it/panel_main_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/panel_me.xml create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_general.xml create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_security.xml create mode 100644 indra/newview/skins/default/xui/it/panel_my_profile.xml create mode 100644 indra/newview/skins/default/xui/it/panel_navigation_bar.xml create mode 100644 indra/newview/skins/default/xui/it/panel_nearby_chat.xml create mode 100644 indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml create mode 100644 indra/newview/skins/default/xui/it/panel_notes.xml create mode 100644 indra/newview/skins/default/xui/it/panel_outfits_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml create mode 100644 indra/newview/skins/default/xui/it/panel_people.xml create mode 100644 indra/newview/skins/default/xui/it/panel_pick_info.xml create mode 100644 indra/newview/skins/default/xui/it/panel_picks.xml create mode 100644 indra/newview/skins/default/xui/it/panel_place_profile.xml create mode 100644 indra/newview/skins/default/xui/it/panel_places.xml create mode 100644 indra/newview/skins/default/xui/it/panel_prim_media_controls.xml create mode 100644 indra/newview/skins/default/xui/it/panel_profile_view.xml create mode 100644 indra/newview/skins/default/xui/it/panel_script_ed.xml create mode 100644 indra/newview/skins/default/xui/it/panel_side_tray.xml create mode 100644 indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml create mode 100644 indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml create mode 100644 indra/newview/skins/default/xui/it/panel_teleport_history.xml create mode 100644 indra/newview/skins/default/xui/it/role_actions.xml create mode 100644 indra/newview/skins/default/xui/it/sidepanel_appearance.xml create mode 100644 indra/newview/skins/default/xui/it/sidepanel_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/sidepanel_item_info.xml create mode 100644 indra/newview/skins/default/xui/it/sidepanel_task_info.xml create mode 100644 indra/newview/skins/default/xui/pl/floater_stats.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_attachment_other.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_attachment_self.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_icon.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_other.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_self.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_bottomtray.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_favorites.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_gesture_gear.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_group_plus.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_hide_navbar.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_inventory_add.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_land.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_landmark.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_navbar.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_nearby_chat.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_object.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_object_icon.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_participant_list.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_picks.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_picks_plus.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_place.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_place_add_button.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_profile_overflow.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_text_editor.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_agent.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_group.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_http.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_inventory.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_map.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_objectim.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_parcel.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_slapp.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_slurl.xml create mode 100644 indra/newview/skins/default/xui/pl/menu_url_teleport.xml create mode 100644 indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml create mode 100644 indra/newview/skins/default/xui/pl/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/da/floater_activeim.xml b/indra/newview/skins/default/xui/da/floater_activeim.xml new file mode 100644 index 00000000000..6fdac8d8801 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="AKTIV IM"/> diff --git a/indra/newview/skins/default/xui/da/floater_auction.xml b/indra/newview/skins/default/xui/da/floater_auction.xml index 8f793557bea..e74e8a991b7 100644 --- a/indra/newview/skins/default/xui/da/floater_auction.xml +++ b/indra/newview/skins/default/xui/da/floater_auction.xml @@ -1,9 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_auction" title="START LINDEN LAND SALG"> - <check_box label="Vis ogsÃ¥ gul aftegning af omrÃ¥de" name="fence_check" /> - <button label="Foto" label_selected="Foto" name="snapshot_btn" /> - <button label="OK" label_selected="OK" name="ok_btn" /> - <string name="already for sale"> + <floater.string name="already for sale"> Du kan ikke sætte jord pÃ¥ auktion der allerede er sat til salg. - </string> + </floater.string> + <check_box initial_value="true" label="Vis ogsÃ¥ gul aftegning af omrÃ¥de" name="fence_check"/> + <button label="Foto" label_selected="Foto" name="snapshot_btn"/> + <button label="Sælg til enhver" label_selected="Sælg til enhver" name="sell_to_anyone_btn"/> + <button label="Nulstil valg" label_selected="Nulstil valg" name="reset_parcel_btn"/> + <button label="Start auktion" label_selected="Start auktion" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml index 0ddb6e9dbe5..a337da9b51a 100644 --- a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml @@ -1,5 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="VÆLG BEBOER"> + <floater.string name="not_found"> + '[TEXT]' ikke fundet + </floater.string> + <floater.string name="no_one_near"> + Ingen i nærheden + </floater.string> + <floater.string name="no_results"> + Ingen resultater + </floater.string> + <floater.string name="searching"> + Søger... + </floater.string> + <string label="Vælg" label_selected="Vælg" name="Select"> + Vælg + </string> + <string name="Close"> + Luk + </string> <tab_container name="ResidentChooserTabs"> <panel label="Søg" name="SearchPanel"> <text name="InstructSearchResidentName"> @@ -7,34 +25,22 @@ </text> <button label="Find" label_selected="Find" name="Find"/> </panel> - <panel label="Visitkort" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Vælg et visitkort: + <panel label="Venner" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Vælg en person: </text> </panel> <panel label="Nær ved mig" name="NearMePanel"> <text name="InstructSelectResident"> - Vælg beboere i nærheden: + Vælg en person nær: </text> - <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh"/> <slider label="OmrÃ¥de" name="near_me_range"/> <text name="meters"> meter </text> + <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh"/> </panel> </tab_container> - <button label="Vælg" label_selected="Vælg" name="Select"/> - <button label="Annullér" label_selected="Annullér" name="Cancel"/> - <string name="not_found"> - '[TEXT]' ikke fundet - </string> - <string name="no_one_near"> - Ingen i nærheden - </string> - <string name="no_results"> - Ingen resultater - </string> - <string name="searching"> - Søger... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml index 9cf44d64791..0dd1a4f6ba6 100644 --- a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml @@ -1,44 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="MASSE-ÆNDRING AF RETTIGHEDER PÃ… INDHOLD"> - <text name="applyto"> - Indholdstyper - </text> +<floater name="floaterbulkperms" title="REDIGÉR RETTIGHEDER FOR INDHOLD"> + <floater.string name="nothing_to_modify_text"> + Valgte indeholder ikke noget som kan redigeres. + </floater.string> + <floater.string name="status_text"> + Sætter rettigheder pÃ¥ [NAME] + </floater.string> + <floater.string name="start_text"> + PÃ¥begynder forespørgsel pÃ¥ rettighedsændringer... + </floater.string> + <floater.string name="done_text"> + Afsluttet forespørgsel pÃ¥ rettighedsændringer. + </floater.string> <check_box label="Animationer" name="check_animation"/> + <icon name="icon_animation" tool_tip="Animation"/> <check_box label="Kropsdele" name="check_bodypart"/> + <icon name="icon_bodypart" tool_tip="Kropsdele"/> <check_box label="Tøj" name="check_clothing"/> + <icon name="icon_clothing" tool_tip="Tøj"/> <check_box label="Bevægelser" name="check_gesture"/> - <check_box label="Landemærker" name="check_landmark"/> + <icon name="icon_gesture" tool_tip="Bevægelser"/> <check_box label="Noter" name="check_notecard"/> + <icon name="icon_notecard" tool_tip="Noter"/> <check_box label="Objekter" name="check_object"/> + <icon name="icon_object" tool_tip="Objekter"/> <check_box label="Scripts" name="check_script"/> + <icon name="icon_script" tool_tip="Scripts"/> <check_box label="Lyde" name="check_sound"/> + <icon name="icon_sound" tool_tip="Lyde"/> <check_box label="Teksturer" name="check_texture"/> - <button label="Vælg alle" label_selected="Alle" name="check_all"/> - <button label="Fravælg alle" label_selected="Ingen" name="check_none"/> + <icon name="icon_texture" tool_tip="Teksturer"/> + <button label="√ Alle" label_selected="Alle" name="check_all"/> + <button label="Fjern" label_selected="Ingen" name="check_none"/> <text name="newperms"> - Nye rettigheder + Nye indholdsrettigheder + </text> + <text name="GroupLabel"> + Gruppe: </text> - <check_box label="Del med gruppe" name="share_with_group"/> - <check_box label="Tillad enhver at kopiere" name="everyone_copy"/> + <check_box label="Del" name="share_with_group"/> + <text name="AnyoneLabel"> + Enhver: + </text> + <check_box label="Kopiér" name="everyone_copy"/> <text name="NextOwnerLabel"> - Næste ejer kan: + Næste ejer: </text> <check_box label="Redigere" name="next_owner_modify"/> <check_box label="Kopiére" name="next_owner_copy"/> - <check_box label="Sælge/Give væk" name="next_owner_transfer"/> - <button label="Hjælp" name="help"/> - <button label="Gem" name="apply"/> - <button label="Luk" name="close"/> - <string name="nothing_to_modify_text"> - Valgte indeholder ikke noget som kan redigeres. - </string> - <string name="status_text"> - Sætter rettigheder pÃ¥ [NAME] - </string> - <string name="start_text"> - PÃ¥begynder forespørgsel pÃ¥ rettighedsændringer... - </string> - <string name="done_text"> - Afsluttet forespørgsel pÃ¥ rettighedsændringer. - </string> + <check_box initial_value="true" label="Overfør" name="next_owner_transfer" tool_tip="Næste ejer kan sælge eller forære dette objekt væk"/> + <button label="Ok" name="apply"/> + <button label="Annullér" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_bumps.xml b/indra/newview/skins/default/xui/da/floater_bumps.xml index 704e6c36085..d22de6e7f13 100644 --- a/indra/newview/skins/default/xui/da/floater_bumps.xml +++ b/indra/newview/skins/default/xui/da/floater_bumps.xml @@ -1,21 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_bumps" title="BUMP, SKUB & SLAG"> - <string name="none_detected"> + <floater.string name="none_detected"> Ingen registreret - </string> - <string name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] ramte dig - </string> - <string name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] skubbede dig med et script - </string> - <string name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] ramte dig med et objekt - </string> - <string name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] ramte dig med et scriptet objekt - </string> - <string name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] ramte dig med et fysisk objekt - </string> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_buy_object.xml b/indra/newview/skins/default/xui/da/floater_buy_object.xml index 266753902ba..f9e18dcf65a 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_object.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="KØB KOPI AF OBJEKT"> <text name="contents_text"> - og dets indhold: + Indeholder: </text> <text name="buy_text"> Køb for L$[AMOUNT] fra [NAME]? </text> - <button label="Annullér" label_selected="Annullér" name="cancel_btn" /> - <button label="Køb" label_selected="Køb" name="buy_btn" /> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> + <button label="Køb" label_selected="Køb" name="buy_btn"/> <string name="title_buy_text"> Køb </string> diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml index c52f7ab8324..25965596090 100644 --- a/indra/newview/skins/default/xui/da/floater_camera.xml +++ b/indra/newview/skins/default/xui/da/floater_camera.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="camera_floater" title=""> <floater.string name="rotate_tooltip"> Roter kamera omkring fokus @@ -11,6 +11,21 @@ </floater.string> <panel name="controls"> <joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, til venstre og højre"/> - <joystick_zoom name="zoom" tool_tip="Zoom kamera mod fokus"/> + <panel name="zoom" tool_tip="Zoom kamera mod fokus"> + <slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/> + </panel> + <joystick_rotate name="cam_rotate_stick" tool_tip="Kreds kamera omkring fokus"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Se bagfra"/> + <button name="group_view" tool_tip="Se som gruppe"/> + <button name="front_view" tool_tip="Se forfra"/> + <button name="mouselook_view" tool_tip="Førsteperson"/> + </panel> + </panel> + <panel name="buttons"> + <button label="" name="orbit_btn" tool_tip="Rotér kamera"/> + <button label="" name="pan_btn" tool_tip="Panorér kamera"/> + <button label="" name="avatarview_btn" tool_tip="Se som avatar"/> + <button label="" name="freecamera_btn" tool_tip="Se objekt"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_color_picker.xml b/indra/newview/skins/default/xui/da/floater_color_picker.xml index d0a47b76e03..514b2c43317 100644 --- a/indra/newview/skins/default/xui/da/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/da/floater_color_picker.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="ColorPicker" title="FARVE VÆLGER"> <text name="r_val_text"> Rød: @@ -18,14 +18,14 @@ <text name="l_val_text"> Lysstyrke: </text> - <check_box label="Anvend straks" name="apply_immediate" /> - <button label="" label_selected="" name="color_pipette" /> - <button label="Annullér" label_selected="Annullér" name="cancel_btn" /> - <button label="Vælg" label_selected="Vælg" name="select_btn" /> + <check_box label="Benyt nu" name="apply_immediate"/> + <button label="" label_selected="" name="color_pipette"/> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> + <button label="Ok" label_selected="Ok" name="select_btn"/> <text name="Current color:"> Nuværende Farve: </text> <text name="(Drag below to save.)"> - (Træk ned og gem) + (Træk ned for at gemme) </text> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml index 11ecc8bd9a8..b7075e356ad 100644 --- a/indra/newview/skins/default/xui/da/floater_gesture.xml +++ b/indra/newview/skins/default/xui/da/floater_gesture.xml @@ -1,16 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="gestures" title="AKTIVE BEVÆGELSER"> - <text name="help_label"> - Dobbelt-klik pÃ¥ en bevægelse for at afspille animation og lyd. - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Steder" name="gestures" title="BEVÆGELSER"> + <floater.string name="loading"> + Henter... + </floater.string> + <floater.string name="playing"> + (Afspiller) + </floater.string> + <floater.string name="copy_name"> + Kopi af [COPY_NAME] + </floater.string> <scroll_list name="gesture_list"> - <column label="Genvej" name="trigger" /> - <column label="Taste" name="shortcut" /> - <column label="" name="key" /> - <column label="Navn" name="name" /> + <scroll_list.columns label="Navn" name="name"/> + <scroll_list.columns label="Chat" name="trigger"/> + <scroll_list.columns label="" name="key"/> + <scroll_list.columns label="Taste" name="shortcut"/> </scroll_list> - <button label="Ny" name="new_gesture_btn" /> - <button label="Redigér" name="edit_btn" /> - <button label="Afspil" name="play_btn" /> - <button label="Stop" name="stop_btn" /> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Flere muligheder"/> + <button name="new_gesture_btn" tool_tip="Lav ny bevægelse"/> + <button name="activate_btn" tool_tip="Aktivér/Deaktivér valgte bevægelse"/> + <button name="del_btn" tool_tip="Slet denne bevægelse"/> + </panel> + <button label="Redigér" name="edit_btn"/> + <button label="Afspil" name="play_btn"/> + <button label="Stop" name="stop_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml index 18584e57cae..c70da459558 100644 --- a/indra/newview/skins/default/xui/da/floater_hud.xml +++ b/indra/newview/skins/default/xui/da/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_hud" title="TUTORIAL" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="KURSUS"/> diff --git a/indra/newview/skins/default/xui/da/floater_im_session.xml b/indra/newview/skins/default/xui/da/floater_im_session.xml new file mode 100644 index 00000000000..aa7df6ad2b9 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_im_session.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="panel_im"> + <layout_stack name="im_panels"> + <layout_panel label="IM kontrol panel" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="Til" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_land_holdings.xml b/indra/newview/skins/default/xui/da/floater_land_holdings.xml index 39c906eb183..b3c12627f7f 100644 --- a/indra/newview/skins/default/xui/da/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/da/floater_land_holdings.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="MIT LAND"> <scroll_list name="parcel list"> - <column label="Navn" name="name"/> + <column label="Parcel" name="name"/> <column label="Region" name="location"/> <column label="Type" name="type"/> <column label="OmrÃ¥de" name="area"/> <column label="" name="hidden"/> </scroll_list> <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport til centrum pÃ¥ dette land."/> - <button label="Vis pÃ¥ kort" label_selected="Vis pÃ¥ kort" name="Show on Map" tool_tip="Vis dette land pÃ¥ verdenskortet."/> + <button label="Kort" label_selected="Kort" name="Show on Map" tool_tip="Vis dette land i verdenskortet"/> <text name="contrib_label"> Bidrag til dine grupper: </text> diff --git a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml index cfc5fb8860b..4079ff9f38d 100644 --- a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml @@ -1,12 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="SCRIPT: NYT SCRIPT"> - <button label="Nulstil" label_selected="Reset" name="Reset" /> - <check_box label="Kører" name="running" /> - <check_box label="Mono" name="mono" /> - <string name="not_allowed"> - Du har ikke rettigheder til at se dette script. - </string> - <string name="script_running"> + <floater.string name="not_allowed"> + Du kan ikke se eller redigere dette script, da det er sat til "no copy". Du skal bruge fulde rettigheder for at kunne se og redigere et script i dette objekt. + </floater.string> + <floater.string name="script_running"> Kører - </string> + </floater.string> + <floater.string name="Title"> + Script: [NAME] + </floater.string> + <button label="Nulstil" label_selected="Reset" name="Reset"/> + <check_box initial_value="true" label="Kører" name="running"/> + <check_box initial_value="true" label="Mono" name="mono"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml index e7ad821d408..60bb3149a5e 100644 --- a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="MemLeak" title="MEMORY LEAKING SIMULATION"> - <spinner label="Leaking Speed (bytes per frame):" name="leak_speed" /> - <spinner label="Max Leaked Memory (MB):" name="max_leak" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="MemLeak" title="SIMULÉR MEMORY LEAK"> + <spinner label="Leaking Speed (bytes per frame):" name="leak_speed"/> + <spinner label="Max Leaked Memory (MB):" name="max_leak"/> <text name="total_leaked_label"> Current leaked memory: [SIZE] KB </text> @@ -11,8 +11,8 @@ <text name="note_label_2"> [NOTE2] </text> - <button label="Start" name="start_btn" /> - <button label="Stop" name="stop_btn" /> - <button label="Slip" name="release_btn" /> - <button label="Luk" name="close_btn" /> + <button label="Start" name="start_btn"/> + <button label="Stop" name="stop_btn"/> + <button label="Slip" name="release_btn"/> + <button label="Luk" name="close_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_moveview.xml b/indra/newview/skins/default/xui/da/floater_moveview.xml index 2b505288810..b00dc6bf4db 100644 --- a/indra/newview/skins/default/xui/da/floater_moveview.xml +++ b/indra/newview/skins/default/xui/da/floater_moveview.xml @@ -1,13 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="move_floater"> -<panel name="panel_actions"> - <button label="" label_selected="" name="turn left btn" tool_tip="Drej til venstre" /> - <button label="" label_selected="" name="turn right btn" tool_tip="Drej til højre" /> - <button label="" label_selected="" name="move up btn" tool_tip="Hop eller flyv op" /> - <button label="" label_selected="" name="move down btn" tool_tip="Duk eller flyv ned" /> - <joystick_slide name="slide left btn" tool_tip="GÃ¥ til venstre" /> - <joystick_slide name="slide right btn" tool_tip="GÃ¥ til højre" /> - <joystick_turn name="forward btn" tool_tip="GÃ¥ fremad" /> - <joystick_turn name="backward btn" tool_tip="GÃ¥ bagud" /> -</panel> + <string name="walk_forward_tooltip"> + GÃ¥ frem (Tryk pÃ¥ Op piletast eller W) + </string> + <string name="walk_back_tooltip"> + GÃ¥ baglæns (Tryk pÃ¥ Ned piletast eller S) + </string> + <string name="run_forward_tooltip"> + Løb forlæns (Tryk pÃ¥ Op piletast eller W) + </string> + <string name="run_back_tooltip"> + Løb baglæns (Tryk pÃ¥ Ned piletast eller S) + </string> + <string name="fly_forward_tooltip"> + Flyv frem (Tryk pÃ¥ Op piletast eller W) + </string> + <string name="fly_back_tooltip"> + Flyv baglæns (Tryk pÃ¥ Ned piletast eller S) + </string> + <panel name="panel_actions"> + <button label="" label_selected="" name="turn left btn" tool_tip="xxx + Drej til venstre (Tryk pÃ¥ venstre piletast eller A)"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Drej til højre (Tryk pÃ¥ højre piletast eller D)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Flyv op, Tryk pÃ¥ "E""/> + <button label="" label_selected="" name="move down btn" tool_tip="Flyv ned, Tryk pÃ¥ "C""/> + <joystick_turn name="forward btn" tool_tip="GÃ¥ frem (Tryk pÃ¥ Op piletast eller W)"/> + <joystick_turn name="backward btn" tool_tip="GÃ¥ tilbage (Tryk pÃ¥ Ned piletast eller S)"/> + </panel> + <panel name="panel_modes"> + <button label="" name="mode_walk_btn" tool_tip="GÃ¥ tilstand"/> + <button label="" name="mode_run_btn" tool_tip="Løbe tilstand"/> + <button label="" name="mode_fly_btn" tool_tip="Flyve tilstand"/> + <button label="Stop flyvning" name="stop_fly_btn" tool_tip="Stop flyvning"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_my_friends.xml b/indra/newview/skins/default/xui/da/floater_my_friends.xml index 54b401076cd..c3db53ce631 100644 --- a/indra/newview/skins/default/xui/da/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/da/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_my_friends" title="KONTAKTER"> <tab_container name="friends_and_groups"> - <panel label="Venner" name="friends_panel" /> - <panel label="Grupper" name="groups_panel" /> + <panel label="Venner" name="friends_panel"/> + <panel label="Grupper" name="groups_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml index 69a8d3af94f..eecddbcdb09 100644 --- a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="STANDARD TILLADELSER VED HENTNING"> +<floater name="perm prefs" title="STANDARD RETTIGHEDER"> <panel label="Tilladelser" name="permissions"> <button label="?" label_selected="?" name="help"/> <check_box label="Del med gruppe" name="share_with_group"/> diff --git a/indra/newview/skins/default/xui/da/floater_postcard.xml b/indra/newview/skins/default/xui/da/floater_postcard.xml index cd61e7ac975..44b0fd4faa9 100644 --- a/indra/newview/skins/default/xui/da/floater_postcard.xml +++ b/indra/newview/skins/default/xui/da/floater_postcard.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Postcard" title="E-MAIL BILLEDE"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="EMAIL FOTO"> <text name="to_label"> Send til: </text> @@ -12,7 +12,7 @@ <text name="subject_label"> Emne: </text> - <line_editor label="Skriv dit emne her." name="subject_form" /> + <line_editor label="Skriv dit emne her." name="subject_form"/> <text name="msg_label"> Besked: </text> @@ -22,10 +22,10 @@ <text name="fine_print"> Hvis din modtager opretter en konto i SL, vil du fÃ¥ en henvisnings bonus. </text> - <button label="Annullér" name="cancel_btn" /> - <button label="Send" name="send_btn" /> + <button label="Annullér" name="cancel_btn"/> + <button label="Send" name="send_btn"/> <string name="default_subject"> - Postkort fra [SECOND_LIFE] + Postkort fra [SECOND_LIFE]. </string> <string name="default_message"> Tjek det her ud! diff --git a/indra/newview/skins/default/xui/da/floater_preferences.xml b/indra/newview/skins/default/xui/da/floater_preferences.xml index e251c9ad2c6..f0fe3472d00 100644 --- a/indra/newview/skins/default/xui/da/floater_preferences.xml +++ b/indra/newview/skins/default/xui/da/floater_preferences.xml @@ -1,8 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Preferences" title="INDSTILLINGER"> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Annullér" label_selected="Annullér" name="Cancel" /> - <button label="Gem" label_selected="Gem" name="Apply" /> - <button label="Om" label_selected="Om" name="About..." /> - <button label="Hjælp" label_selected="Hjælp" name="Help" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> + <tab_container name="pref core"> + <panel label="Generelt" name="general"/> + <panel label="Grafik" name="display"/> + <panel label="Privatliv" name="im"/> + <panel label="Sound" name="audio"/> + <panel label="Chat" name="chat"/> + <panel label="Beskeder" name="msgs"/> + <panel label="Opsætning" name="input"/> + <panel label="Avanceret" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_animation.xml b/indra/newview/skins/default/xui/da/floater_preview_animation.xml index 1494bf36d08..436843decc9 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_animation.xml @@ -1,10 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_anim"> + <floater.string name="Title"> + Animation: [NAME] + </floater.string> <text name="desc txt"> Beskrivelse: </text> - <button label="Afspil i verden" label_selected="Stop" name="Anim play btn" - tool_tip="Afspil denne animation sÃ¥ andre kan se den." /> - <button label="Afspil lokalt" label_selected="Stop" name="Anim audition btn" - tool_tip="Afspil denne animation sÃ¥ kun du kan se den." /> + <button label="Afspil i verden" label_selected="Stop" name="Anim play btn" tool_tip="Vis denne animation sÃ¥ andre kan se den"/> + <button label="Afspil lokalt" label_selected="Stop" name="Anim audition btn" tool_tip="Vis denne animation sÃ¥ kun du kan se den"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_classified.xml b/indra/newview/skins/default/xui/da/floater_preview_classified.xml index cf2d14b80a4..bc232f3e9f9 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_classified.xml @@ -1,2 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="classified_preview" title="ANNONCE INFORMATION" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="classified_preview" title="ANNONCE INFORMATION"> + <floater.string name="Title"> + Annonce: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_sound.xml b/indra/newview/skins/default/xui/da/floater_preview_sound.xml index 9fbfba88b5c..21f76564622 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_sound.xml @@ -1,10 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_sound"> + <floater.string name="Title"> + Lyd: [NAME] + </floater.string> <text name="desc txt"> Beskrivelse: </text> - <button label="Afspil lokalt" label_selected="Afspil lokalt" name="Sound audition btn" - tool_tip="Afspil denne lyd sÃ¥ kun du kan høre den." /> - <button label="Afspil i verden" label_selected="Afspil i verden" name="Sound play btn" - tool_tip="Afspil denne lyd sÃ¥ den kan høres af andre." /> + <button label="Afspil i verden" label_selected="Afspil i verden" name="Sound play btn" tool_tip="Afspil denne lyd sÃ¥ alle kan høre den"/> + <button label="Afspil lokalt" label_selected="Afspil lokalt" name="Sound audition btn" tool_tip="Afspil denne lyd sÃ¥ kun du kan høre den"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_region_info.xml b/indra/newview/skins/default/xui/da/floater_region_info.xml index 5c95c8ed5ef..ae00f90f164 100644 --- a/indra/newview/skins/default/xui/da/floater_region_info.xml +++ b/indra/newview/skins/default/xui/da/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="regioninfo" title="REGION/ESTATE" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="REGION/ESTATE"/> diff --git a/indra/newview/skins/default/xui/da/floater_script_queue.xml b/indra/newview/skins/default/xui/da/floater_script_queue.xml index 3f54c924267..1ff54944583 100644 --- a/indra/newview/skins/default/xui/da/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/da/floater_script_queue.xml @@ -1,4 +1,19 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="queue" title="NULSTIL FORLØB"> - <button label="Luk" label_selected="Luk" name="close" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="queue" title="NULSTIL FREMSKRIDT"> + <floater.string name="Starting"> + Starter [START] af [COUNT] genstande. + </floater.string> + <floater.string name="Done"> + Færdig. + </floater.string> + <floater.string name="Resetting"> + Nulstiller + </floater.string> + <floater.string name="Running"> + Running + </floater.string> + <floater.string name="NotRunning"> + Not running + </floater.string> + <button label="Luk" label_selected="Luk" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_search.xml b/indra/newview/skins/default/xui/da/floater_search.xml new file mode 100644 index 00000000000..80a30b1aa17 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="FIND"> + <floater.string name="loading_text"> + Henter... + </floater.string> + <floater.string name="done_text"> + Færdig + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Gentag søgning med "God level" + </text> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_select_key.xml b/indra/newview/skins/default/xui/da/floater_select_key.xml index 7fa868a3a9f..fe0d31c6c35 100644 --- a/indra/newview/skins/default/xui/da/floater_select_key.xml +++ b/indra/newview/skins/default/xui/da/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container" title=""> - <button label="Annullér" label_selected="Annullér" name="Cancel" /> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> <text name="Save item as:"> - Tryk pÃ¥ en taste for at vælge + Tryk pÃ¥ en taste for at sætte din "Tale" knap udløser. </text> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_sound_preview.xml b/indra/newview/skins/default/xui/da/floater_sound_preview.xml index e54bdf4f42c..5f74f28a23c 100644 --- a/indra/newview/skins/default/xui/da/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_sound_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Sound Preview" title="SOUND.WAV"> <text name="name_label"> Navn: @@ -6,6 +6,6 @@ <text name="description_label"> Beskrivelse: </text> - <button label="Annullér" label_selected="Annullér" name="cancel_btn" /> - <button label="Hent (L$[AMOUNT])" label_selected="Hent (L$[AMOUNT])" name="ok_btn" /> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> + <button label="Hent (L$[AMOUNT])" label_selected="Hent (L$[AMOUNT])" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml index 4167e2938aa..00b49a9df90 100644 --- a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="texture picker" title="VÆLG: TEKSTUR"> <string name="choose_picture"> Klik for at vælge et billede </string> <text name="Multiple"> - Flere + Flere teksturer </text> <text name="unknown"> Størrelse: [DIMENSIONS] </text> - <button label="Standard" label_selected="Standard" name="Default" /> - <button label="Ingen" label_selected="Ingen" name="None" /> - <button label="Blank" label_selected="Blank" name="Blank" /> - <check_box label="Vis mapper" name="show_folders_check" /> - <search_editor label="Skriv her for at søge" name="inventory search editor" /> - <check_box label="Benyt straks" name="apply_immediate_check" /> - <button label="" label_selected="" name="Pipette" /> - <button label="Annullér" label_selected="Annullér" name="Cancel" /> - <button label="Vælg" label_selected="Vælg" name="Select" /> + <button label="Standard" label_selected="Standard" name="Default"/> + <button label="Ingen" label_selected="Ingen" name="None"/> + <button label="Blank" label_selected="Blank" name="Blank"/> + <check_box label="Vis mapper" name="show_folders_check"/> + <search_editor label="Filtrér teksturer" name="inventory search editor"/> + <check_box label="Benyt ny" name="apply_immediate_check"/> + <button label="" label_selected="" name="Pipette"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> + <button label="Ok" label_selected="Ok" name="Select"/> <string name="pick title"> Vælg: </string> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index c3287bac84e..77459aca674 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -1,92 +1,160 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title="" short_title="BYG"> +<floater name="toolbox floater" short_title="BYGGE VÆRKTØJER" title=""> + <floater.string name="status_rotate"> + Træk i de farvede bÃ¥nd for at rotere objekt + </floater.string> + <floater.string name="status_scale"> + Klik og træk for at strække valgte side + </floater.string> + <floater.string name="status_move"> + Træk for at flytte, hold shift nede for at kopiere + </floater.string> + <floater.string name="status_modifyland"> + Klik og hold for at redigere land + </floater.string> + <floater.string name="status_camera"> + Klik og træk for at flytte kamera + </floater.string> + <floater.string name="status_grab"> + Træk for at flytte, Ctrl for at løfte, Ctrl+Shift for at rotere + </floater.string> + <floater.string name="status_place"> + Klik et sted i verden for at bygge + </floater.string> + <floater.string name="status_selectland"> + Klik og træk for at vælge land + </floater.string> + <floater.string name="grid_screen_text"> + Skærm + </floater.string> + <floater.string name="grid_local_text"> + Lokalt + </floater.string> + <floater.string name="grid_world_text"> + Verden + </floater.string> + <floater.string name="grid_reference_text"> + Reference + </floater.string> + <floater.string name="grid_attachment_text"> + Vedhæng + </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Fokus"/> <button label="" label_selected="" name="button move" tool_tip="Flyt"/> <button label="" label_selected="" name="button edit" tool_tip="Redigér"/> <button label="" label_selected="" name="button create" tool_tip="Opret"/> <button label="" label_selected="" name="button land" tool_tip="Land"/> + <text name="text status"> + Træk for at flytte, shift+træk for at kopiere + </text> <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Kredsløb (Ctrl)" name="radio orbit"/> - <radio_item label="Panorér (Ctrl-Shift)" name="radio pan"/> + <radio_item label="Panorér (Ctrl+Shift)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Flyt" name="radio move"/> <radio_item label="Løft (Ctrl)" name="radio lift"/> - <radio_item label="Spin (Ctrl-Shift)" name="radio spin"/> + <radio_item label="Spin (Ctrl+Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> - <radio_item label="Position" name="radio position"/> + <radio_item label="Flyt" name="radio position"/> <radio_item label="Rotér (Ctrl)" name="radio rotate"/> - <radio_item label="Stræk (Ctrl-Shift)" name="radio stretch"/> - <radio_item label="Vælg tekstur" name="radio select face"/> + <radio_item label="Stræk (Ctrl+Shift)" name="radio stretch"/> + <radio_item label="Vælg overflade" name="radio select face"/> </radio_group> <check_box label="Redigér sammenlænkede dele" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Lineal: + <text name="RenderingCost" tool_tip="Hvis beregnede rendering omkostninger for dette objekt"> + þ: [COUNT] </text> - <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Verden"/> - <combo_box.item name="Local" label="Lokal"/> - <combo_box.item name="Reference" label="Reference"/> - </combo_box> <check_box label="Stræk begge sider" name="checkbox uniform"/> - <check_box label="Stræk teksturer" name="checkbox stretch textures"/> - <check_box label="Benyt gitter" name="checkbox snap to grid"/> - <button label="Valg..." label_selected="Valg..." name="Options..." height="18" bottom_delta="-15"/> - <text name="text status"> - Træk for at flytte, shift+træk for at kopiere - </text> - <button label="" label_selected="" name="ToolCube" tool_tip="Terning" /> - <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme" /> - <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide" /> - <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraed" /> - <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder" /> - <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Hemicylinder" /> - <button label="" label_selected="" name="ToolCone" tool_tip="Kegle" /> - <button label="" label_selected="" name="ToolHemiCone" tool_tip="Hemikegle" /> - <button label="" label_selected="" name="ToolSphere" tool_tip="Sfære" /> - <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Hemisfære" /> - <button label="" label_selected="" name="ToolTorus" tool_tip="Kuglering" /> - <button label="" label_selected="" name="ToolTube" tool_tip="Rør" /> - <button label="" label_selected="" name="ToolRing" tool_tip="Ring" /> - <button label="" label_selected="" name="ToolTree" tool_tip="Træ" /> - <button label="" label_selected="" name="ToolGrass" tool_tip="Græs" /> - <check_box label="Hold værktøjet valgt" name="checkbox sticky" /> - <check_box label="Kopiér valgte" name="checkbox copy selection" /> - <check_box label="Centreret kopi" name="checkbox copy centers" /> - <check_box label="Rotér" name="checkbox copy rotates" /> + <check_box initial_value="true" label="Stræk teksturer" name="checkbox stretch textures"/> + <check_box initial_value="true" label="Benyt gitter" name="checkbox snap to grid"/> + <combo_box name="combobox grid mode" tool_tip="Vælg hvilken type lineal der skal bruges til positionering af objekt"> + <combo_box.item label="Verden" name="World"/> + <combo_box.item label="Lokalt" name="Local"/> + <combo_box.item label="Reference" name="Reference"/> + </combo_box> + <button bottom_delta="-15" height="18" label="Valg..." label_selected="Valg..." name="Options..." tool_tip="Se flere muligheder for gitter"/> + <button label="" label_selected="" name="ToolCube" tool_tip="Terning"/> + <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme"/> + <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> + <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraed"/> + <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder"/> + <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Hemicylinder"/> + <button label="" label_selected="" name="ToolCone" tool_tip="Kegle"/> + <button label="" label_selected="" name="ToolHemiCone" tool_tip="Hemikegle"/> + <button label="" label_selected="" name="ToolSphere" tool_tip="Sfære"/> + <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Hemisfære"/> + <button label="" label_selected="" name="ToolTorus" tool_tip="Kuglering"/> + <button label="" label_selected="" name="ToolTube" tool_tip="Rør"/> + <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/> + <button label="" label_selected="" name="ToolTree" tool_tip="Træ"/> + <button label="" label_selected="" name="ToolGrass" tool_tip="Græs"/> + <check_box label="Hold værktøjet valgt" name="checkbox sticky"/> + <check_box label="Kopier valgte" name="checkbox copy selection"/> + <check_box initial_value="true" label="Centreret kopi" name="checkbox copy centers"/> + <check_box label="Rotér kopi" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> - <radio_item label="Vælg" name="radio select land" /> - <radio_item label="Udflad" name="radio flatten" /> - <radio_item label="Hæv" name="radio raise" /> - <radio_item label="Sænk" name="radio lower" /> - <radio_item label="Udjævn" name="radio smooth" /> - <radio_item label="Gør ujævnt" name="radio noise" /> - <radio_item label="Tilbagefør" name="radio revert" /> + <radio_item label="Vælg" name="radio select land"/> + <radio_item label="Udflad" name="radio flatten"/> + <radio_item label="Hæv" name="radio raise"/> + <radio_item label="Sænk" name="radio lower"/> + <radio_item label="Udjævn" name="radio smooth"/> + <radio_item label="Gør ujævnt" name="radio noise"/> + <radio_item label="Tilbagefør" name="radio revert"/> </radio_group> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Lille"/> - <combo_box.item name="Medium" label="Mellem"/> - <combo_box.item name="Large" label="Stor"/> - </combo_box> - <text name="Strength:"> - Styrke: - </text> <text name="Dozer Size:"> Størrelse </text> <text name="Strength:"> - Styrke + Styrke: </text> + <button label="Apply" label_selected="Apply" name="button apply to selection" tool_tip="Ændre valgte land"/> <text name="obj_count"> - Valgte objekter: [COUNT] + Objekter: [COUNT] </text> <text name="prim_count"> - prims: [COUNT] + Prims: [COUNT] </text> <tab_container name="Object Info Tabs"> <panel label="Generelt" name="General"> + <panel.string name="text deed continued"> + Dedikér + </panel.string> + <panel.string name="text deed"> + Deed + </panel.string> + <panel.string name="text modify info 1"> + Du kan ændre dette objekt + </panel.string> + <panel.string name="text modify info 2"> + Du kan ændre disse objekter + </panel.string> + <panel.string name="text modify info 3"> + Du kan ikke ændre dette objekt + </panel.string> + <panel.string name="text modify info 4"> + Du kan ikke ændre disse objekter + </panel.string> + <panel.string name="text modify warning"> + Du skal vælge hele objektet for at sætte rettigheder + </panel.string> + <panel.string name="Cost Default"> + Pris: L$ + </panel.string> + <panel.string name="Cost Total"> + Total pris: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Pris pr: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Blandet pris + </panel.string> + <panel.string name="Sale Mixed"> + Blandet salg + </panel.string> <text name="Name:"> Navn: </text> @@ -99,128 +167,77 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button creator profile"/> <text name="Owner:"> Ejer: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button owner profile"/> <text name="Group:"> Gruppe: </text> - <text name="Group Name Proxy"> - The Lindens - </text> - <button label="Sæt..." label_selected="Sæt..." name="button set group"/> - <text name="Permissions:"> - Tilladelser: - </text> - - <check_box label="Del med gruppe" name="checkbox share with group" tool_tip="Tillad gruppemedlemmer at flytte, ændre, kopiere og slette."/> - <string name="text deed continued"> - Deed... - </string> - <string name="text deed"> - Deed - </string> - <button label="Dedikér..." label_selected="Dedikér..." name="button deed" tool_tip="Gruppedelte genstande kan dedikeres af en gruppeadministrator."/> - <check_box label="Tillad enhver at flytte" name="checkbox allow everyone move"/> - <check_box label="Tillad enhver at kopiére" name="checkbox allow everyone copy"/> - <check_box label="Vis i søgning" name="search_check" tool_tip="Lad folk se dette objekt i søgeresultater"/> - <check_box label="Til salg" name="checkbox for sale"/> - <text name="Cost"> - Pris: L$ + <button label="Sæt..." label_selected="Sæt..." name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/> + <name_box initial_value="Henter..." name="Group Name Proxy"/> + <button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med rettighederne for 'næste ejer'. Gruppe-delte objekter kan dedikeres af gruppe-administrator."/> + <check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle medlemmer fra den valgte gruppe at dele dine 'redigere' rettigheder for dette objekt. Du skal dedikere for Ã¥bne for rolle begrænsninger."/> + <text name="label click action"> + Klik for at: </text> + <combo_box name="clickaction"> + <combo_box.item label="Rør (Standard)" name="Touch/grab(default)"/> + <combo_box.item label="Sid pÃ¥ objekt" name="Sitonobject"/> + <combo_box.item label="Køb objekt" name="Buyobject"/> + <combo_box.item label="Betal objekt" name="Payobject"/> + <combo_box.item label="Ã…ben" name="Open"/> + <combo_box.item label="Zoom" name="Zoom"/> + </combo_box> + <check_box label="Til salg:" name="checkbox for sale"/> <combo_box name="sale type"> <combo_box.item label="Kopi" name="Copy"/> <combo_box.item label="Indhold" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> - - <text name="label click action"> - NÃ¥r der venstreklikkes: - </text> - <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Rør/tag (standard)"/> - <combo_box.item name="Sitonobject" label="Sid pÃ¥ objekt"/> - <combo_box.item name="Buyobject" label="Køb objekt"/> - <combo_box.item name="Payobject" label="Betal objekt"/> - <combo_box.item name="Open" label="Ã…ben"/> - <combo_box.item name="Play" label="Afspil medie pÃ¥ parcel"/> - <combo_box.item name="Opemmedia" label="Ã…ben media pÃ¥ parcel"/> - </combo_box> - <panel name="perms_build"> - <text name="perm_modify"> - Du kan redigére dette objekt - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> - <text name="Next owner can:"> - Næste ejer kan: - </text> - <check_box label="Redigére" name="checkbox next owner can modify"/> - <check_box label="Kopiére" name="checkbox next owner can copy" left_delta="80"/> - <check_box name="checkbox next owner can transfer" left_delta="67"/> - </panel> - <string name="text modify info 1"> - Du kan redigere dette objekt - </string> - <string name="text modify info 2"> - Du kan redigere disse objekter - </string> - <string name="text modify info 3"> - Du kan ikke redigere dette objekt - </string> - <string name="text modify info 4"> - Du kan ikke redigere disse objekter - </string> - <string name="text modify warning"> - Du skal vælge hele objektet for at sætte rettigheder - </string> - <string name="Cost Default"> - Pris: L$ - </string> - <string name="Cost Total"> - Total pris: L$ - </string> - <string name="Cost Per Unit"> - Pris Pr: L$ - </string> - <string name="Cost Mixed"> - Blandet pris - </string> - <string name="Sale Mixed"> - Blandet salg - </string> + <spinner label="Pris: L$" name="Edit Cost"/> + <check_box label="Vis i søgning" name="search_check" tool_tip="Lad folk se dette objekt i søgeresultater"/> + <panel name="perms_build"> + <text name="perm_modify"> + Du kan redigere dette objekt + </text> + <text name="Anyone can:"> + Enhver: + </text> + <check_box label="Flyt" name="checkbox allow everyone move"/> + <check_box label="Kopi" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Næste ejer: + </text> + <check_box label="Redigére" name="checkbox next owner can modify"/> + <check_box label="Kopiére" left_delta="80" name="checkbox next owner can copy"/> + <check_box label="Sælge/give væk" left_delta="67" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + </panel> </panel> <panel label="Objekt" name="Object"> - <text name="select_single"> - Vælg kun én prim for at ændre indstillinger. - </text> - <text name="edit_object"> - Ret objektets indstillinger: - </text> <check_box label="LÃ¥st" name="checkbox locked" tool_tip="Forhindrer objektet i at blive flyttet eller slettet. Ofte brugbar under byggeri for at forhindre utilsigtet ændring."/> <check_box label="Fysisk" name="Physical Checkbox Ctrl" tool_tip="Tillader objekter at blive skubbet og at være pÃ¥virkelig af tyngdekraften"/> - <check_box label="Temporær" name="Temporary Checkbox Ctrl" tool_tip="MedfÃ¥rer at objekter bliver slettet 1 minut efter de er skabt."/> + <check_box label="Temporær" name="Temporary Checkbox Ctrl" tool_tip="Medfører at objekt slettes 1 minut efter skabelse"/> <check_box label="Uden masse" name="Phantom Checkbox Ctrl" tool_tip="FÃ¥r objektet til ikke at kollidere med andre objekter eller personer"/> <text name="label position"> Position (meter) @@ -240,33 +257,27 @@ <spinner label="X" name="Rot X"/> <spinner label="Y" name="Rot Y"/> <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Materiale - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Sten"/> - <combo_box.item name="Metal" label="Metal"/> - <combo_box.item name="Glass" label="Glas"/> - <combo_box.item name="Wood" label="Træ"/> - <combo_box.item name="Flesh" label="Kød"/> - <combo_box.item name="Plastic" label="Plastik"/> - <combo_box.item name="Rubber" label="Gummi"/> - </combo_box> - <text name="label basetype"> - Byggegeometrisk figur - </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Terning"/> - <combo_box.item name="Cylinder" label="Cylinder"/> - <combo_box.item name="Prism" label="Prisme"/> - <combo_box.item name="Sphere" label="Spfære"/> - <combo_box.item name="Torus" label="Kuglering"/> - <combo_box.item name="Tube" label="Rør"/> - <combo_box.item name="Ring" label="Ring"/> - <combo_box.item name="Sculpted" label="Sculpted"/> + <combo_box.item label="Terning" name="Box"/> + <combo_box.item label="Cylinder" name="Cylinder"/> + <combo_box.item label="Prisme" name="Prism"/> + <combo_box.item label="Spfære" name="Sphere"/> + <combo_box.item label="Kuglering" name="Torus"/> + <combo_box.item label="Rør" name="Tube"/> + <combo_box.item label="Ring" name="Ring"/> + <combo_box.item label="Sculpted" name="Sculpted"/> + </combo_box> + <combo_box name="material"> + <combo_box.item label="Sten" name="Stone"/> + <combo_box.item label="Metal" name="Metal"/> + <combo_box.item label="Glas" name="Glass"/> + <combo_box.item label="Træ" name="Wood"/> + <combo_box.item label="Kød" name="Flesh"/> + <combo_box.item label="Plastik" name="Plastic"/> + <combo_box.item label="Gummi" name="Rubber"/> </combo_box> <text name="text cut"> - Snit begynd og slut + Snit Z-akse (start/slut) </text> <spinner label="B" name="cut begin"/> <spinner label="S" name="cut end"/> @@ -280,13 +291,13 @@ Form pÃ¥ hul </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Standard"/> - <combo_box.item name="Circle" label="Cirkel"/> - <combo_box.item name="Square" label="Firkant"/> - <combo_box.item name="Triangle" label="Trekant"/> + <combo_box.item label="Standard" name="Default"/> + <combo_box.item label="Cirkel" name="Circle"/> + <combo_box.item label="Firkant" name="Square"/> + <combo_box.item label="Trekant" name="Triangle"/> </combo_box> <text name="text twist"> - Vrid begynd og slut + Vrid (start/slut) </text> <spinner label="B" name="Twist Begin"/> <spinner label="S" name="Twist End"/> @@ -304,13 +315,13 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut"> - Profilsnit begynd og slut + Snit - radial (start/slut) </text> <text name="advanced_dimple"> - Fordybning begynd og slut + Fordybning (Start/slut) </text> <text name="advanced_slice"> - Snit begynd og slut + Skive (start/slut) </text> <spinner label="B" name="Path Limit Begin"/> <spinner label="S" name="Path Limit End"/> @@ -326,17 +337,17 @@ Omdrejninger </text> <texture_picker label="Sculpt tekstur" name="sculpt texture control" tool_tip="Klik her for at vælge billede"/> - <check_box label="Spejlet" name="sculpt mirror control" tool_tip="Spejler sculpted prim omkring X aksen."/> - <check_box label="Vrangen ud" name="sculpt invert control" tool_tip="Vender 'vrangen' ud pÃ¥ sculpted prim."/> + <check_box label="Spejlet" name="sculpt mirror control" tool_tip="Spejler sculpted prim omkring X akse"/> + <check_box label="Vrangen ud" name="sculpt invert control" tool_tip="Vender 'vrangen ud' pÃ¥ sculpted prim"/> <text name="label sculpt type"> Sting type </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="(ingen)"/> - <combo_box.item name="Sphere" label="Sfære"/> - <combo_box.item name="Torus" label="Kuglering"/> - <combo_box.item name="Plane" label="Plan"/> - <combo_box.item name="Cylinder" label="Cylinder"/> + <combo_box.item label="(ingen)" name="None"/> + <combo_box.item label="Sfære" name="Sphere"/> + <combo_box.item label="Kuglering" name="Torus"/> + <combo_box.item label="Plan" name="Plane"/> + <combo_box.item label="Cylinder" name="Cylinder"/> </combo_box> </panel> <panel label="Features" name="Features"> @@ -346,107 +357,106 @@ <text name="edit_object"> Redigér objektets egenskaber: </text> - <check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" tool_tip="Tillader objektet at ændre form omkring Z-aksen. (Kun pÃ¥ klient-siden)"/> - <spinner label_width="78" width="141" label="Blødhed" name="FlexNumSections"/> - <spinner label_width="78" width="141" label="Tyngdekraft" name="FlexGravity"/> - <spinner label_width="78" width="141" label="Træk" name="FlexFriction"/> - <spinner label_width="78" width="141" label="Vind" name="FlexWind"/> - <spinner label_width="78" width="141" label="Spændstighed" name="FlexTension"/> - <spinner label_width="78" width="141" label="Kraft X" name="FlexForceX"/> - <spinner label_width="78" width="141" label="Kraft Y" name="FlexForceY"/> - <spinner label_width="78" width="141" label="Kraft Z" name="FlexForceZ"/> + <check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" tool_tip="Tillader objektet at flekse omkring Z aksen (kun pÃ¥ klient siden)"/> + <spinner label="Blødhed" label_width="78" name="FlexNumSections" width="141"/> + <spinner label="Tyngdekraft" label_width="78" name="FlexGravity" width="141"/> + <spinner label="Træk" label_width="78" name="FlexFriction" width="141"/> + <spinner label="Vind" label_width="78" name="FlexWind" width="141"/> + <spinner label="Spændstighed" label_width="78" name="FlexTension" width="141"/> + <spinner label="Kraft X" label_width="78" name="FlexForceX" width="141"/> + <spinner label="Kraft Y" label_width="78" name="FlexForceY" width="141"/> + <spinner label="Kraft Z" label_width="78" name="FlexForceZ" width="141"/> <check_box label="Lys" name="Light Checkbox Ctrl" tool_tip="MedfÃ¥rer at objektet afgiver lys"/> - <text name="label color"> - Farve - </text> <color_swatch label="" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger"/> + <texture_picker label="" name="light texture control" tool_tip="Klik for at vælge billede til projektion (har kun effekt hvis 'deferred rendering' er aktiveret)"/> <spinner label="Intensitet" name="Light Intensity"/> + <spinner label="Synsvidde" name="Light FOV"/> <spinner label="Radius" name="Light Radius"/> + <spinner label="Fokus" name="Light Focus"/> <spinner label="Udfasning" name="Light Falloff"/> + <spinner label="Omgivelser" name="Light Ambiance"/> </panel> <panel label="Tekstur" name="Texture"> + <panel.string name="string repeats per meter"> + Gentagelser pr. meter + </panel.string> + <panel.string name="string repeats per face"> + Gentagelser pr. overflade + </panel.string> <texture_picker label="Tekstur" name="texture control" tool_tip="Klik for at vælge billede"/> <color_swatch label="Farve" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger"/> - <text name="color trans" left="170" width="105"> + <text left="170" name="color trans" width="105"> Gennemsigtighed% </text> <spinner left="171" name="ColorTrans"/> - <text name="glow label" left="170"> + <text left="170" name="glow label"> Glød </text> <spinner left="170" name="glow"/> - <check_box label="Selvlysende" name="checkbox fullbright" left="170"/> + <check_box label="Selvlysende" left="170" name="checkbox fullbright"/> <text name="tex gen"> Afbildning </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Standard"/> - <combo_box.item name="Planar" label="Plan"/> + <combo_box.item label="Standard" name="Default"/> + <combo_box.item label="Plan" name="Planar"/> </combo_box> <text name="label shininess"> Blankhed </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Ingen"/> - <combo_box.item name="Low" label="Lav"/> - <combo_box.item name="Medium" label="Mellem"/> - <combo_box.item name="High" label="Høj"/> + <combo_box.item label="Ingen" name="None"/> + <combo_box.item label="Lav" name="Low"/> + <combo_box.item label="Mellem" name="Medium"/> + <combo_box.item label="Høj" name="High"/> </combo_box> <text name="label bumpiness"> Struktur </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Ingen"/> - <combo_box.item name="Brightness" label="Lysintensitet"/> - <combo_box.item name="Darkness" label="Mørke"/> - <combo_box.item name="woodgrain" label="træårer"/> - <combo_box.item name="bark" label="bark"/> - <combo_box.item name="bricks" label="mursten"/> - <combo_box.item name="checker" label="tern"/> - <combo_box.item name="concrete" label="beton"/> - <combo_box.item name="crustytile" label="rustik flise"/> - <combo_box.item name="cutstone" label="SkÃ¥ret sten"/> - <combo_box.item name="discs" label="plader"/> - <combo_box.item name="gravel" label="grus"/> - <combo_box.item name="petridish" label="petriskÃ¥l"/> - <combo_box.item name="siding" label="udvendig beklædning"/> - <combo_box.item name="stonetile" label="stenflise"/> - <combo_box.item name="stucco" label="puds"/> - <combo_box.item name="suction" label="rør"/> - <combo_box.item name="weave" label="væv"/> + <combo_box.item label="Ingen" name="None"/> + <combo_box.item label="Lysintensitet" name="Brightness"/> + <combo_box.item label="Mørke" name="Darkness"/> + <combo_box.item label="træårer" name="woodgrain"/> + <combo_box.item label="bark" name="bark"/> + <combo_box.item label="mursten" name="bricks"/> + <combo_box.item label="tern" name="checker"/> + <combo_box.item label="beton" name="concrete"/> + <combo_box.item label="rustik flise" name="crustytile"/> + <combo_box.item label="SkÃ¥ret sten" name="cutstone"/> + <combo_box.item label="plader" name="discs"/> + <combo_box.item label="grus" name="gravel"/> + <combo_box.item label="petriskÃ¥l" name="petridish"/> + <combo_box.item label="udvendig beklædning" name="siding"/> + <combo_box.item label="stenflise" name="stonetile"/> + <combo_box.item label="puds" name="stucco"/> + <combo_box.item label="rør" name="suction"/> + <combo_box.item label="væv" name="weave"/> </combo_box> <text name="tex scale"> - Gentagelser pr. overflade + Gentagelser pÃ¥ overflade </text> <spinner label="Vandret (U)" name="TexScaleU"/> <check_box label="Vend" name="checkbox flip s"/> <spinner label="Lodret (V)" name="TexScaleV"/> <check_box label="Vend" name="checkbox flip t"/> - <text name="tex rotate"> - Rotation (grader) - </text> - <string name="string repeats per meter"> - Gentagelser pr. meter - </string> - <string name="string repeats per face"> - Gentagelser pr. overflade - </string> - <text name="rpt"> - Gentagelser pr. meter - </text> - <spinner left="125" name="TexRot" width="55" /> - <spinner left="125" name="rptctrl" width="55" /> - <button label="Gem" label_selected="Gem" name="button apply" left_delta="62"/> + <spinner label="RotationËš" left="125" name="TexRot" width="55"/> + <spinner label="Gentagelser pr. meter" left="125" name="rptctrl" width="55"/> + <button label="Gem" label_selected="Gem" left_delta="62" name="button apply"/> <text name="tex offset"> - Offset + Tekstur offset </text> <spinner label="Vandret (U)" name="TexOffsetU"/> <spinner label="Lodret (V)" name="TexOffsetV"/> - <text name="textbox autofix"> - Rette medie tekstur ind -(skal indlæses først) - </text> - <button label="Ret ind" label_selected="Ret ind" name="button align" left="160"/> + <panel name="Add_Media"> + <text name="media_tex"> + Media + </text> + <button name="add_media" tool_tip="Tilføj media"/> + <button name="delete_media" tool_tip="Slet denne media tekstur"/> + <button name="edit_media" tool_tip="Redigér dette media"/> + <button label="Flugt" label_selected="Flugt Media" name="button align" tool_tip="Flugt media tekstur (skal hentes først)"/> + </panel> </panel> <panel label="Indhold" name="Contents"> <button label="Nyt script" label_selected="Nyt script" name="button new script"/> @@ -458,14 +468,20 @@ Parcel information </text> <text name="label_area_price"> - Pris: L$[PRICE] for [AREA] m². + Pris: L$[PRICE] for [AREA] m² </text> <text name="label_area"> - OmrÃ¥de: [AREA] m². + Areal: [AREA] m² </text> - <button label="Om land..." label_selected="Om land..." name="button about land"/> - <check_box label="Vis ejere" name="checkbox show owners" tool_tip="Farver grunde afhængigt af ejerskab: Grøn = Dit land Turkis = Din gruppes land Rød = Ejet af andre Gul = Til salg Lilla = PÃ¥ auktion GrÃ¥ = Offentligt ejet"/> - <button label="?" label_selected="?" name="button show owners help"/> + <button label="Om land" label_selected="Om land" name="button about land"/> + <check_box label="Vis ejere" name="checkbox show owners" tool_tip="Farver grunde afhængigt af ejerskab: + +Grøn = Dit land +Turkis = Din gruppes land +Rød = Ejet af andre +Gul = Til salg +Lilla = PÃ¥ auktion +GrÃ¥ = Offentligt ejet"/> <text name="label_parcel_modify"> Redigere grund </text> @@ -475,45 +491,6 @@ Transaktioner for land </text> <button label="Køb land" label_selected="Køb land" name="button buy land"/> - <button label="Flyt fra land" label_selected="Flyt fra land" name="button abandon land"/> + <button label="Efterlad land" label_selected="Efterlad land" name="button abandon land"/> </panel> - <floater.string name="status_rotate"> - Træk i de farvede bÃ¥nd for at rotere objekt - </floater.string> - <floater.string name="status_scale"> - Klik og træk for at strække valgte side - </floater.string> - <floater.string name="status_move"> - Træk for at flytte, hold shift nede for at kopiere - </floater.string> - <floater.string name="status_modifyland"> - Klik og hold for at redigere land - </floater.string> - <floater.string name="status_camera"> - Klik og træk for at ændre synsvinkel - </floater.string> - <floater.string name="status_grab"> - Træk for at flytte objekter, Ctrl for at løfte, Ctrl-Shift for at rotere - </floater.string> - <floater.string name="status_place"> - Klik et sted i verden for at bygge - </floater.string> - <floater.string name="status_selectland"> - Klik og træk for at vælge land - </floater.string> - <floater.string name="grid_screen_text"> - Skærm - </floater.string> - <floater.string name="grid_local_text"> - Lokalt - </floater.string> - <floater.string name="grid_world_text"> - Verden - </floater.string> - <floater.string name="grid_reference_text"> - Reference - </floater.string> - <floater.string name="grid_attachment_text"> - Vedhæng - </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_voice_controls.xml b/indra/newview/skins/default/xui/da/floater_voice_controls.xml new file mode 100644 index 00000000000..8651851233d --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_voice_controls.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Stemme opsætning"> + <string name="title_nearby"> + STEMMER NÆR + </string> + <string name="title_group"> + Gruppe opkald med [GROUP] + </string> + <string name="title_adhoc"> + Konference kald + </string> + <string name="title_peer_2_peer"> + Opkald med [NAME] + </string> + <string name="no_one_near"> + Ingen nær + </string> + <panel name="control_panel"> + <layout_stack> + <layout_panel name="leave_btn_panel"> + <button label="Forlad opkald" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml index 62930716ce4..137e8509a4c 100644 --- a/indra/newview/skins/default/xui/da/floater_world_map.xml +++ b/indra/newview/skins/default/xui/da/floater_world_map.xml @@ -1,57 +1,69 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="VERDENSKORT"> - <tab_container name="maptab"> - <panel label="Objekter" name="objects_mapview"/> - <panel label="Terræn" name="terrain_mapview"/> - </tab_container> - <text name="you_label"> - Dig - </text> - <text name="home_label"> - Hjem - </text> - <text name="auction_label"> - Auktion - </text> - <text name="land_for_sale_label"> - Land til salg - </text> - <button label="Tag hjem" label_selected="Tag hjem" name="Go Home" tool_tip="Teleporter til dit hjem"/> - <check_box label="Beboer" name="people_chk"/> - <check_box label="Infohub" name="infohub_chk"/> - <check_box label="Telehub" name="telehubchk"/> - <check_box label="Land til salg" name="land_for_sale_chk"/> - <text name="events_label"> - Events: - </text> - <check_box label="PG" name="event_chk"/> - <check_box label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <combo_box label="Venner online" name="friend combo" tool_tip="Ven der skal vises pÃ¥ kortet"> - <combo_box.item name="item1" label="Venner online" /> - </combo_box> - <combo_box label="Landemærker" name="landmark combo" tool_tip="Landemærke der skal vises pÃ¥ kortet"> - <combo_box.item name="item1" label="Landemærker" /> - </combo_box> - <line_editor label="Søg pÃ¥ region navn" name="location" tool_tip="Skriv navnet pÃ¥ en region"/> - <button label="Søg" name="DoSearch" tool_tip="Søg efter en region"/> - <text name="search_label"> - Søgeresultater: - </text> - <scroll_list name="search_results"> - <column label="" name="icon"/> - <column label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - Lokation: - </text> - <spinner name="spin x" tool_tip="X koordinat for lokation der skal vises pÃ¥ kortet"/> - <spinner name="spin y" tool_tip="Y koordinat for lokation der skal vises pÃ¥ kortet"/> - <spinner name="spin z" tool_tip="Z koordinat for lokation der skal vises pÃ¥ kortet"/> - <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleportér til den valgte lokation"/> - <button label="Vis destination" label_selected="Vis destination" name="Show Destination" tool_tip="Centrér kortet pÃ¥ valgte lokation"/> - <button label="Slet" label_selected="Slet" name="Clear" tool_tip="Stop søg"/> - <button label="Vis min position" label_selected="Vis min position" name="Show My Location" tool_tip="Centrer kortet pÃ¥ din avatars lokation"/> - <button label="Kopiér SLurl til udklipsholder" name="copy_slurl" tool_tip="Kopierer den nuværende lokation som et SLurl, sÃ¥ det kan bruges pÃ¥ nettet."/> - <slider label="Zoom" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + Forklaring + </text> + </panel> + <panel> + <button label="Vis min position" label_selected="Vis min position" name="Show My Location" tool_tip="Centrér kort om min avatars position"/> + <text name="person_label"> + Mig + </text> + <check_box label="Beboer" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <text name="infohub_label"> + Infohub + </text> + <check_box label="Land til salg" name="land_for_sale_chk"/> + <text name="land_sale_label"> + Land til salg + </text> + <text name="auction_label"> + af ejer + </text> + <button label="Tag hjem" label_selected="Tag hjem" name="Go Home" tool_tip="Teleportér til min hjemmelokation"/> + <text name="Home_label"> + Hjem + </text> + <text name="events_label"> + Events: + </text> + <check_box label="PG" name="event_chk"/> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Mature + </text> + <check_box label="Adult" name="event_adult_chk"/> + </panel> + <panel> + <text name="find_on_map_label"> + Find pÃ¥ kort + </text> + </panel> + <panel> + <combo_box label="Venner online" name="friend combo" tool_tip="Vis venner pÃ¥ kort"> + <combo_box.item label="Mine venner online" name="item1"/> + </combo_box> + <combo_box label="Mine landemærker" name="landmark combo" tool_tip="Landemærke der skal vises pÃ¥ kort"> + <combo_box.item label="Mine landemærker" name="item1"/> + </combo_box> + <search_editor label="Regioner efter navn" name="location" tool_tip="Skriv navnet pÃ¥ en region"/> + <button label="Find" name="DoSearch" tool_tip="Søg efter en region"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleportér til den valgte lokation"/> + <button label="Kopiér SLurl" name="copy_slurl" tool_tip="Kopierer denne lokation som SLurl der kan bruges pÃ¥ web."/> + <button label="Vis selektion" label_selected="Vis destination" name="Show Destination" tool_tip="Centrér kortet pÃ¥ valgte lokation"/> + </panel> + <panel> + <text name="zoom_label"> + Zoom + </text> + </panel> + <panel> + <slider label="Zoom" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml new file mode 100644 index 00000000000..1b85544303a --- /dev/null +++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_avatar"> + <string name="Subtitle"> + [AGE] + </string> + <string name="Details"> + [SL_PROFILE] + </string> + <slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/> + <button label="Tilføj ven" name="add_friend_btn"/> + <button label="IM" name="im_btn"/> + <button label="Mere" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="SlÃ¥ stemme-chat fra" name="disable_voice"/> + <button label="SlÃ¥ stemme-chat til" name="enable_voice"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/da/inspect_group.xml b/indra/newview/skins/default/xui/da/inspect_group.xml new file mode 100644 index 00000000000..486c5d8784d --- /dev/null +++ b/indra/newview/skins/default/xui/da/inspect_group.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_group"> + <string name="PrivateGroup"> + Privat gruppe + </string> + <string name="FreeToJoin"> + Ã…ben tilmelding + </string> + <string name="CostToJoin"> + Tilmeldingsgebyr: L$[AMOUNT] + </string> + <string name="YouAreMember"> + Du er meldlem + </string> + <button label="Tilmeld" name="join_btn"/> + <button label="Forlad" name="leave_btn"/> + <button label="Vis profil" name="view_profile_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/inspect_remote_object.xml b/indra/newview/skins/default/xui/da/inspect_remote_object.xml new file mode 100644 index 00000000000..a06452afe69 --- /dev/null +++ b/indra/newview/skins/default/xui/da/inspect_remote_object.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_remote_object"> + <text name="object_owner_label"> + Ejer: + </text> + <button label="Kort" name="map_btn"/> + <button label="Blokér" name="block_btn"/> + <button label="Luk" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/menu_attachment_other.xml b/indra/newview/skins/default/xui/da/menu_attachment_other.xml new file mode 100644 index 00000000000..2cc23e27c70 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Send besked" name="Send IM..."/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Invitér til gruppe" name="Invite..."/> + <menu_item_call label="Blokér" name="Avatar Mute"/> + <menu_item_call label="Rapportér" name="abuse"/> + <menu_item_call label="Frys" name="Freeze..."/> + <menu_item_call label="Smid ud" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Zoom ind" name="Zoom In"/> + <menu_item_call label="Betal" name="Pay..."/> + <menu_item_call label="Objekt profil" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_attachment_self.xml b/indra/newview/skins/default/xui/da/menu_attachment_self.xml new file mode 100644 index 00000000000..306ae96d49f --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Berør" name="Attachment Object Touch"/> + <menu_item_call label="Redigér" name="Edit..."/> + <menu_item_call label="Tag af" name="Detach"/> + <menu_item_call label="Smid" name="Drop"/> + <menu_item_call label="StÃ¥ op" name="Stand Up"/> + <menu_item_call label="Udseende" name="Appearance..."/> + <menu_item_call label="Venner" name="Friends..."/> + <menu_item_call label="Grupper" name="Groups..."/> + <menu_item_call label="Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_icon.xml b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml new file mode 100644 index 00000000000..26b58ce1ab4 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Avatar Icon Menu"> + <menu_item_call label="Profil" name="Show Profile"/> + <menu_item_call label="Send besked..." name="Send IM"/> + <menu_item_call label="Tilføj ven..." name="Add Friend"/> + <menu_item_call label="Fjern ven..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_other.xml b/indra/newview/skins/default/xui/da/menu_avatar_other.xml new file mode 100644 index 00000000000..66d357e7e29 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Besked" name="Send IM..."/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Invitér til gruppe" name="Invite..."/> + <menu_item_call label="Blokér" name="Avatar Mute"/> + <menu_item_call label="Rapportér" name="abuse"/> + <menu_item_call label="Frys" name="Freeze..."/> + <menu_item_call label="Smid ud" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Zoom ind" name="Zoom In"/> + <menu_item_call label="Betal" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml new file mode 100644 index 00000000000..29620fca271 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="StÃ¥ op" name="Stand Up"/> + <context_menu label="Tag af >" name="Take Off >"> + <context_menu label="Tøj >" name="Clothes >"> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Strømper" name="Socks"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Undertrøje" name="Self Undershirt"/> + <menu_item_call label="Underbukser" name="Self Underpants"/> + <menu_item_call label="Tatovering" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alt tøj" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Tag af >" name="Object Detach"/> + <menu_item_call label="Tag alt af" name="Detach All"/> + </context_menu> + <menu_item_call label="Udseende" name="Appearance..."/> + <menu_item_call label="Venner" name="Friends..."/> + <menu_item_call label="Grupper" name="Groups..."/> + <menu_item_call label="Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml new file mode 100644 index 00000000000..dbdeefeaff2 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_bottomtray.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_camera_move_controls_menu"> + <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/> + <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/> + <menu_item_check label="Vis knap" name="ShowCameraButton"/> + <menu_item_check label="Foto knap" name="ShowSnapshotButton"/> + <menu_item_call label="Klip" name="NearbyChatBar_Cut"/> + <menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/> + <menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/> + <menu_item_call label="Slet" name="NearbyChatBar_Delete"/> + <menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_favorites.xml b/indra/newview/skins/default/xui/da/menu_favorites.xml new file mode 100644 index 00000000000..a4793e294cb --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teleportér" name="Teleport To Landmark"/> + <menu_item_call label="Vis/ret landemærke" name="Landmark Open"/> + <menu_item_call label="Kopiér SLurl" name="Copy slurl"/> + <menu_item_call label="Vis pÃ¥ kort" name="Show On Map"/> + <menu_item_call label="Kopiér" name="Landmark Copy"/> + <menu_item_call label="Sæt ind" name="Landmark Paste"/> + <menu_item_call label="Slet" name="Delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_gesture_gear.xml b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml new file mode 100644 index 00000000000..a9010e99b65 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gesture_gear"> + <menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/> + <menu_item_call label="Kopiér" name="copy_gesture"/> + <menu_item_call label="Sæt ind" name="paste"/> + <menu_item_call label="Kopiér UUID" name="copy_uuid"/> + <menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/> + <menu_item_call label="Editér" name="edit_gesture"/> + <menu_item_call label="Undersøg" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_group_plus.xml b/indra/newview/skins/default/xui/da/menu_group_plus.xml new file mode 100644 index 00000000000..97fbec1ed1d --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_group_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Meld ind i gruppe..." name="item_join"/> + <menu_item_call label="Ny gruppe..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_hide_navbar.xml b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml new file mode 100644 index 00000000000..45276adda40 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_navbar_menu"> + <menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..f64a6ad455e --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Afslut" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml new file mode 100644 index 00000000000..b89d9a57895 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet Group Menu"> + <menu_item_call label="Gruppe info" name="Show Profile"/> + <menu_item_call label="Vis session" name="Chat"/> + <menu_item_call label="Afslut session" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml new file mode 100644 index 00000000000..6ebc40a8dd0 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet P2P Menu"> + <menu_item_call label="Profil" name="Show Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Vis session" name="Send IM"/> + <menu_item_call label="Afslut session" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml new file mode 100644 index 00000000000..5b8089bfe08 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Profil" name="view_profile"/> + <menu_item_call label="Tilføj ven" name="add_friend"/> + <menu_item_call label="Besked" name="im"/> + <menu_item_call label="Opkald" name="call"/> + <menu_item_call label="Teleportér" name="teleport"/> + <menu_item_call label="Invitér til gruppe" name="invite_to_group"/> + <menu_item_call label="Blokér" name="block"/> + <menu_item_call label="Rapportér" name="report"/> + <menu_item_call label="Frys" name="freeze"/> + <menu_item_call label="Smid ud" name="eject"/> + <menu_item_call label="Debug" name="debug"/> + <menu_item_call label="Find pÃ¥ kort" name="find_on_map"/> + <menu_item_call label="Zoom ind" name="zoom_in"/> + <menu_item_call label="Betal" name="pay"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml new file mode 100644 index 00000000000..c7bb2a9ead5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Berør" name="touch"/> + <menu_item_call label="Sid her" name="sit"/> + <menu_item_call label="betal" name="pay"/> + <menu_item_call label="Køb" name="buy"/> + <menu_item_call label="Tag" name="take"/> + <menu_item_call label="tag kopi" name="take_copy"/> + <menu_item_call label="Ã…ben" name="open"/> + <menu_item_call label="Redigér" name="edit"/> + <menu_item_call label="Tag pÃ¥" name="wear"/> + <menu_item_call label="Rapportér" name="report"/> + <menu_item_call label="Blokér" name="block"/> + <menu_item_call label="Zoom ind" name="zoom_in"/> + <menu_item_call label="Fjern" name="remove"/> + <menu_item_call label="Mere info" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml new file mode 100644 index 00000000000..cfe455e21da --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="StÃ¥ op" name="stand_up"/> + <menu_item_call label="Udseende" name="my_appearance"/> + <menu_item_call label="Profil" name="my_profile"/> + <menu_item_call label="Venner" name="my_friends"/> + <menu_item_call label="Grupper" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml new file mode 100644 index 00000000000..e643498822b --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <menu_item_call label="Nyt vindue" name="new_window"/> + <menu_item_call label="Sortér efter navn" name="sort_by_name"/> + <menu_item_call label="Sortér efter nyeste" name="sort_by_recent"/> + <menu_item_call label="Vis filtre" name="show_filters"/> + <menu_item_call label="Nulstil filtre" name="reset_filters"/> + <menu_item_call label="Luk alle mapper" name="close_folders"/> + <menu_item_call label="Tøm papirkurv" name="empty_trash"/> + <menu_item_call label="Tøm "fundne genstande"" name="empty_lostnfound"/> + <menu_item_call label="Gem tekstur som" name="Save Texture As"/> + <menu_item_call label="Find original" name="Find Original"/> + <menu_item_call label="Find alle links" name="Find All Links"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_land.xml b/indra/newview/skins/default/xui/da/menu_land.xml new file mode 100644 index 00000000000..1548f18f897 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="Om land" name="Place Information..."/> + <menu_item_call label="Sid her" name="Sit Here"/> + <menu_item_call label="Køb" name="Land Buy"/> + <menu_item_call label="Køb adgang" name="Land Buy Pass"/> + <menu_item_call label="Byg" name="Create"/> + <menu_item_call label="Tilpas terræn" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_landmark.xml b/indra/newview/skins/default/xui/da/menu_landmark.xml new file mode 100644 index 00000000000..3cf2ffe375c --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_landmark.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="landmark_overflow_menu"> + <menu_item_call label="Kopiér SLurl" name="copy"/> + <menu_item_call label="Slet" name="delete"/> + <menu_item_call label="Opret favorit" name="pick"/> + <menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml index 9d9dcd4b2e6..0942f1b807f 100644 --- a/indra/newview/skins/default/xui/da/menu_login.xml +++ b/indra/newview/skins/default/xui/da/menu_login.xml @@ -1,13 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="Filer" name="File"> - <menu_item_call label="Afslut" name="Quit" /> - </menu> - <menu label="Rediger" name="Edit"> - <menu_item_call label="Indstillinger..." name="Preferences..." /> + <menu label="Mig" name="File"> + <menu_item_call label="Indstillinger" name="Preferences..."/> + <menu_item_call label="Afslut" name="Quit"/> </menu> <menu label="Hjælp" name="Help"> - <menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help" /> - <menu_item_call label="Om [APP_NAME]..." name="About Second Life..." /> + <menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/> + </menu> + <menu label="Debug" name="Debug"> + <menu label="Redigér" name="Edit"> + <menu_item_call label="Fortryd" name="Undo"/> + <menu_item_call label="Gendan" name="Redo"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Duplikér" name="Duplicate"/> + <menu_item_call label="Vælg alle" name="Select All"/> + <menu_item_call label="Vælg intet" name="Deselect"/> + </menu> + <menu_item_call label="Vis debug opsætning" name="Debug Settings"/> + <menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/> + <menu_item_call label="Vis sidebakke" name="Show Side Tray"/> + <menu label="UI tests" name="UI Tests"/> + <menu_item_call label="Vis betingelser" name="TOS"/> + <menu_item_call label="Vis vigtig besked" name="Critical"/> + <menu_item_call label="Test i web browser" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml index 2a711dc5be1..667638c5291 100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom tæt" name="Zoom Close"/> <menu_item_call label="Zoom mellem" name="Zoom Medium"/> <menu_item_call label="Zoom langt" name="Zoom Far"/> + <menu_item_check label="Rotér kort" name="Rotate Map"/> <menu_item_call label="Stop Tracking" name="Stop Tracking"/> - <menu_item_call label="Profil..." name="Profile"/> + <menu_item_call label="Verdenskort" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_navbar.xml b/indra/newview/skins/default/xui/da/menu_navbar.xml new file mode 100644 index 00000000000..c04206824ac --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Vis koordinater" name="Show Coordinates"/> + <menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/> + <menu_item_call label="Landemærke" name="Landmark"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Vælg alt" name="Select All"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_nearby_chat.xml b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml new file mode 100644 index 00000000000..be532ad406d --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="NearBy Chat Menu"> + <menu_item_call label="Vis personer tæt pÃ¥..." name="nearby_people"/> + <menu_item_check label="Vis blokeret tekst" name="muted_text"/> + <menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/> + <menu_item_check label="Vis navne" name="show_names"/> + <menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/> + <menu_item_call label="Font størrelse" name="font_size"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml new file mode 100644 index 00000000000..0714b67ec3b --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_object.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Berør" name="Object Touch"/> + <menu_item_call label="Redigér" name="Edit..."/> + <menu_item_call label="Byg" name="Build"/> + <menu_item_call label="Ã…ben" name="Open"/> + <menu_item_call label="Sid her" name="Object Sit"/> + <menu_item_call label="Objekt profil" name="Object Inspect"/> + <context_menu label="Sæt pÃ¥ >" name="Put On"> + <menu_item_call label="Tag pÃ¥" name="Wear"/> + <context_menu label="Vedhæft >" name="Object Attach"/> + <context_menu label="Vedhæft HUD >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Fjern >" name="Remove"> + <menu_item_call label="Tag" name="Pie Object Take"/> + <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/> + <menu_item_call label="Blokér" name="Object Mute"/> + <menu_item_call label="Returnér" name="Return..."/> + <menu_item_call label="Slet" name="Delete"/> + </context_menu> + <menu_item_call label="Tag kopi" name="Take Copy"/> + <menu_item_call label="Betal" name="Pay..."/> + <menu_item_call label="Køb" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_object_icon.xml b/indra/newview/skins/default/xui/da/menu_object_icon.xml new file mode 100644 index 00000000000..08aeb633b64 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_object_icon.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Object Icon Menu"> + <menu_item_call label="Objekt Profil..." name="Object Profile"/> + <menu_item_call label="Blokér..." name="Block"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_participant_list.xml b/indra/newview/skins/default/xui/da/menu_participant_list.xml new file mode 100644 index 00000000000..44a016026c1 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_participant_list.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <menu_item_call label="Profil" name="View Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Send besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> + <menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/> + <menu_item_check label="Sluk for tekst" name="MuteText"/> + <menu_item_check label="Tillad tekst chat" name="AllowTextChat"/> + <menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Sluk for alle andre" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Ã…ben for denne deltager" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Ã…ben for alle andre" name="ModerateVoiceUnMuteOthers"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml new file mode 100644 index 00000000000..525450f23f4 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Sortér efter status" name="sort_status"/> + <menu_item_check label="Vis person ikoner" name="view_icons"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml new file mode 100644 index 00000000000..0b9a791530d --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/> + <menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby.xml b/indra/newview/skins/default/xui/da/menu_people_nearby.xml new file mode 100644 index 00000000000..224190149b2 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_nearby.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Profil" name="View Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> + <menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml new file mode 100644 index 00000000000..92c6d2c960d --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Tilføj venner" name="Add Friends"/> + <menu_item_call label="Besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml new file mode 100644 index 00000000000..2f35ff3c92c --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Sortér efter afstand" name="sort_distance"/> + <menu_item_check label="Se ikoner for personer" name="view_icons"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml new file mode 100644 index 00000000000..d081f637f22 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter nyeste" name="sort_most"/> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Vis person ikoner" name="view_icons"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_picks_plus.xml b/indra/newview/skins/default/xui/da/menu_picks_plus.xml new file mode 100644 index 00000000000..d95071fbbb0 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_picks_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="picks_plus_menu"> + <menu_item_call label="Ny favorit" name="create_pick"/> + <menu_item_call label="Ny annonce" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_place.xml b/indra/newview/skins/default/xui/da/menu_place.xml new file mode 100644 index 00000000000..b87964ac142 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_place.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="place_overflow_menu"> + <menu_item_call label="Opret et landemærke" name="landmark"/> + <menu_item_call label="Opret favorit" name="pick"/> + <menu_item_call label="Køb adgang" name="pass"/> + <menu_item_call label="Redigér" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_place_add_button.xml b/indra/newview/skins/default/xui/da/menu_place_add_button.xml new file mode 100644 index 00000000000..7ad22535503 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_place_add_button.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Opret mappe" name="add_folder"/> + <menu_item_call label="Tilføj landemærke" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml new file mode 100644 index 00000000000..3ee3c02fb1a --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Tilføj landemærke" name="add_landmark"/> + <menu_item_call label="Tilføj mappe" name="add_folder"/> + <menu_item_call label="Klip" name="cut"/> + <menu_item_call label="Kopiér" name="copy_folder"/> + <menu_item_call label="Sæt ind" name="paste"/> + <menu_item_call label="Omdøb" name="rename"/> + <menu_item_call label="Slet" name="delete"/> + <menu_item_call label="Udvid" name="expand"/> + <menu_item_call label="Luk" name="collapse"/> + <menu_item_call label="Udvid alle mapper" name="expand_all"/> + <menu_item_call label="Luk alle mapper" name="collapse_all"/> + <menu_item_check label="Sortér efter dato" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_profile_overflow.xml b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml new file mode 100644 index 00000000000..58fbc62643d --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Betal" name="pay"/> + <menu_item_call label="Del" name="share"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_slurl.xml b/indra/newview/skins/default/xui/da/menu_slurl.xml index ef5cfd7200c..a9302e111ea 100644 --- a/indra/newview/skins/default/xui/da/menu_slurl.xml +++ b/indra/newview/skins/default/xui/da/menu_slurl.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="Om URL" name="about_url" /> - <menu_item_call label="Teleportér til URL" name="teleport_to_url" /> - <menu_item_call label="Vis pÃ¥ kort" name="show_on_map" /> + <menu_item_call label="Om URL" name="about_url"/> + <menu_item_call label="Teleportér til URL" name="teleport_to_url"/> + <menu_item_call label="Kort" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml new file mode 100644 index 00000000000..a1c25fea690 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Teleport History Gear Context Menu"> + <menu_item_call label="Udvid alle mapper" name="Expand all folders"/> + <menu_item_call label="Luk alle mapper" name="Collapse all folders"/> + <menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml new file mode 100644 index 00000000000..dbaec62087e --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Teleportér" name="Teleport"/> + <menu_item_call label="Mere information" name="More Information"/> + <menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml new file mode 100644 index 00000000000..c4d4bb4b5b4 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Ã…ben" name="TabOpen"/> + <menu_item_call label="Luk" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_text_editor.xml b/indra/newview/skins/default/xui/da/menu_text_editor.xml new file mode 100644 index 00000000000..3ff31ea232f --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_text_editor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Text editor context menu"> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Vælg alt" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_agent.xml b/indra/newview/skins/default/xui/da/menu_url_agent.xml new file mode 100644 index 00000000000..491586f3b46 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_agent.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis beboer profil" name="show_agent"/> + <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_group.xml b/indra/newview/skins/default/xui/da/menu_url_group.xml new file mode 100644 index 00000000000..c776159b0a2 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis gruppeinformation" name="show_group"/> + <menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_http.xml b/indra/newview/skins/default/xui/da/menu_url_http.xml new file mode 100644 index 00000000000..4398777a391 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_http.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Indlæs" name="url_open"/> + <menu_item_call label="Ã…ben i intern browser" name="url_open_internal"/> + <menu_item_call label="Ã…ben i ekstern browser" name="url_open_external"/> + <menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_inventory.xml b/indra/newview/skins/default/xui/da/menu_url_inventory.xml new file mode 100644 index 00000000000..9a7de23e065 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_inventory.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis beholdningsgenstand" name="show_item"/> + <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_map.xml b/indra/newview/skins/default/xui/da/menu_url_map.xml new file mode 100644 index 00000000000..ff4a4d5174f --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_map.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis pÃ¥ kort" name="show_on_map"/> + <menu_item_call label="Teleport til lokation" name="teleport_to_location"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_objectim.xml b/indra/newview/skins/default/xui/da/menu_url_objectim.xml new file mode 100644 index 00000000000..e27cf849593 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_objectim.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis objekt information" name="show_object"/> + <menu_item_call label="Vis pÃ¥ kort" name="show_on_map"/> + <menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/> + <menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_parcel.xml b/indra/newview/skins/default/xui/da/menu_url_parcel.xml new file mode 100644 index 00000000000..0f21e14f661 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_parcel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis information om parcel" name="show_parcel"/> + <menu_item_call label="Vis pÃ¥ kort" name="show_on_map"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_slapp.xml b/indra/newview/skins/default/xui/da/menu_url_slapp.xml new file mode 100644 index 00000000000..dd25db2aa71 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_slapp.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Kør denne kommando" name="run_slapp"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_slurl.xml b/indra/newview/skins/default/xui/da/menu_url_slurl.xml new file mode 100644 index 00000000000..8d84a138bb7 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_slurl.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis information" name="show_place"/> + <menu_item_call label="Vis pÃ¥ kort" name="show_on_map"/> + <menu_item_call label="Teleportér til lokation" name="teleport_to_location"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_url_teleport.xml b/indra/newview/skins/default/xui/da/menu_url_teleport.xml new file mode 100644 index 00000000000..e0ca7b920db --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_url_teleport.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="Vis pÃ¥ kort" name="show_on_map"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index 6a75e273813..ec0631d54fe 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -1,207 +1,324 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu label="Filer" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Hent" name="upload"> - <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/> - <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Hent mange (L$[COST] per file)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Sæt standard rettigheder..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Luk vindue" name="Close Window"/> - <menu_item_call label="Luk alle vinduer" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Gem tekstur som..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Tag foto" name="Take Snapshot"/> - <menu_item_call label="Tag foto til disk" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Afslut" name="Quit"/> - </menu> - <menu label="Redigér" name="Edit"> - <menu_item_call label="Annullér" name="Undo"/> - <menu_item_call label="Gentag" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Klip" name="Cut"/> - <menu_item_call label="Kopier" name="Copy"/> - <menu_item_call label="Sæt ind" name="Paste"/> - <menu_item_call label="Slet" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Søg..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Vælg alt" name="Select All"/> - <menu_item_call label="Vælg intet" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplikér" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Vedhæft objekt" name="Attach Object"/> - <menu label="Tag objekt af" name="Detach Object"/> - <menu label="Tag tøj af" name="Take Off Clothing"> - <menu_item_call label="Trøje" name="Shirt"/> - <menu_item_call label="Bukser" name="Pants"/> - <menu_item_call label="Sko" name="Shoes"/> - <menu_item_call label="Strømper" name="Socks"/> - <menu_item_call label="Jakke" name="Jacket"/> - <menu_item_call label="Handsker" name="Gloves"/> - <menu_item_call label="Undertrøje" name="Menu Undershirt"/> - <menu_item_call label="Underbukser" name="Menu Underpants"/> - <menu_item_call label="Nederdel" name="Skirt"/> - <menu_item_call label="Alt tøj" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Bevægelser..." name="Gestures..."/> - <menu_item_call label="Profil..." name="Profile..."/> - <menu_item_call label="Udseende..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Venner..." name="Friends..."/> - <menu_item_call label="Grupper..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Indstillinger..." name="Preferences..."/> - </menu> - <menu label="Vis" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Første person" name="Mouselook"/> - <menu_item_check label="Byg" name="Build"/> - <menu_item_check label="Flyv via joystick" name="Joystick Flycam"/> - <menu_item_call label="Nulstil kamera" name="Reset View"/> - <menu_item_call label="Se pÃ¥ sidste chatter" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Værktøjslinie" name="Toolbar"/> - <menu_item_check label="Local chat" name="Chat History"/> - <menu_item_check label="Kommunikér" name="Instant Message"/> + <menu label="Mig" name="Me"> + <menu_item_call label="Indstillinger" name="Preferences"/> + <menu_item_call label="Mit instrumentpanel" name="Manage My Account"/> + <menu_item_call label="Køb L$" name="Buy and Sell L$"/> + <menu_item_call label="Profil" name="Profile"/> + <menu_item_call label="Udseende" name="Appearance"/> <menu_item_check label="Beholdning" name="Inventory"/> - <menu_item_check label="Aktive talere" name="Active Speakers"/> - <menu_item_check label="Vis blokerede avatarer" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Kamera kontrol" name="Camera Controls"/> - <menu_item_check label="Bevægelses kontrol" name="Movement Controls"/> - <menu_item_check label="Verdenskort" name="World Map"/> - <menu_item_check label="Lokalt kort" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Teknisk info" name="Statistics Bar"/> - <menu_item_check label="Parcel skel" name="Property Lines"/> - <menu_item_check label="Visning af ingen adgang" name="Banlines"/> - <menu_item_check label="Grundejere" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Tips visning" name="Hover Tips"> - <menu_item_check label="Vis tips" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Tips om land" name="Land Tips"/> - <menu_item_check label="Tips pÃ¥ alle objekter" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Fremhæv gennemsigtigt" name="Highlight Transparent"/> - <menu_item_check label="Pejlelys" name="beacons"/> - <menu_item_check label="Skjul partikler" name="Hide Particles"/> - <menu_item_check label="Vis HUD vedhæftninger" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Zoom ind" name="Zoom In"/> - <menu_item_call label="Zoom standard" name="Zoom Default"/> - <menu_item_call label="Zoom ud" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Skift fuld skærm/vindue" name="Toggle Fullscreen"/> - <menu_item_call label="Sæt brugerfladestørrelse til normal" name="Set UI Size to Default"/> + <menu_item_call label="Vis beholdning i sidebakke" name="ShowSidetrayInventory"/> + <menu_item_call label="Mine bevægelser" name="Gestures"/> + <menu label="Min status" name="Status"> + <menu_item_call label="Væk" name="Set Away"/> + <menu_item_call label="Optaget" name="Set Busy"/> + </menu> + <menu_item_call label="Anmod om administrator status" name="Request Admin Options"/> + <menu_item_call label="Stop administrator status" name="Leave Admin Options"/> + <menu_item_call label="Afslut [APP_NAME]" name="Quit"/> + </menu> + <menu label="Kommunikér" name="Communicate"> + <menu_item_call label="Venner" name="My Friends"/> + <menu_item_call label="Grupper" name="My Groups"/> + <menu_item_check label="Chat i nærheden" name="Nearby Chat"/> + <menu_item_call label="Personer tæt pÃ¥" name="Active Speakers"/> + <menu_item_check label="Media i nærheden" name="Nearby Media"/> </menu> <menu label="Verden" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Løb" name="Always Run"/> - <menu_item_check label="Flyv" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Opret landemærke her" name="Create Landmark Here"/> - <menu_item_call label="Sæt hjem til her" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleporter hjem" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Sæt 'ikke til stede'" name="Set Away"/> - <menu_item_call label="Sæt 'optaget'" name="Set Busy"/> - <menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/> - <menu_item_call label="Frigiv taster" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Konto historik..." name="Account History..."/> - <menu_item_call label="Vedligehold konto..." name="Manage My Account..."/> - <menu_item_call label="Køb L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mit land..." name="My Land..."/> - <menu_item_call label="Om land..." name="About Land..."/> - <menu_item_call label="Køb land..." name="Buy Land..."/> - <menu_item_call label="Region/Estate..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Indstillinger for omgivelser" name="Environment Settings"> + <menu_item_check label="Flyt" name="Movement Controls"/> + <menu_item_check label="Vis" name="Camera Controls"/> + <menu_item_call label="Om land" name="About Land"/> + <menu_item_call label="Region/Estate" name="Region/Estate"/> + <menu_item_call label="Køb land" name="Buy Land"/> + <menu_item_call label="Mit land" name="My Land"/> + <menu label="Vis" name="Land"> + <menu_item_check label="Ban Lines" name="Ban Lines"/> + <menu_item_check label="Pejlelys" name="beacons"/> + <menu_item_check label="Parcel skel" name="Property Lines"/> + <menu_item_check label="Land-ejere" name="Land Owners"/> + </menu> + <menu label="Landemærker" name="Landmarks"> + <menu_item_call label="Opret landemærke her" name="Create Landmark Here"/> + <menu_item_call label="Sæt hjem til her" name="Set Home to Here"/> + </menu> + <menu_item_call label="Hjem" name="Teleport Home"/> + <menu_item_check label="Mini-kort" name="Mini-Map"/> + <menu_item_check label="Verdenskort" name="World Map"/> + <menu_item_call label="Foto" name="Take Snapshot"/> + <menu label="Sol" name="Environment Settings"> <menu_item_call label="Solopgang" name="Sunrise"/> <menu_item_call label="Middag" name="Noon"/> <menu_item_call label="Solnedgang" name="Sunset"/> <menu_item_call label="Midnat" name="Midnight"/> - <menu_item_call label="Gendan til standard for region" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Benyt tid fra estate" name="Revert to Region Default"/> <menu_item_call label="Redigering af omgivelser" name="Environment Editor"/> </menu> </menu> - <menu label="Funktioner" name="Tools"> - <menu label="Vælg værktøj" name="Select Tool"> - <menu_item_call label="Fokus" name="Focus"/> - <menu_item_call label="Flyt" name="Move"/> - <menu_item_call label="Rediger" name="Edit"/> - <menu_item_call label="Byg" name="Create"/> - <menu_item_call label="Land" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/> - <menu_item_check label="Vælg kun flytbare objekter" name="Select Only Movable Objects"/> - <menu_item_check label="Vælg ved at omkrandse" name="Select By Surrounding"/> - <menu_item_check label="Vis skjulte objekter" name="Show Hidden Selection"/> - <menu_item_check label="Vis lys-radius for valgte" name="Show Light Radius for Selection"/> - <menu_item_check label="Vis guidelys for valgte" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Ret ind til gitter" name="Snap to Grid"/> - <menu_item_call label="Ret XY for objekt ind til gitter" name="Snap Object XY to Grid"/> - <menu_item_call label="Benyt valgte som grundlag for gitter" name="Use Selection for Grid"/> - <menu_item_call label="Gitter indstillinger..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Rediger sammekædede objekter" name="Edit Linked Parts"/> - <menu_item_call label="Sammenkæd" name="Link"/> + <menu label="Byg" name="BuildTools"> + <menu_item_check label="Byg" name="Show Build Tools"/> + <menu label="Vælg byggerværktøj" name="Select Tool"> + <menu_item_call label="Fokus værktøj" name="Focus"/> + <menu_item_call label="Flyt værktøj" name="Move"/> + <menu_item_call label="Redigeringsværktøj" name="Edit"/> + <menu_item_call label="Byg værktøj" name="Create"/> + <menu_item_call label="Land værktøj" name="Land"/> + </menu> + <menu label="Redigér" name="Edit"> + <menu_item_call label="Fortryd" name="Undo"/> + <menu_item_call label="Gendan" name="Redo"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Duplikér" name="Duplicate"/> + <menu_item_call label="Vælg alt" name="Select All"/> + <menu_item_call label="Fravælg" name="Deselect"/> + </menu> + <menu_item_call label="Sammenkæde" name="Link"/> <menu_item_call label="Adskil" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> <menu_item_call label="Fokusér pÃ¥ valgte" name="Focus on Selection"/> - <menu_item_call label="Zoom pÃ¥ valgte" name="Zoom to Selection"/> - <menu_item_call label="Køb objekt" name="Menu Object Take"> - <on_enable userdata="Køb,Tag" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Tag kopi" name="Take Copy"/> - <menu_item_call label="Opdatér ændringer i indhold pÃ¥ objekt" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Vis vindue med advarsler/fejl fra scripts" name="Show Script Warning/Error Window"/> - <menu label="Rekompilér scripts i valgte objekter" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Genstart scripts i valgte objekter" name="Reset Scripts in Selection"/> - <menu_item_call label="Sæt scripts til 'Running' i valgte objekter" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Sæt scripts til ' Not running' i valgte objekter" name="Set Scripts to Not Running in Selection"/> + <menu_item_call label="Zoom til valgte" name="Zoom to Selection"/> + <menu label="Objekt" name="Object"> + <menu_item_call label="Køb" name="Menu Object Take"/> + <menu_item_call label="Tag kopi" name="Take Copy"/> + <menu_item_call label="Opdatér ændringer til beholdning" name="Save Object Back to My Inventory"/> + <menu_item_call label="Opdater ændringer i indhold til objekt" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Scripts" name="Scripts"> + <menu_item_call label="Rekompilér scripts (Mono)" name="Mono"/> + <menu_item_call label="Genoversæt scripts (LSL)" name="LSL"/> + <menu_item_call label="Genstart scripts" name="Reset Scripts"/> + <menu_item_call label="sæt scripts til "Running"" name="Set Scripts to Running"/> + <menu_item_call label="Sæt scripts til "Not Running"" name="Set Scripts to Not Running"/> + </menu> + <menu label="Valg" name="Options"> + <menu_item_check label="Redigér sammenlænkede dele" name="Edit Linked Parts"/> + <menu_item_call label="Sæt standard rettigheder" name="perm prefs"/> + <menu_item_check label="Vis avancerede rettigheder" name="DebugPermissions"/> + <menu label="Selektion" name="Selection"> + <menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/> + <menu_item_check label="Vælg kun flytbare objekter" name="Select Only Movable Objects"/> + <menu_item_check label="Vælg ved at omkrandse" name="Select By Surrounding"/> + </menu> + <menu label="Vis" name="Show"> + <menu_item_check label="Vis skjult selektion" name="Show Hidden Selection"/> + <menu_item_check label="Vis lys-radius for valgte" name="Show Light Radius for Selection"/> + <menu_item_check label="Vis udvælgelses strÃ¥le" name="Show Selection Beam"/> + </menu> + <menu label="Gitter" name="Grid"> + <menu_item_check label="Ret ind til gitter" name="Snap to Grid"/> + <menu_item_call label="Ret XY for objekt ind til gitter" name="Snap Object XY to Grid"/> + <menu_item_call label="Benyt valgte som grundlag for gitter" name="Use Selection for Grid"/> + <menu_item_call label="Gitter valg" name="Grid Options"/> + </menu> + </menu> + <menu label="Vis lænkede dele" name="Select Linked Parts"> + <menu_item_call label="Vælg næste del" name="Select Next Part"/> + <menu_item_call label="Vælg forrige del" name="Select Previous Part"/> + <menu_item_call label="Inkludér næste valg" name="Include Next Part"/> + <menu_item_call label="Inkludér forrige del" name="Include Previous Part"/> + </menu> </menu> <menu label="Hjælp" name="Help"> - <menu_item_call label="[SECOND_LIFE] Hjælp" name="Second Life Help"/> + <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Officiel Linden Blog..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portal om scripts..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Rapporter misbrug..." name="Report Abuse..."/> - <menu_item_call label="Stød, skub & slag..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Lag meter" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Fejlrapport" name="Bug Reporting"> - <menu_item_call label="[SECOND_LIFE] sagsstyring..." name="Public Issue Tracker..."/> - <menu_item_call label="Hjælp til [SECOND_LIFE] sagsstyring..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Om fejlrapportering..." name="Bug Reporing 101..."/> - <menu_item_call label="Anmeld sikkerhedshændelser..." name="Security Issues..."/> - <menu_item_call label="QA Wiki..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Anmeld fejl..." name="Report Bug..."/> - </menu> - <menu_item_call label="Om [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="Rapporter misbrug" name="Report Abuse"/> + <menu_item_call label="Rapportér fejl" name="Report Bug"/> + </menu> + <menu label="Avanceret" name="Advanced"> + <menu_item_check label="Sæt til "væk" efter 30 minutter" name="Go Away/AFK When Idle"/> + <menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/> + <menu_item_call label="Gendan teksturer" name="Rebake Texture"/> + <menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/> + <menu_item_check label="Begræns valg afstand" name="Limit Select Distance"/> + <menu_item_check label="Fjern kamerabegrænsninger" name="Disable Camera Distance"/> + <menu_item_check label="Højopløsningsfoto" name="HighResSnapshot"/> + <menu_item_check label="Lydløse foto's til disk" name="QuietSnapshotsToDisk"/> + <menu_item_check label="Komprimér fotos til disk" name="CompressSnapshotsToDisk"/> + <menu label="Værktøjer til ydelse" name="Performance Tools"> + <menu_item_call label="Lag meter" name="Lag Meter"/> + <menu_item_check label="Statistik bjælke" name="Statistics Bar"/> + <menu_item_check label="Vis avatarers gengivelsesbelastning" name="Avatar Rendering Cost"/> + </menu> + <menu label="Fremhævninger og and sigtbarhed" name="Highlighting and Visibility"> + <menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/> + <menu_item_check label="Skjul partikler" name="Hide Particles"/> + <menu_item_check label="Skjul valgte" name="Hide Selected"/> + <menu_item_check label="Fremhæv gennemsigtigt" name="Highlight Transparent"/> + <menu_item_check label="Vis HUD vedhæftninger" name="Show HUD Attachments"/> + <menu_item_check label="Vis muse-sigte" name="ShowCrosshairs"/> + <menu_item_check label="Vis tips om land" name="Land Tips"/> + </menu> + <menu label="Gengivelsestyper" name="Rendering Types"> + <menu_item_check label="Simpel" name="Simple"/> + <menu_item_check label="Alpha" name="Alpha"/> + <menu_item_check label="Træer" name="Tree"/> + <menu_item_check label="Avatarer" name="Character"/> + <menu_item_check label="SurfacePath" name="SurfacePath"/> + <menu_item_check label="Himmel" name="Sky"/> + <menu_item_check label="Vand" name="Water"/> + <menu_item_check label="Jord" name="Ground"/> + <menu_item_check label="Volume" name="Volume"/> + <menu_item_check label="Græs" name="Grass"/> + <menu_item_check label="Skyer" name="Clouds"/> + <menu_item_check label="Partikler" name="Particles"/> + <menu_item_check label="Bump" name="Bump"/> + </menu> + <menu label="Gengivelsesegenskaber" name="Rendering Features"> + <menu_item_check label="UI" name="UI"/> + <menu_item_check label="Valgte" name="Selected"/> + <menu_item_check label="Fremhævede" name="Highlighted"/> + <menu_item_check label="Dynamiske teksturer" name="Dynamic Textures"/> + <menu_item_check label="Fod skygger" name="Foot Shadows"/> + <menu_item_check label="TÃ¥ge" name="Fog"/> + <menu_item_check label="Fleksible objekter" name="Flexible Objects"/> + </menu> + <menu_item_check label="Kør flere trÃ¥de" name="Run Multiple Threads"/> + <menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/> + <menu_item_check label="Muse udjævning" name="Mouse Smoothing"/> + <menu_item_check label="Vis IM's i lokal chat" name="IMInChat"/> + <menu label="Shortcuts" name="Shortcuts"> + <menu_item_check label="Søg" name="Search"/> + <menu_item_call label="Frigør taster" name="Release Keys"/> + <menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/> + <menu_item_check label="Løb altid" name="Always Run"/> + <menu_item_check label="Flyv" name="Fly"/> + <menu_item_call label="Luk vindue" name="Close Window"/> + <menu_item_call label="Luk alle vinduer" name="Close All Windows"/> + <menu_item_call label="Foto til disk" name="Snapshot to Disk"/> + <menu_item_call label="Første person" name="Mouselook"/> + <menu_item_check label=""Joystick Flycam"" name="Joystick Flycam"/> + <menu_item_call label="Nulstil udsyn" name="Reset View"/> + <menu_item_call label="Se pÃ¥ den sidste der chattede" name="Look at Last Chatter"/> + <menu label="Vælg byggeværktøj" name="Select Tool"> + <menu_item_call label="Fokuseringsværktøj" name="Focus"/> + <menu_item_call label="Flyt værktøj" name="Move"/> + <menu_item_call label="Redigeringsværktøj" name="Edit"/> + <menu_item_call label="Opret værktøj" name="Create"/> + <menu_item_call label="Land værktøj" name="Land"/> + </menu> + <menu_item_call label="Zoom ind" name="Zoom In"/> + <menu_item_call label="Zoom standard" name="Zoom Default"/> + <menu_item_call label="Zoom ud" name="Zoom Out"/> + <menu_item_call label="Skift fuld-skærm" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Vis debug valg" name="Debug Settings"/> + <menu_item_check label="Vis udviklingsmenu" name="Debug Mode"/> + </menu> + <menu label="Udvikling" name="Develop"> + <menu label="Konsoller" name="Consoles"> + <menu_item_check label="Tekstur konsol" name="Texture Console"/> + <menu_item_check label="Debug konsol" name="Debug Console"/> + <menu_item_call label="Konsol med notifikationer" name="Notifications"/> + <menu_item_check label="Tekstur størrelse konsol" name="Texture Size"/> + <menu_item_check label="Konsol med tekstur kategorier" name="Texture Category"/> + <menu_item_check label="Hurtig-timere" name="Fast Timers"/> + <menu_item_check label="Hukommelse" name="Memory"/> + <menu_item_call label="Vis Regionsinfo i debug-konsol" name="Region Info to Debug Console"/> + <menu_item_check label="Kamera" name="Camera"/> + <menu_item_check label="Vind" name="Wind"/> + </menu> + <menu label="Vis info" name="Display Info"> + <menu_item_check label="Vis tid" name="Show Time"/> + <menu_item_check label="Vis gengivelses information" name="Show Render Info"/> + <menu_item_check label="Vis farve under cursor" name="Show Color Under Cursor"/> + <menu_item_check label="Vis opdateringer pÃ¥ objekter" name="Show Updates"/> + </menu> + <menu label="Fremtving en fejl" name="Force Errors"> + <menu_item_call label="Sæt breakpoint" name="Force Breakpoint"/> + <menu_item_call label="Gennemtving LLError og crash" name="Force LLError And Crash"/> + <menu_item_call label="Fremtving "Bad Memory Access"" name="Force Bad Memory Access"/> + <menu_item_call label="Fremtving en uendelig løkke" name="Force Infinite Loop"/> + <menu_item_call label="Gennemtving drivernedbrud" name="Force Driver Carsh"/> + <menu_item_call label="Gennemtving software "exception"" name="Force Software Exception"/> + <menu_item_call label="Fremtving mistet forbindelse" name="Force Disconnect Viewer"/> + <menu_item_call label="Simulér et memory leak" name="Memory Leaking Simulation"/> + </menu> + <menu label="Gengivelses tests" name="Render Tests"> + <menu_item_check label="Kamera offset" name="Camera Offset"/> + <menu_item_check label="Tilfældige framerates" name="Randomize Framerate"/> + <menu_item_check label="Frame test" name="Frame Test"/> + </menu> + <menu label="Gengivelse" name="Rendering"> + <menu_item_check label="Akser" name="Axes"/> + <menu_item_check label="Wireframe" name="Wireframe"/> + <menu_item_check label="Global oplysning" name="Global Illumination"/> + <menu_item_check label="Animationsteksturer" name="Animation Textures"/> + <menu_item_check label="SlÃ¥ teksturer fra" name="Disable Textures"/> + <menu_item_check label="Gengiv vedhæftede lys" name="Render Attached Lights"/> + <menu_item_check label="Gengiv vedhæftede partikler" name="Render Attached Particles"/> + <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> + </menu> + <menu label="Netværk" name="Network"> + <menu_item_check label="Pause avatar" name="AgentPause"/> + <menu_item_call label="Mist en netværkspakke" name="Drop a Packet"/> + </menu> + <menu_item_call label="Stød, skub & slag" name="Bumps, Pushes &amp; Hits"/> + <menu label="Verden" name="World"> + <menu_item_check label="Vælg anden sol end region" name="Sim Sun Override"/> + <menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/> + <menu_item_check label="Fast vejr" name="Fixed Weather"/> + <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/> + </menu> + <menu label="UI (brugerflade)" name="UI"> + <menu_item_call label="Test web browser" name="Web Browser Test"/> + <menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/> + <menu_item_call label="Hukommelse statistik" name="Memory Stats"/> + <menu_item_check label="Dobbelt-klik auto-pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Debug klik" name="Debug Clicks"/> + <menu_item_check label="Debug muse-hændelser" name="Debug Mouse Events"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Genindlæs farveopsætning" name="Reload Color Settings"/> + <menu_item_call label="Vis font test" name="Show Font Test"/> + <menu_item_call label="Hent fra XML" name="Load from XML"/> + <menu_item_call label="Gem til XML" name="Save to XML"/> + <menu_item_check label="Vis XUI navne" name="Show XUI Names"/> + <menu_item_call label="Send testbeskeder (IM)" name="Send Test IMs"/> + </menu> + <menu label="Avatar" name="Character"> + <menu label="Grab Baked Texture" name="Grab Baked Texture"> + <menu_item_call label="Iris" name="Iris"/> + <menu_item_call label="Hovede" name="Head"/> + <menu_item_call label="Overkrop" name="Upper Body"/> + <menu_item_call label="Underkrop" name="Lower Body"/> + <menu_item_call label="Nederdel" name="Skirt"/> + </menu> + <menu label="Avatar tests" name="Character Tests"> + <menu_item_call label="Skift avatar geometri" name="Toggle Character Geometry"/> + <menu_item_check label="Tillad at udvælge avatar" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Tving værdier til standard" name="Force Params to Default"/> + <menu_item_check label="Animationsinfo" name="Animation Info"/> + <menu_item_check label="Slow motion animationer" name="Slow Motion Animations"/> + <menu_item_check label="SlÃ¥ "Level Of Detail" fra" name="Disable LOD"/> + <menu_item_check label="Vis kollision skelet" name="Show Collision Skeleton"/> + <menu_item_check label="Vis avatar center" name="Display Agent Target"/> + <menu_item_call label="Debug avatar teksturer" name="Debug Avatar Textures"/> + </menu> + <menu_item_check label="HTTP teksturer" name="HTTP Textures"/> + <menu_item_check label="Benyt consol vindue ved næste opstart" name="Console Window"/> + <menu_item_check label="Vis administrationsmenu" name="View Admin Options"/> + <menu_item_call label="Anmod om administrator status" name="Request Admin Options"/> + <menu_item_call label="Forlad administrationsstatus" name="Leave Admin Options"/> + </menu> + <menu label="Administrér" name="Admin"> + <menu label="Object"> + <menu_item_call label="Tag kopi" name="Take Copy"/> + <menu_item_call label="Gennemtving ejer til mig" name="Force Owner To Me"/> + <menu_item_call label="Gennemtving ejer tolerance" name="Force Owner Permissive"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="LÃ¥s" name="Lock"/> + </menu> + <menu label="Parcel" name="Parcel"> + <menu_item_call label="Sæt ejer til "mig"" name="Owner To Me"/> + <menu_item_call label="Sat til Linden indhold" name="Set to Linden Content"/> + <menu_item_call label="Kræv offentligt land" name="Claim Public Land"/> + </menu> + <menu label="Region" name="Region"> + <menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/> + <menu_item_call label="Gem regions "State"" name="Save Region State"/> + </menu> + <menu_item_call label=""God Tools"" name="God Tools"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/da/mime_types_mac.xml b/indra/newview/skins/default/xui/da/mime_types_mac.xml new file mode 100644 index 00000000000..bd9981b0456 --- /dev/null +++ b/indra/newview/skins/default/xui/da/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web indhold + </label> + <tooltip name="web_tooltip"> + Dette sted har web-indhold + </tooltip> + <playtip name="web_playtip"> + Vis web-indhold + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Film + </label> + <tooltip name="movie_tooltip"> + Der kan ses en film her + </tooltip> + <playtip name="movie_playtip"> + Afspil film + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Billede + </label> + <tooltip name="image_tooltip"> + Dette sted har et billede + </tooltip> + <playtip name="image_playtip"> + Vis dette steds billede + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Lyd + </label> + <tooltip name="audio_tooltip"> + Dette sted har lyd + </tooltip> + <playtip name="audio_playtip"> + Afdspil dette steds lyd + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Ingen - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Ingen - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Lyd + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Billede + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF Dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript Dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web side (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Lyd (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Lyd (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Lyd (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Lyd (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Billede (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Billede (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Billede (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Billede (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Billede (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Billede (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web side + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Tekst + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Film (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Film (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Film (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Film (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Film (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 42f55d4678c..42eac1be7a4 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -9,74 +9,33 @@ <global name="implicitclosebutton"> Luk </global> - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - <notification functor="GenericAcknowledge" label="Ukendt advarsels-besked" name="MissingAlert"> - Din version af [APP_NAME] kan ikke vise den advarselsbesked den modtog. + <template name="okbutton"> + <form> + <button name="OK" text="$yestext"/> + </form> + </template> + <template name="okignore"/> + <template name="okcancelbuttons"> + <form> + <button name="Cancel" text="$notext"/> + </form> + </template> + <template name="okcancelignore"/> + <template name="okhelpbuttons"> + <form> + <button name="Help" text="$helptext"/> + </form> + </template> + <template name="yesnocancelbuttons"> + <form> + <button name="Yes" text="$yestext"/> + <button name="No" text="$notext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert"> + Din version af [APP_NAME] kan ikke vise den besked den lige modtog. Undersøg venligst at du har den nyester version af klienten installeret. -Fejl detaljer: Advarslen '[_NAME]' blev ikke fundet i notifications.xml. +Fejl detaljer: Beskeden kaldet '[_NAME]' blev ikke fundet i notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -97,24 +56,18 @@ Fejl detaljer: Advarslen '[_NAME]' blev ikke fundet i notifications.xm <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/> </notification> <notification name="BadInstallation"> - Der opstod en fejl ved opdatering af [APP_NAME]. Hent venligst den nyeste version fra secondlife.com. - <usetemplate - name="okbutton" - yestext="OK"/> + Der opstod en fejl ved opdatering af [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> - Netværksfejl: Kunne ikke oprette forbindelse. + Kunne ikke oprette forbindelse til [SECOND_LIFE_GRID]. '[DIAGNOSTIC]' -Check venligst din netværksforbindelse. - <usetemplate - name="okbutton" - yestext="OK"/> +Make sure your Internet connection is working properly. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MessageTemplateNotFound"> Besked template [PATH] kunne ikke findes. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="WearableSave"> Gem ændringer til nuværende tøj/krops del? @@ -177,7 +130,7 @@ Vælg kun en genstand, og prøv igen. Medlemmer ikke kan fjernes fra denne rolle. Medlemmerne skal fratræde sin rolle selv. Er du sikker pÃ¥ du vil fortsætte? - <usetemplate ignoretext="NÃ¥r du tilføjer medlemmer til ejer rollen" name="okcancelignore" notext="Nej" yestext="Ja"/> + <usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/> </notification> <notification name="AssignDangerousActionWarning"> Du er ved at tilføje muligheden for '[ACTION_NAME]' til @@ -189,47 +142,31 @@ Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet med Add this Ability to '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> </notification> - <notification name="ClickSoundHelpLand"> - Media og musik kan kun ses og høres indenfor parcellen. Lyd og stemme valg muligheder kan begrænses til parcellen eller de kan høres af beboere udenfor parcellen, afhængigt af deres indholdsrating. GÃ¥ til 'Knowledge Base' for at lære hvordan disse valg opsættes. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 - </url> - <usetemplate - name="okcancelbuttons" - yestext="GÃ¥ til 'Knowledge Base'" - notext="Luk" /> - </notification> - <notification name="ClickSearchHelpAll"> - Søgeresultater er organiseret baseret pÃ¥ den fane du stÃ¥r pÃ¥, din indholdsrating, den valgte kategori og andre faktorer. for yderligere detaljer se i 'Knowledge Base'. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 - </url> - <usetemplate - name="okcancelbuttons" - yestext="GÃ¥ til 'Knowledge Base'" - notext="Luk" /> - </notification> - <notification name="ClickPublishHelpAvatar"> - Hvis du vælger "Vis i Søgning" Vises: -- Din profil i søgeresultater -- Et link til din profile i de offentlige gruppe sider - </notification> - <notification name="ClickUploadHelpPermissions"> - Dinne standard rettigheder virker muligvis ikke i ældre regioner. - </notification> - <notification name="ClickWebProfileHelpAvatar"> - Hvis en beboer har en hjemmeside adresse kan du: - * Klikke 'Load' for at side deres side her. - * Klikke Load > 'I ekstern browser' for at se siden i din standard browser. - * Klikke Load > 'Hjemme URL' for at returnere til denne beboers side hvis du har navigeret væk. - -NÃ¥r du ser din egen profil, kan du skrive hvilken som helst adresse og klikke ok for at fÃ¥ den vist i din egen profil. -Andre beboere kan besøge den adresse du har sat, nÃ¥r de besøger din profil. + <notification name="ClickUnimplemented"> + Beklager, ikke implementeret endnu. </notification> <notification name="JoinGroupCannotAfford"> Tilmelding til denne gruppe koster L$[COST]. Du har ikke nok L$ til denne tilmelding. </notification> + <notification name="CreateGroupCost"> + Oprettelse af denne gruppe vil koste L$100. +Grupper skal have mindst 2 medlemmer, ellers slettes de for altid. +Invitér venligst medlemmer indenfor 48 timer. + <usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ADVARSEL: Ved at vælge 'sælg til enhver' bliver til land tilgængeligt for alle i hele [SECOND_LIFE], ogsÃ¥ de som ikke er i denne region. + +Det valgte antal [LAND_SIZE] m² land bliver sat til salg. +Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME]. + </notification> + <notification name="MultipleFacesSelected"> + Flere overflader er valgt for øjeblikket. +Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist pÃ¥ overfladerne pÃ¥ objektet. +Hvis media kun skal vises pÃ¥ en overflade, vælg 'Vælg overflade' og klik pÃ¥ den relevante overflade og klik pÃ¥ tilføj. + <usetemplate ignoretext="Media vil blive sat pÃ¥ flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> <notification name="PromptMissingSubjMsg"> E-mail dette billede med standard emne eller besked? <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> @@ -237,6 +174,10 @@ Du har ikke nok L$ til denne tilmelding. <notification name="ErrorUploadingPostcard"> Der var et problem med at sende billedet pÃ¥ grund af følgende: [REASON] </notification> + <notification name="MaxAttachmentsOnOutfit"> + Kunne ikke vedhæfte objekt. +Overskrider vedhæftnings begrænsning pÃ¥ [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først. + </notification> <notification name="MustHaveAccountToLogIn"> Ups! Noget var tomt. Du skal skrive bÃ¥de fornavn og efternavn pÃ¥ din figur. @@ -244,6 +185,18 @@ Du skal skrive bÃ¥de fornavn og efternavn pÃ¥ din figur. Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu? <usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/> </notification> + <notification name="AddClassified"> + Annoncer vil vises i 'Annoncer' sektionen i søge biblioteket og pÃ¥ [http://secondlife.com/community/classifieds secondlife.com] i en uge. +Udfyld din annonce og klik pÃ¥ 'Udgiv...' for at tilf'je den til biblioteket. +Du vil blive spurgt om en pris nÃ¥r du klikker pÃ¥ 'Udgiv'. +Jo mere du betaler, jo højere oppe pÃ¥ listen vises annoncen, og den vil ogsÃ¥ optræde højere oppe nÃ¥r personer søger. + <usetemplate ignoretext="Hvordan man opretter en annonce" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="DeleteMedia"> + Du har valgt at slette media tilknyttet denne overflade. +Er du sikker pÃ¥ at du vil fortsætte? + <usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/> + </notification> <notification name="ResetShowNextTimeDialogs"> Vil du gerne genaktivere alle disse popups, som du tidligere har bedt om ikke at fÃ¥ vist? <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> @@ -252,86 +205,144 @@ Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu? Vil du deaktivere alle popups som kan undværes? <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> </notification> + <notification name="CacheWillClear"> + Cache vil blive tømt ved næste genstart af [APP_NAME]. + </notification> + <notification name="CacheWillBeMoved"> + Cache vil blive flyttet ved næste genstart af [APP_NAME]. +Note: This will clear the cache. + </notification> + <notification name="ChangeConnectionPort"> + Port ændringer vil blive effektueret ved næste genstart af [APP_NAME]. + </notification> <notification name="ChangeSkin"> - Det nye udseende vil vises efter du har genstartet [APP_NAME]. + Den nye hud vil blive vist ved næste genstart af [APP_NAME]. + </notification> + <notification name="StartRegionEmpty"> + Ups, din start region er ikke angivet. +Indtast venligst navn pÃ¥ region i Start lokation feltet eller vælg "Min sidste lokation" eller "Hjem". + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="UnsupportedHardware"> + <usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/> </notification> - <notification name="UnsupportedHardware"/> <notification name="UnknownGPU"> + Dit system har et grafikkort som er ukendt for [APP_NAME] lige nu. +Dette er tilfældet med nyt hardware som endnu ikke er blevet testet med [APP_NAME]. [APP_NAME] vil sandsynligvis kunne køre normalt, men det kan være nødvendigt at justere opsætningen af grafik. +(Mig > Indstillinger > Grafik). <form name="form"> - <ignore name="ignore" text="Ved opdagelse af et ukendt grafikkort"/> + <ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/> </form> </notification> + <notification name="DisplaySettingsNoShaders"> + [APP_NAME] gik ned ved inititalisering af grafik drivere. +Grafik kvaliteten sættes til 'lav' for at undgÃ¥ typiske problemer med drivere. Dette vil slÃ¥ visse grafik funktioner fra. +Vi anbefaler at opdatere driverne til dit grafikkort. +Grafik kvaliteten kan forbedres i indstillinger > Grafik. + </notification> + <notification name="CannotGiveCategory"> + Du har ikke tilladelse til at videreføre den valgte mappe. + </notification> + <notification name="EjectAvatarFromGroup"> + Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME] + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] - <notification name="invalid_tport"> -Der er problemer med at hÃ¥ndtere din teleport. Det kan være nødvendigt at logge ud og ind for at kunne skifte teleportere. -Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: -www.secondlife.com/support - </notification> - <notification name="invalid_region_handoff"> -Problem registreret i forbindelse med skift til ny region. Det kan være nødvendigt at logge ud og ind for at kunne skifte regioner. -Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: -www.secondlife.com/support - </notification> - <notification name="blocked_tport"> -Beklager, teleport er blokeret lige nu. Prøv igen senere. +GÃ¥ til [_URL] for information om køb af L$? + </notification> + <notification name="CannotEncodeFile"> + Kunne ikke 'forstÃ¥' filen: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + [APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen. + </notification> + <notification name="LandmarkCreated"> + Du har tilføjet "[LANDMARK_NAME]" til din [FOLDER_NAME] mappe. + </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Ikke muligt at Ã¥bne script i objekt uden 'Redigére' rettigheder. + </notification> + <notification name="invalid_tport"> + Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte. +Hvis du bliver ved med at fÃ¥ denne fejl, check venligst [SUPPORT_SITE]. + </notification> + <notification name="invalid_region_handoff"> + Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner. +Hvis du bliver ved med at fÃ¥ denne fejl, check venligst [SUPPORT_SITE]. + </notification> + <notification name="blocked_tport"> + Beklager, teleport er blokeret lige nu. Prøv igen senere. Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem. - </notification> - <notification name="nolandmark_tport"> -Beklager, systemet kunne ikke finde landmærke destinationen. - </notification> - <notification name="timeout_tport"> -Beklager, systemet kunne ikke fuldføre teleport forbindelse. + </notification> + <notification name="nolandmark_tport"> + Beklager, systemet kunne ikke finde landmærke destinationen. + </notification> + <notification name="timeout_tport"> + Beklager, systemet kunne ikke fuldføre teleport forbindelse. Prøv igen om lidt. - </notification> - <notification name="noaccess_tport"> -Beklager, du har ikke adgang til denne teleport destination. - </notification> - <notification name="missing_attach_tport"> -Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen. - </notification> - <notification name="too_many_uploads_tport"> -Tekniske problemer hindrer at din teleport kan gennemføres. + </notification> + <notification name="noaccess_tport"> + Beklager, du har ikke adgang til denne teleport destination. + </notification> + <notification name="missing_attach_tport"> + Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen. + </notification> + <notification name="too_many_uploads_tport"> + Tekniske problemer hindrer at din teleport kan gennemføres. Prøv venligst igen om lidt eller vælg et mindre travlt omrÃ¥de. - </notification> - <notification name="expired_tport"> -Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt. - </notification> - <notification name="expired_region_handoff"> -Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt. - </notification> - <notification name="no_host"> -Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. + </notification> + <notification name="expired_tport"> + Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt. + </notification> + <notification name="expired_region_handoff"> + Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt. + </notification> + <notification name="no_host"> + Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. Prøv evt. igen om lidt. - </notification> - <notification name="no_inventory_host"> -Beholdningssystemet er ikke tilgængelig lige nu. - </notification> - - <notification name="CannotGiveCategory"> - Du har ikke tilladelse til at videreføre den valgte mappe. </notification> - <notification name="CannotEncodeFile"> - Kunne ikke 'forstÃ¥' filen: [FILE] + <notification name="no_inventory_host"> + Beholdningssystemet er ikke tilgængelig lige nu. </notification> <notification name="CannotBuyLandNoRegion"> Ikke i stand til at købe land: Kan ikke finde region som dette land er i. </notification> - <notification name="ShowOwnersHelp"> - Vis ejere: -Farver pÃ¥ parceller viser ejer-type. + <notification name="CannotCloseFloaterBuyLand"> + Du kan ikke lukke 'Køb land' vinduet før [APP_NAME] har vurderet en pris pÃ¥ denne transaktion. + </notification> + <notification name="CannotDeedLandNoRegion"> + Land kunne ikke dedikeres: +Kunne ikke finde den region land ligger i. + </notification> + <notification name="ParcelCanPlayMedia"> + Dette sted kan afspille 'streaming media'. +'Streaming media' kræver en hurtig internet opkobling. -Grøn = Dit land -Turkis = Din gruppes land -Rød = Ejet af andre -Gul = Til salg -Lilla = PÃ¥ auktion -GrÃ¥ = Offentligt ejet +Afspil altid 'streaming media' nÃ¥r det er tilgængeligt? +(Du kan ændre dette valg senere under Indstillinger > Privatliv.) + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Kunne ikke efterlade land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotDivideLandNoRegion"> + Kunne ikke opdele land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotJoinLandNoRegion"> + Kunne ikke opdele land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotSaveToAssetStore"> + Kunne ikke gemme [NAME] i den centrale database. +Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter. </notification> <notification name="YouHaveBeenLoggedOut"> - Du er blevet logget ud af [SECOND_LIFE]: + Du er blevet logget af [SECOND_LIFE]: [MESSAGE] -Du kan stadig se eksiterende PB'er og chat ved at klikke'Se PB & Chat'. Ellers, klik 'Afslut' for at afslutte [APP_NAME] nu. +Du kan stadig se igangværende samtaler (IM) og chat ved at klikke pÃ¥ 'Se IM & chat. Ellers klik pÃ¥ 'Afslut' for at lukke [APP_NAME] med det samme. <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB & Chat"/> </notification> <notification label="Tilføj ven" name="AddFriend"> @@ -354,15 +365,156 @@ Tilbyd venskab til [NAME]? <button name="Cancel" text="Annullér"/> </form> </notification> + <notification name="AvatarMovedDesired"> + Den ønskede lokation er ikke tilgængelig lige nu. +Du er blevet flyttet til en region in nærheden. + </notification> + <notification name="AvatarMovedLast"> + Din sidste lokation er ikke tilgængelig for øjeblikket. +Du er blevet flyttet til en region in nærheden. + </notification> + <notification name="AvatarMovedHome"> + Din hjemme lokation er ikke tilgængelig for øjeblikket. +Du er blevet flyttet til en region in nærheden. +Du kan mÃ¥ske ønske at sætte en ny hjemme lokation. + </notification> + <notification name="ClothingLoading"> + Dit tøj hentes stadig ned. +Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt. + <form name="form"> + <ignore name="ignore" text="Det tager lang tid at hente tøj"/> + </form> + </notification> + <notification name="FirstRun"> + [APP_NAME] installationen er færdig. + +Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge pÃ¥. +Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto? + </notification> + <notification name="LoginPacketNeverReceived"> + Der er problemer med at koble pÃ¥. Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID]. + +Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke pÃ¥ Hjælp for at se [SUPPORT_SITE] siden, eller klikke pÃ¥ Teleport for at forsøge at teleportere hjem. + </notification> <notification name="NotEnoughCurrency"> [NAME] L$ [PRICE] Du har ikke nok L$ til dette. </notification> + <notification name="GrantedModifyRights"> + [NAME] har givet dig rettighed til at redigere sine objekter. + </notification> + <notification name="RevokedModifyRights"> + Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet + </notification> <notification name="BuyOneObjectOnly"> Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen. </notification> + <notification name="DownloadWindowsMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne version for at bruge [APP_NAME]. + </notification> + <notification name="DownloadWindows"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + </notification> + <notification name="DownloadLinuxMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne version for at kunne benytte [APP_NAME]. + <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/> + </notification> + <notification name="DownloadLinux"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/> + </notification> + <notification name="DownloadLinuxReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/> + </notification> + <notification name="DownloadMacMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne opdatering for at bruge [APP_NAME]. + +Download til dit Program bibliotek? + </notification> + <notification name="DownloadMac"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + +Download til dit Program bibliotek? + </notification> + <notification name="DownloadMacReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke pÃ¥krævet, men det anbefales at installere den for at opnÃ¥ øget hastighed og forbedret stabilitet. + +Download til dit Program bibliotek? + </notification> + <notification name="DeedObjectToGroup"> + <usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Ønsker du at Ã¥bne din web browser for at se dette indhold? + <usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + GÃ¥ til [http://secondlife.com/account/ Dashboard] for at administrere din konto? + <usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + <usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + <usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + <usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="WebLaunchSupportWiki"> + <usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Ønsker du at Ã¥bne 'Scripting Guide' for hjælp til scripting? + <usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Ønsker du at besøge LSL portalen for hjælp til scripting? + <usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="ReturnToOwner"> + <usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="MuteLinden"> + Beklager, men du kan ikke blokere en Linden. + </notification> <notification name="CannotStartAuctionAlreadyForSale"> Du kan ikke starte en auktion pÃ¥ en parcel som allerede er sat til salg. Fjern 'til salg' muligheden hvis du ønsker at starte en auktion. </notification> + <notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed"> + Du har allerede blokeret dette navn. + </notification> + <notification name="BusyModeSet"> + Sat til 'optaget'. +Chat og personlige beskeder vil blive skjult. Personlige beskeder vil fÃ¥ din 'optaget' besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven. + <usetemplate ignoretext="Jeg skrifter min status til 'optaget" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Du har nÃ¥et det maksimale antal grupper. Du skal forlade en anden gruppe for at kunne være med i denne - eller afvis tilbudet. +[NAME] har inviteret dig til at være medlem af en gruppe. +[INVITE] + </notification> <notification name="OfferTeleport"> <form name="form"> <input name="message"> @@ -372,13 +524,22 @@ Tilbyd venskab til [NAME]? <button name="Cancel" text="Annullér"/> </form> </notification> + <notification name="TeleportFromLandmark"> + <usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/> + </notification> + <notification name="TeleportToPick"> + Teleport til [PICK]? + <usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/> + </notification> + <notification name="TeleportToClassified"> + Teleport til [CLASSIFIED]? + <usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/> + </notification> <notification name="RegionEntryAccessBlocked"> Du har ikke adgang til denne region pÃ¥ grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder. Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gÃ¥ til 'Knowledge Base' for yderligere detaljer om adgang til omrÃ¥der med denne indholdsrating. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked_KB"> Du har ikke adgang til denne region pÃ¥ grund af din valgte indholdsrating. @@ -387,36 +548,26 @@ GÃ¥ til 'Knowledge Base' for mere information om indholdsratings. <url name="url"> https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 </url> - <usetemplate - name="okcancelignore" - yestext="GÃ¥ til 'Knowledge Base'" - notext="Luk" - ignoretext="NÃ¥r regionen er blokeret pÃ¥ grund af indholdsrating"/> + <usetemplate ignoretext="Ikke adgang til denne region pÃ¥ grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="GÃ¥ til 'Knowledge Base'"/> </notification> <notification name="RegionEntryAccessBlocked_Notify"> Du har ikke adgang til denne region pÃ¥ grund af din valgte indholdsrating. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Du har ikke adgang til denne region pÃ¥ grund af din nuværende indholdsrating opsætning. + Du har ikke adgang til denne region pÃ¥ grund af din indholdsrating præferencer. -Du kan vælge 'Indstillinger' for at hæve din indholdsrating nu og dermed fÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og fÃ¥ adgang til omrÃ¥der med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i 'Indstillinger'. - <form name="form"> - <button - name="OK" - text="Ændre præferencer"/> - <button - name="Cancel" - text="Luk"/> - <ignore name="ignore" text="NÃ¥r regionen er blokeret pÃ¥ grund af indholdsrating"/> - </form> +Du kan klikke pÃ¥ 'Ændre præference' for at ændre din indholdsrating nu og dermed opnÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og tilgÃ¥ [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gÃ¥ til Mig > Indstillinger > Generelt. + <form name="form"> + <button name="OK" text="Ændre indstillinger"/> + <button name="Cancel" text="Luk"/> + <ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/> + </form> </notification> <notification name="LandClaimAccessBlocked"> Du kan ikke kræve dette land pÃ¥ grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder. Undersøg om du har den nyeste [APP_NAME] klient og gÃ¥ venligst til 'Knowledge Base' for yderligere detaljer om adgang til omrÃ¥der med denne indholdsrating. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandClaimAccessBlocked_KB"> Du kan ikke kræve dette land pÃ¥ grund af din nuværende indholdsrating indstilling.. @@ -425,32 +576,22 @@ GÃ¥ venligst til 'Knowledge Base' for yderligere information om indhol <url name="url"> https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 </url> - <usetemplate - name="okcancelignore" - yestext="GÃ¥ til 'Knowledge Base'" - notext="Luk" - ignoretext="NÃ¥r land ikke kan kræves pÃ¥ grund af indholdsrating"/> + <usetemplate ignoretext="Du kan ikke kræve dette land, pÃ¥ grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="GÃ¥ til 'Knowledge Base'"/> </notification> <notification name="LandClaimAccessBlocked_Notify"> Du kan ikke kræve dette land pÃ¥ grund af din indholdsrating. </notification> <notification name="LandClaimAccessBlocked_Change"> - Du kan ikke kræve dette land pÃ¥ grund af din nuværende indholdsrating indstilling.. + Du kan ikke kræve dette land, pÃ¥ grund af begrænsninger i din opsætning af indholdsrating. -Du kan vælge 'Indstillinger' for at hæve din indholdsrating nu og dermed fÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og fÃ¥ adgang til omrÃ¥der med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i 'Indstillinger'. - <usetemplate - name="okcancelignore" - yestext="Ændre præferencer" - notext="Luk" - ignoretext="NÃ¥r land ikke kan kræves pÃ¥ grund af indholdsrating"/> +Du kan klikke pÃ¥ 'Ændre præference' for at ændre din indholdsrating nu og dermed opnÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og tilgÃ¥ [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gÃ¥ til Mig > Indstillinger > Generelt. + <usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/> </notification> <notification name="LandBuyAccessBlocked"> Du kan ikke købe dette land pÃ¥ grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder. Undersøg om du har den nyeste [APP_NAME] klient og gÃ¥ venligst til 'Knowledge Base' for yderligere detaljer om adgang til omrÃ¥der med denne indholdsrating. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandBuyAccessBlocked_KB"> Du kan ikke købe dette land pÃ¥ grund af din nuværende indholdsrating. @@ -459,24 +600,19 @@ GÃ¥ til 'Knowledge Base' for yderligere detaljer om indholdsrating. <url name="url"> https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 </url> - <usetemplate - name="okcancelignore" - yestext="GÃ¥ til 'Knowledge Base'" - notext="Luk" - ignoretext="NÃ¥r land ikke kan købes pÃ¥ grund af indholdsrating"/> + <usetemplate ignoretext="Du kan ikke købe dette land, pÃ¥ grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="GÃ¥ til 'Knowledge Base'"/> </notification> <notification name="LandBuyAccessBlocked_Notify"> Du kan ikke købe dette land pÃ¥ grund af din nuværende indholdsrating indstilling. </notification> <notification name="LandBuyAccessBlocked_Change"> - Du kan ikke købe dette land pÃ¥ grund af din valgte inholdsrating. + Du kan ikke købe dette land, pÃ¥ grund af begrænsninger i din opsætning af indholdsrating. -Du kan vælge 'Indstillinger' for at hæve din indholdsrating nu og dermed fÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og fÃ¥ adgang til omrÃ¥der med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i 'Indstillinger'. - <usetemplate - name="okcancelignore" - yestext="Ændre præferencer" - notext="Luk" - ignoretext="NÃ¥r land ikke kan købes pÃ¥ grund af indholdsrating"/> +Du kan klikke pÃ¥ 'Ændre præference' for at ændre din indholdsrating nu og dermed opnÃ¥ adgang. Du vil sÃ¥ fÃ¥ mulighed for at søge og tilgÃ¥ [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gÃ¥ til Mig > Indstillinger > Generelt. + <usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/> + </notification> + <notification name="TooManyPrimsSelected"> + Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen </notification> <notification name="UnableToLoadNotecardAsset"> Kunne ikke hente notecard indhold. @@ -484,53 +620,92 @@ Du kan vælge 'Indstillinger' for at hæve din indholdsrating nu og de </notification> <notification name="SetClassifiedMature"> Indeholder denne annonce 'Mature' indhold? - <usetemplate - canceltext="Annullér" - name="yesnocancelbuttons" - notext="Nej" - yestext="Ja"/> + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/> </notification> <notification name="SetGroupMature"> Indeholder denne gruppe 'Mature' indhold? - <usetemplate - canceltext="Annullér" - name="yesnocancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - <notification label="Indholdsrating" name="HelpRegionMaturity"> - Sætter indholdsrating for regionen, som den vises øverst pÃ¥ menu-bjælken i beboernes klient, og i tooltips pÃ¥ verdenskortet nÃ¥r cursoren placeres over denne region. Denne indstilling har ogsÃ¥ betydning for adgangen til regionen og for søgeresultater. Andre beboere mÃ¥ kun fÃ¥ adgang til regionen eller se regionen i søgeresultater hvis de har valgt samme eller højere indholdsrating i deres opsætning. - -Det kan tage noget tid inden en ændring af indholdsrating er synligt pÃ¥ kortet. + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification label="Voice Version Mismatch" name="VoiceVersionMismatch"> + Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne fÃ¥ stemme chat til at fungere skal du opdatere [APP_NAME]. + </notification> + <notification name="MoveInventoryFromObject"> + <usetemplate ignoretext="Advar mig før jeg flytter 'ikke-kopiérbare' genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + <usetemplate ignoretext="Advar mig før jeg flytter 'ikke-kopiérbare' genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Advarsel: 'Betal objekt' klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et 'money()' event er tilføjet. + <form name="form"> + <ignore name="ignore" text="I set the action 'Pay object' when building an object without a money() script"/> + </form> + </notification> + <notification name="WebLaunchAccountHistory"> + GÃ¥ til [http://secondlife.com/account/ Dashboard] for at se konto-historik? + <usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="ConfirmQuit"> + <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Brug dette værktøj for at rapportere brud pÃ¥ de almindelige bestemmelser og fællesskabs Standarder. Se: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php + Benyt dette værktøj til at rapportere Use this tool to report krænkelser af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards]. -Alle rapporterede brud pÃ¥ almindelige bestemmelser og fællesskabs Standarder bliver undersøgt og løst. Du kan følge løsningen pÃ¥ din anmeldselse pÃ¥: - -http://secondlife.com/support/incidentreport.php +Alle indrapporterede krænkelser er undersøgt og and afgjort. Du kan se løsning ved at læse [http://secondlife.com/support/incidentreport.php Incident Report]. </notification> <notification name="HelpReportAbuseContainsCopyright"> - Dear Resident, + Kære beboer, -Du ser ud til at være ved at rapportere noget vedr. krænkelse af intellektuelle ejendomsrettigheder. Sørg for, at du rapporterer dette korrekt: +Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt: -(1) Misbrugs processen. Du kan indsende en misbrugs rapport, hvis du mener, at en Beboer udnytter [SECOND_LIFE]'s rettigheds system, for eksempel ved hjælp af en CopyBot eller lignende kopierings værktøjer, at de krænker intellektuelle ejendomsrettigheder. Det team vil undersøge og spørgsmÃ¥l passende disciplinære sanktioner for adfærd, der overtræder [SECOND_LIFE] EF-standarderne eller ServicevilkÃ¥r. Men det team vil ikke hÃ¥ndtere og vil ikke reagere pÃ¥ anmodninger om at fjerne indhold fra [SECOND_LIFE]'s verden. +(1) Krænkelsesproces. Du mÃ¥ sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter. -(2) DMCA eller Indholds fjernelses processen. For at anmode om fjernelse af indhold fra [SECOND_LIFE], skal du sende en gyldig anmeldelse af overtrædelsen som beskrevet i vores DMCA-politik pÃ¥ http://secondlife.com/corporate/dmca.php. +(2) DCMA (â€Digital Millennium Copyright Actâ€) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy]. -Hvis du stadig ønsker at fortsætte med misbrugs processen, luk da venligst dette vindue og færdiggør indsendelsen af din rapport. Du kan være nødt til at vælge den særlige kategori »CopyBot eller Tilladelses Ydnyttelse. +Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori 'CopyBot or Permissions Exploit'. -Mange tak, +Mange tak Linden Lab </notification> + <notification label="Replace Existing Attachment" name="ReplaceAttachment"> + <form name="form"> + <ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/> + </form> + </notification> + <notification label="Busy Mode Warning" name="BusyModePay"> + <form name="form"> + <ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er 'optaget'"/> + </form> + </notification> + <notification name="ConfirmDeleteProtectedCategory"> + Mappen '[FOLDERNAME]' er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker pÃ¥ at du vil slette den? + <usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> + <notification name="ConfirmEmptyTrash"> + Er du sikker pÃ¥ at du ønsker at tømme papirkurven? + <usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Er du sikker pÃ¥ at du ønsker at slette din historik om besøg, web og søgninger? + <usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> Er du sikker pÃ¥ du vil slette alle cookies? </notification> + <notification name="ConfirmEmptyLostAndFound"> + Er du sikker pÃ¥ at du vil slette indholdet i din 'Fundne genstande'? + <usetemplate ignoretext="Bekræft før sletning af 'Fundne genstande' mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="CopySLURL"> + Følgende SLurl er blevet kopieret til din udklipsholder: + [SLURL] + +Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser. + <form name="form"> + <ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/> + </form> + </notification> <notification name="NewSkyPreset"> <form name="form"> <input name="message"> @@ -555,7 +730,23 @@ Linden Lab <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - Ting kan ikke købes imens de er en del af tilbehør. + Du kan ikke købe en genstand mens den er vedhæftet. + </notification> + <notification name="AutoWearNewClothing"> + Vil du automatisk tage det tøj pÃ¥ du er ved at lave? + <usetemplate ignoretext="Tag det tøj pÃ¥ jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="NotAgeVerified"> + Du skal være alders-checket for at besøge dette omrÃ¥de. Ønsker du at gÃ¥ til [SECOND_LIFE] hjemmesiden og bekræfte din alder? + +[_URL] + <usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Du skal være betalende medlem for at besøge dette omrÃ¥de. Ønsker du at gÃ¥ til [SECOND_LIFE] hjemmesiden for at blive dette? + +[_URL] + <usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/> </notification> <notification name="SystemMessageTip"> [MESSAGE] @@ -579,7 +770,7 @@ Linden Lab [FIRST] [LAST] er Offline </notification> <notification name="AddSelfFriend"> - Du kan ikke tilføje dig selv som ven. + Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven. </notification> <notification name="UploadingAuctionSnapshot"> Uploader billeder fra verdenen og www... @@ -598,7 +789,7 @@ Linden Lab Terrain.raw downloadet </notification> <notification name="GestureMissing"> - Gestus [NAME] mangler i databasen. + Bevægelsen [NAME] mangler i databasen. </notification> <notification name="UnableToLoadGesture"> Ikke muligt at indlæse gestus [NAME]. @@ -611,14 +802,14 @@ Prøv venligst igen. Ikke muligt at indlæse landmærke. Prøv venligst igen. </notification> <notification name="CapsKeyOn"> - Du har slÃ¥et store bogstaver til. -Da det vil have betydning nÃ¥r du indtaster kodeordet, vil du højest sandsynlig slÃ¥ dem fra. + Din Caps Lock er aktiveret. +Det kan pÃ¥virke din indtastning af password. </notification> <notification name="NotecardMissing"> Note mangler i databasen. </notification> <notification name="NotecardNoPermissions"> - Utilstrækkelige tilladelser til at se note. + Du har ikke rettigheder til at se denne note. </notification> <notification name="RezItemNoPermissions"> Utilstrækkelige tilladelser til at danne genstanden. @@ -657,11 +848,11 @@ Prøv venligst igen. Prøv venligst igen. </notification> <notification name="CannotBuyObjectsFromDifferentOwners"> - Kan ikke købe genstande fra forskellige ejere pÃ¥ samme tid. -Prøv venligst at vælge en enkelt genstand. + Du kan kun købe objekter fra én ejer ad gangen. +Vælg venligst et enkelt objekt. </notification> <notification name="ObjectNotForSale"> - Genstanden ser ikke ud til at være til salg. + Dette objekt er ikke til salg. </notification> <notification name="EnteringGodMode"> Starter gud-tilstand, niveau [LEVEL] @@ -670,10 +861,10 @@ Prøv venligst at vælge en enkelt genstand. Stopper gud-tilstand, niveau [LEVEL] </notification> <notification name="CopyFailed"> - Kopiering lykkedes ikke fordi du ikke har nok tilladelser til at kopiere + Du har ikke rettigheder til at kopiere dette. </notification> <notification name="InventoryAccepted"> - [NAME] accepterede det du tilbød fra din beholdning. + [NAME] modtog dit tilbud til hans/hendes beholdning. </notification> <notification name="InventoryDeclined"> [NAME] afviste det du tilbød fra din beholdning. @@ -688,12 +879,16 @@ Prøv venligst at vælge en enkelt genstand. Dit visitkort blev afvist. </notification> <notification name="TeleportToLandmark"> - Nu hvor du er nÃ¥et frem til hovedlandet, kan du teleportere til steder som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen hvorefter du vælger Landmærke-mappen. -Dobbeltklik pÃ¥ landmærket og klik pÃ¥ Teleportér, for at rejse derhen. + Du kan teleportere til lokationer som '[NAME]' ved at Ã¥bne Steder panelet til højre pÃ¥ skærmen, og her vælge landemærker fanen. +Klik pÃ¥ et landemærke og vælg den, derefter +Click on any landmark to select it, then click 'Teleport' at the bottom of the panel. +(You can also double-click on the landmark, or right-click it and choose 'Teleport'.) </notification> <notification name="TeleportToPerson"> - Nu hvor du har nÃ¥et frem til hovedlandet, kan du kontakte indbyggere som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen, hvorefter du vælger Visitkort-mappen. -Dobbeltklik pÃ¥ kortet, klik pÃ¥ IM og skriv beskeden. + Du kan kontakte beboere som f.eks. '[NAME]' ved at Ã¥bne 'Personer' panelet til højre pÃ¥ skærmen. +Vælg beboeren fra listen og klik sÃ¥ pÃ¥ 'IM' i bunden af panelet. +(Du kan ogsÃ¥ dobbelt-klikke pÃ¥ navnet i listen eller højreklikke og vælge 'IM') +(You can also double-click on their name in the list, or right-click and choose 'IM'). </notification> <notification name="CantSelectLandFromMultipleRegions"> Kan ikke vælge land pÃ¥ tværs af grænser. @@ -716,6 +911,9 @@ Prøv at vælge mindre stykker land. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Besked om begivenhed: @@ -739,8 +937,20 @@ Prøv at vælge mindre stykker land. Deaktiverede bevægelser med samme udløser: [NAMES] </notification> <notification name="NoQuickTime"> - Apple's QuickTime ser ikke ud til at være installeret pÃ¥ computeren. -Hvis du vil se live transmitteret medie pÃ¥ grunde, der understøtter det, skal du gÃ¥ ind pÃ¥ QuickTime-siden (http://www.apple.dk/quicktime) og installere QuickTime afspilleren. + Det ser ikke ud til at Apples QuickTime software er installeret pÃ¥ dit system. +Hvis du ønsker at se streaming media pÃ¥ parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player. + </notification> + <notification name="NoPlugin"> + Ingen Media Plugin blev fundet til at hÃ¥ndtere mime af typen "[MIME_TYPE]". Media af denne type vil ikke være tilgængelig. + </notification> + <notification name="MediaPluginFailed"> + Følgende Media Plugin has fejlede: + [PLUGIN] + +Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved. + <form name="form"> + <ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/> + </form> </notification> <notification name="OwnedObjectsReturned"> De genstande du ejer pÃ¥ det valgte stykke land er blevet returneret til din beholdning. @@ -759,23 +969,26 @@ Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet sl <notification name="UnOwnedObjectsReturned"> Genstandene pÃ¥ det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere. </notification> + <notification name="ServerObjectMessage"> + Besked fra [NAME]: +[MSG] + </notification> <notification name="NotSafe"> - Dette land har sat skade til ('ikke sikker'). -Du kan komme til skade her. Hvis du dør, vil du blive teleporteret til din hjem-lokalitet. + Dette land er Ã¥bnet for 'skade'. +Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation. </notification> <notification name="NoFly"> - Dette land har slÃ¥et flyvning fra ('ingen flyvning'). + Dette sted har ikke aktiveret ret til flyvning. Du kan ikke flyve her. </notification> <notification name="PushRestricted"> - Dette land giver ikke mulighed for at 'skubbe' andre, med mindre du ejer landet. + Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land. </notification> <notification name="NoVoice"> - Dette land har ikke mulighed for at bruge stemme. + Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale. </notification> <notification name="NoBuild"> - Dette land giver ikke mulighed for at bygge ('byggeri forbudt'). -Du kan ikke skabe genstande her. + Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller 'rezze' objekter her. </notification> <notification name="ScriptsStopped"> En administrator har midlertidig stoppet scripts i denne region. @@ -784,12 +997,12 @@ Du kan ikke skabe genstande her. Denne region kører ikke nogen scripts. </notification> <notification name="NoOutsideScripts"> - Dette land har eksterne scripts slÃ¥et fra -('ingen eksterne scripts'). -Ingen scripts vil køre pÃ¥ nær dem, som tilhører ejeren af landet. + Dette sted tillader ikke udefra kommende scripts. + +Ingen scripts vil virke her, udover de som tilhører ejeren af landet. </notification> <notification name="ClaimPublicLand"> - Du kan kun gøre krav pÃ¥ offentlig land i den region, du befinder dig i. + Du kan kun kræve land i den region du befinder dig i. </notification> <notification name="RegionTPAccessBlocked"> Du har ikke adgang til denne region pÃ¥ grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient. @@ -802,16 +1015,9 @@ GÃ¥ venligst til 'Knowledge Base' for yderligere detaljer om adgang ti <notification name="NoTeenGridAccess"> Du kan ikke tilslutte dig denne 'Teen' region. </notification> - <notification name="NoHelpIslandTP"> - Du kan ikke teleportere tilbage til Help Island. -GÃ¥ til 'Help Island Puclic' for at prøve tutorial igen. - </notification> <notification name="ImproperPaymentStatus"> Du har ikke de rette betalingsoplysninger til at komme ind i denne region. </notification> - <notification name="MustGetAgeRegion"> - Du skal være aldersgodkendt for at komme ind i denne region. - </notification> <notification name="MustGetAgeParcel"> Du skal være aldersgodkendt for at komme ind pÃ¥ denne parcel. </notification> @@ -874,7 +1080,8 @@ Prøv igen om lidt. No valid parcel could be found. </notification> <notification name="ObjectGiveItem"> - En genstand med navnet [OBJECTFROMNAME], ejet af [FIRST] [LAST], har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. + Et objekt med navnet [OBJECTFROMNAME], ejet af [NAME_SLURL], har givet dig [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Behold"/> <button name="Discard" text="Smid væk"/> @@ -882,7 +1089,8 @@ Prøv igen om lidt. </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - En genstand med navnet [OBJECTFROMNAME], ejet af (en ukendt bruger), har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. + Et objekt med navnet [OBJECTFROMNAME], ejet af en ukendt beboer, har givet dig [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Behold"/> <button name="Discard" text="Smid væk"/> @@ -890,15 +1098,17 @@ Prøv igen om lidt. </form> </notification> <notification name="UserGiveItem"> - [NAME] har givet dig en/et [OBJECTTYPE] med navnet '[OBJECTNAME]'. + [NAME_SLURL] har givet dig [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Behold"/> + <button name="Show" text="Vis"/> <button name="Discard" text="Smid væk"/> - <button name="Mute" text="Blokér"/> </form> </notification> <notification name="GodMessage"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -910,7 +1120,7 @@ Prøv igen om lidt. </form> </notification> <notification name="TeleportOffered"> - [NAME] har tilbudt at teleportere dig til hans eller hendes lokalitet: + [NAME] har tilbudt dig en teleport til lokationen: [MESSAGE] <form name="form"> @@ -935,6 +1145,9 @@ Som standard vil du kunne se andres onlinestatus. <button name="Decline" text="Afvis"/> </form> </notification> + <notification name="FriendshipOffered"> + Du har tilbudt venskab til [TO_NAME] + </notification> <notification name="FriendshipAccepted"> [NAME] accepterede dit tilbud om venskab. </notification> @@ -950,12 +1163,12 @@ Dette vil tilføje et bogmærke i din beholdning, sÃ¥ du hurtigt kan sende en pe </form> </notification> <notification name="RegionRestartMinutes"> - Regionen genstarter om [MINUTES] minutter. -Hvis du bliver i denne region, vil du blive logget af. + Denne region vil genstarte om [MINUTES] minutter. +Hvis du ikke forlader regionen, vil du blive logget af. </notification> <notification name="RegionRestartSeconds"> - Regionen genstarter om [SECONDS] sekunder. -Hvis du bliver i denne region, vil du blive logget af. + Denne region genstartes om [SECONDS] sekunder. +Hvis du ikke forlader regionen, vil du blive logget af. </notification> <notification name="LoadWebPage"> Indlæs internetside [URL]? @@ -975,7 +1188,7 @@ Fra genstand: [OBJECTNAME], ejer: [NAME]? Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen. </notification> <notification name="InvalidWearable"> - Den genstand du prøver at tage pÃ¥ benytter funktioner som din klient ikke kan forstÃ¥. Opdatér din version af [APP_NAME] for at tage genstanden pÃ¥. + Den genstand du prøver at tage pÃ¥ benytter en funktion din klient ikke kan forstÃ¥. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand pÃ¥. </notification> <notification name="ScriptQuestion"> '[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: @@ -988,12 +1201,12 @@ Er det iorden? </form> </notification> <notification name="ScriptQuestionCaution"> - '[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: + Et objekt med navnet '[OBJECTNAME]', ejet af '[NAME]', ønsker at: [QUESTIONS] -Hvis du ikke har tillid til denne genstand og dens skaber, bør du afvise denne forespørgsel. For yderligere information klik pÃ¥ Detaljer-knappen. +Hvis du ikke stoler pÃ¥ dette objekt og dets skaber, bør du afvise denne forespørgsel. -Imødekom denne forespørgsel? +Tillad denne anmodning? <form name="form"> <button name="Grant" text="Imødekom"/> <button name="Deny" text="Afvis"/> @@ -1014,39 +1227,44 @@ Imødekom denne forespørgsel? <button name="Ignore" text="Ignorér"/> </form> </notification> + <notification name="ScriptToast"> + [FIRST] [LAST]'s '[TITLE]' ønsker bruger-input. + <form name="form"> + <button name="Open" text="Ã…ben dialog"/> + <button name="Ignore" text="Ignorér"/> + <button name="Block" text="Blokér"/> + </form> + </notification> <notification name="FirstBalanceIncrease"> - Du har lige modtaget L$[AMOUNT]. -Genstande og andre brugere kan give dig L$. -Din saldo er vist i øverste højre hjørne af skærmen. + Du har netop modtaget [AMOUNT] L$. +Din balance vises øverst til højre. </notification> <notification name="FirstBalanceDecrease"> - Du har lige modtaget L$[AMOUNT]. -Din saldo er vist i øverste højre hjørne af skærmen. + Du har netop betalt [AMOUNT] L$. +Din balance vises øverst til højre. + </notification> + <notification name="BuyLindenDollarSuccess"> + Tak for din betaling! + +Din L$ balance vil blive opdateret nÃ¥r transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I sÃ¥ fald vil beløbet blive krediteret din US$ balance. + +Status for din betaling kan ses i din 'Transaction History' side pÃ¥ din [http://secondlife.com/account/ Dashboard] </notification> <notification name="FirstSit"> - Du sidder. -Brug piletasterne (eller AWSD) for at ændre hvilken vej du ser. -Klik pÃ¥ 'StÃ¥ op'-knappen for at rejse dig op. + Du sidder ned. +Benyt piletasterne (eller AWSD) til at se rundt. +Klik pÃ¥ 'StÃ¥ op' tasten for at rejse dig. </notification> <notification name="FirstMap"> - Klik og træk for at flytte kortvisningen. + Klik og træk pÃ¥ kortet for at se rundt. Dobbelt-klik for at teleportere. -Brug kontrollerne til højre for at finde ting og se forskellige baggrunde. +Benyt kontrollerne til højre for at finde ting og se forskellige baggrunde. </notification> <notification name="FirstBuild"> - Du kan bygge nye genstande i nogle omrÃ¥der af [SECOND_LIFE]. -Brug værktøjet øverst til venstre for at bygge, og prøv at holde Ctrl eller Alt nede for hurtigt at skifte imellem værktøjerne. -Tryk Esc for at stoppe med at bygge. - </notification> - <notification name="FirstLeftClickNoHit"> - Venstre-klik interagerer med specielle genstande. -Hvis musemarkøren ændrer sig til en hÃ¥nd, kan du interagere med genstanden. -Højre-klik viser altid en menu med ting du kan gøre. + Du har Ã¥bnet bygge værktøjer. Alle objekter du ser omkring dig er lavet via disse værktøjer. </notification> <notification name="FirstTeleport"> - Du har lige teleporteret. -Du er ved info-standen nærmest ved din destination. -Din destination er markeret med en stor rød lyskegle. + Du kan kun teleportere til bestemte omrÃ¥der i denne region. Pilen peger pÃ¥ din specifikke destination. Klik pÃ¥ pilen for at fjerne den. </notification> <notification name="FirstOverrideKeys"> Dine bevælgelsestaster bliver nu hÃ¥ndteret af et objekt. @@ -1055,46 +1273,41 @@ Nogle genstande (som skydevÃ¥ben) kræver at du gÃ¥r ind i musevisning for at br Tryk pÃ¥ 'M' for at gÃ¥re det. </notification> <notification name="FirstAppearance"> - Du tilretter dit udseende. -For at rotere og zoome brug piletasterne. -NÃ¥r du er færdig, tryk pÃ¥ 'Gem alt' for at gemme dit udseende og lukke. -Du kan rette dit udseende sÃ¥ tit du vil. + Du redigerer dit udseende. +Benyt piletasterne til at se rundt. +NÃ¥r du er færdig, tryk pÃ¥ 'Gem alt'. </notification> <notification name="FirstInventory"> - Dette er din beholdning, der indeholder objekter, noter, tøj og andre ting du ejer. -* For at bære et objekt eller en mappe med tøj, træk den over pÃ¥ dig selv. -* For at fÃ¥ et objekt frem i verdenen, træk den ud pÃ¥ jorden. -* For at læse en note, dobbeltklik pÃ¥ den. + Dette er din beholdning, som indeholder de genstande du ejer. + +* For at tage noget pÃ¥, træk det over pÃ¥ dig selv. +* For at 'rezze' noget, træk det over pÃ¥ jorden. +* For at læse en note, dobbelt-klik pÃ¥ den. </notification> <notification name="FirstSandbox"> - Dette er sandkasseomrÃ¥det. -Genstande, der er skabt her, vil blive slettet efter du har forladt omrÃ¥det. Sandkasser renses jævnligt. Se venligst informationen øverst pÃ¥ skærmen, lige ved siden af omrÃ¥denavnet. + Dette er et sandkasse omrÃ¥de. Her kan beboere lære ast bygge. -SandkasseomrÃ¥der er ikke almindelige. De er mærket med skilte. +De ting du bygger vil blive slettet senere, sÃ¥ glem ikke at højre-klikke og vælge "Tag" for at tage en kopi af din kreation til din beholdning. </notification> <notification name="FirstFlexible"> - Denne genstand er fleksibel. -Fleksible genstande er ikke fysiske og man kan gÃ¥ igennem dem, indtil fleksibel-punktet ikke er afkrydset. + Dette objekt er fleksibelt/blødt. SÃ¥danne objekter skal være 'uden masse' og ikke fysiske. </notification> <notification name="FirstDebugMenus"> - Du har sat avanceret menu til. -Denne menu indeholder funktioner brugbare for udviklere, der udbedrer fejl i [SECOND_LIFE]. -For at vise denne menu, skal man i Windows trykke Ctrl+Alt+D. PÃ¥ Mac tryk ⌥⌘D. + Du har Ã¥bnet menuen 'Avanceret'. + +For at slÃ¥ denne menu fra og til, + Windows: Ctrl+Alt+D + Mac: ⌥⌘D </notification> <notification name="FirstSculptedPrim"> - Du retter en sculpted prim. -Sculpted prims kræver et specielt tekstur for at specificere deres form. -Du kan finde eksempler pÃ¥ sculptede teksturer i din beholdning. - </notification> - <notification name="FirstMedia"> - Du er begyndt at afspille medie. Medie kan sættes til automatisk af blive afspillet under Indstillinger, Lyd / Video. Vær opmærksom pÃ¥, at der kan være en sikkerhedsrisiko for medie-steder, du ikke stoler pÃ¥. + Du redigerer en 'Sculpted prim'. SÃ¥danne objekter kræver en speciel tekstur for at definere faconen. </notification> <notification name="MaxListSelectMessage"> Du mÃ¥ kun vælge op til [MAX_SELECT] genstande pÃ¥ denne liste. </notification> <notification name="VoiceInviteP2P"> - [NAME] inviterer dig til en stemme-chat. -Klik for at acceptere at koble dig pÃ¥ samtalen eller Afvis for at afvise invitationen. Klik pÃ¥ SlÃ¥ fra for at blokere denne opkalder. + [NAME] inviterer dig til en stemme-chat samtale. +Klik pÃ¥ Acceptér for at deltage eller Afvis for at afvise invitationen. Klik pÃ¥ Blokér for at blokere personen. <form name="form"> <button name="Accept" text="Acceptér"/> <button name="Decline" text="Afvis"/> @@ -1102,17 +1315,17 @@ Klik for at acceptere at koble dig pÃ¥ samtalen eller Afvis for at afvise invita </form> </notification> <notification name="AutoUnmuteByIM"> - [FIRST] [LAST] har fÃ¥et en personlig besked (IM) og er automatisk ikke blokeret mere. + [FIRST] [LAST] fik tilsendt en personlig besked og er dermed automatisk ikke mere blokeret. </notification> <notification name="AutoUnmuteByMoney"> - [FIRST] [LAST] har fÃ¥et penge og er automatisk ikke blokeret mere. + [FIRST] [LAST] blev givet penge og er dermed automatisk ikke mere blokeret. </notification> <notification name="AutoUnmuteByInventory"> - [FIRST] [LAST] har fÃ¥et tilbudt genstande og er automatisk ikke blokeret mere. + [FIRST] [LAST] blev tilbudt en genstand og er dermed automatisk ikke mere blokeret. </notification> <notification name="VoiceInviteGroup"> - [NAME] har tilsluttet sig stemme-chat med gruppen [GROUP]. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP]. +Klik pÃ¥ Acceptér for at deltage eller Afvis for at afvise invitationen. Klik pÃ¥ Blokér for at blokere personen. <form name="form"> <button name="Accept" text="Acceptér"/> <button name="Decline" text="Afvis"/> @@ -1120,8 +1333,8 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati </form> </notification> <notification name="VoiceInviteAdHoc"> - [NAME] har tilsluttet sig stemme-chat med en konference-chat. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + [NAME] har sluttet sig til en stemme-chat med en konference chat. +Klik pÃ¥ Acceptér for at deltage eller Afvis for at afvise invitationen. Klik pÃ¥ Blokér for at blokere personen. <form name="form"> <button name="Accept" text="Acceptér"/> <button name="Decline" text="Afvis"/> @@ -1129,12 +1342,12 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati </form> </notification> <notification name="InviteAdHoc"> - [NAME] inviterer dig til en konference-chat. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + [NAME] inviterer dig til en konference chat. +Klik pÃ¥ Acceptér for at deltage eller Afvis for at afvise invitationen. Klik pÃ¥ Blokér for at blokere personen. <form name="form"> <button name="Accept" text="Acceptér"/> <button name="Decline" text="Afvis"/> - <button name="Mute" text="Blokeret"/> + <button name="Mute" text="Blokér"/> </form> </notification> <notification name="VoiceChannelFull"> @@ -1144,25 +1357,25 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati Vi beklager. Dette omrÃ¥de har nÃ¥et sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet omrÃ¥de. </notification> <notification name="VoiceChannelDisconnected"> - Du er blevet koblet af [VOICE_CHANNEL_NAME]. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + Du er blevet koblet fra [VOICE_CHANNEL_NAME]. Du vil nu blive koblet til almindelig voice-chat. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] har afsluttet opkaldet. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + [VOICE_CHANNEL_NAME] har afsluttet samtalen. Du vil nu blive koblet til almindelig voice-chat. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] har afvist dit opkald. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + [VOICE_CHANNEL_NAME] har avist dit opkald. Du vil nu blive koblet til almindelig voice-chat. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] har ikke mulighed for at besvare dit opkald. Du vil nu blive koblet op pÃ¥ en lokal chat. + [VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald. Du vil nu blive koblet til almindelig voice-chat. </notification> <notification name="VoiceChannelJoinFailed"> - Det lykkedes ikke at koble op til [VOICE_CHANNEL_NAME]. Prøv venligst igen senere. + Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere. Du vil nu blive koblet til almindelig voice-chat. </notification> <notification name="VoiceLoginRetry"> Vi laver en stemmekanal til dig. Det kan tage op til et minut. </notification> <notification name="Cannot enter parcel: not a group member"> - Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er ikke medlem af den nødvendige gruppe. + Kun medlemmer af en bestemt gruppe kan besøge dette omrÃ¥de. </notification> <notification name="Cannot enter parcel: banned"> Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er blevet udelukket. @@ -1177,9 +1390,58 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati En fejl er opstÃ¥et under forsøget pÃ¥ at koble sig pÃ¥ stemme chatten [VOICE_CHANNEL_NAME]. PrÃ¥v venligst senere. </notification> <notification name="ServerVersionChanged"> - Det omrÃ¥de, du er kommet ind pÃ¥, kører en anden simulatorversion. Klik pÃ¥ denne besked for detaljer. + Du er netop ankommet til en region der benytter en anden server version, hvilket kan influere pÃ¥ hastigheden. [[URL] For at se yderligere.] + </notification> + <notification name="UnsupportedCommandSLURL"> + Den SLurl du klikkede pÃ¥ understøttes ikke. + </notification> + <notification name="BlockedSLURL"> + En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige Ã¥rsager. + </notification> + <notification name="ThrottledSLURL"> + Flere SLurls blev modtaget fra en browser i et kort tidsrum. +De vil blive blokeret nogle fÃ¥ sekunder af sikkerhedsmæssige Ã¥rsager. + </notification> + <notification name="IMToast"> + [MESSAGE] + <form name="form"> + <button name="respondbutton" text="Svar"/> + </form> + </notification> + <notification name="AttachmentSaved"> + Vedhæng er blevet gemt. </notification> - <notification name="UnableToOpenCommandURL"> - Www-adressen, du har klikket pÃ¥, kan ikke Ã¥bnes fra denne internetbrowser. + <notification name="UnableToFindHelpTopic"> + Ikke muligt at finde hjælp om dette element. </notification> + <notification name="ObjectMediaFailure"> + Server fejl: Media opdatering eller "get" fejlede. +'[ERROR]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TextChatIsMutedByModerator"> + Din tekst chat er blevet slukket af moderator. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Din stemme er blevet slukket af moderatoren. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmClearTeleportHistory"> + Er du sikker pÃ¥ at du vil slette teleport historikken? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + Den valgte knap kan ikke vises lige nu. +Knappen vil blive vist nÃ¥r der er nok plads til den. + </notification> + <global name="UnsupportedGLRequirements"> + Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. + +Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE]. + </global> + <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> + Hvis du selv ejer land, kan du benytte det til hjemme lokation. +Ellers kan du se pÃ¥ verdenskortet og finde steder markeret med "Infohub". + </global> </notifications> diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml new file mode 100644 index 00000000000..a9d5ba73acf --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT]s + </string> + <string name="FormatMinutes"> + [COUNT]m + </string> + <string name="FormatHours"> + [COUNT]t + </string> + <string name="FormatDays"> + [COUNT]d + </string> + <string name="FormatWeeks"> + [COUNT]u + </string> + <string name="FormatMonths"> + [COUNT]mÃ¥n + </string> + <string name="FormatYears"> + [COUNT]Ã¥ + </string> + <text name="avatar_name" value="Ukendt"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_classified_info.xml b/indra/newview/skins/default/xui/da/panel_classified_info.xml new file mode 100644 index 00000000000..a9cce7bf453 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_classified_info.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <text name="title" value="Annonce info"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="classified_name" value="[name]"/> + <text name="classified_location" value="[loading...]"/> + <text name="content_type" value="[content type]"/> + <text name="category" value="[category]"/> + <check_box label="Forny automatisk hver uge" name="auto_renew"/> + <text name="price_for_listing" tool_tip="Pris for optagelse."> + L$[PRICE] + </text> + <text name="classified_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleport" name="teleport_btn"/> + <button label="Kort" name="show_on_map_btn"/> + <button label="Redigér" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_classified.xml b/indra/newview/skins/default/xui/da/panel_edit_classified.xml new file mode 100644 index 00000000000..18689105aec --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_classified.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Redigér annoncer" name="panel_edit_classified"> + <panel.string name="location_notice"> + (vil blive opdateret efter gemning) + </panel.string> + <text name="title"> + Rediger annonce + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Klik for at forstørre billede"/> + <text name="Name:"> + Titel: + </text> + <text name="description_label"> + Beskrivelse: + </text> + <text name="location_label"> + Lokation: + </text> + <text name="classified_location"> + henter... + </text> + <button label="Sæt til nuværende lokation" name="set_to_curr_location_btn"/> + <spinner label="L$" name="price_for_listing" tool_tip="Pris for optagelse." value="50"/> + <check_box label="Forny automatisk hver uge" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Gem" name="save_changes_btn"/> + <button label="Annullér" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_hair.xml b/indra/newview/skins/default/xui/da/panel_edit_hair.xml new file mode 100644 index 00000000000..14511d51d52 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_hair.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_hair_panel"> + <panel name="avatar_hair_color_panel"> + <texture_picker label="Tekstur" name="Texture" tool_tip="Klik for at vælge et billede"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Farve"/> + <accordion_tab name="hair_style_tab" title="Stil"/> + <accordion_tab name="hair_eyebrows_tab" title="Øjenbryn"/> + <accordion_tab name="hair_facial_tab" title="Skæg"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml index a8a02a34b79..d3cfdbba52f 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml @@ -1,46 +1,49 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="edit_profile_panel"> - <string name="CaptionTextAcctInfo"> - [ACCTTYPE] +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Redigér profil" name="edit_profile_panel"> + <string name="CaptionTextAcctInfo"> + [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] - </string> - <string name="AcctTypeResident" - value="Beboer" /> - <string name="AcctTypeTrial" - value="PÃ¥ prøve" /> - <string name="AcctTypeCharterMember" - value="æresmedlem" /> - <string name="AcctTypeEmployee" - value="Linden Lab medarbejder" /> - <string name="PaymentInfoUsed" - value="Betalende medlem" /> - <string name="PaymentInfoOnFile" - value="Registreret betalende" /> - <string name="NoPaymentInfoOnFile" - value="Ingen betalingsinfo" /> - <string name="AgeVerified" - value="Alders-checket" /> - <string name="NotAgeVerified" - value="Ikke alders-checket" /> - <string name="partner_edit_link_url"> - http://www.secondlife.com/account/partners.php?lang=da - </string> - <panel name="scroll_content_panel"> - <panel name="data_panel" > - <panel name="lifes_images_panel"> - <panel name="second_life_image_panel"> - <text name="second_life_photo_title_text"> - [SECOND_LIFE]: - </text> - </panel> - </panel> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="text_box3"> - Optaget autosvar: - </text> - </panel> - </panel> + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <string name="AcctTypeResident" value="Beboer"/> + <string name="AcctTypeTrial" value="PÃ¥ prøve"/> + <string name="AcctTypeCharterMember" value="æresmedlem"/> + <string name="AcctTypeEmployee" value="Linden Lab medarbejder"/> + <string name="PaymentInfoUsed" value="Betalende medlem"/> + <string name="PaymentInfoOnFile" value="Registreret betalende"/> + <string name="NoPaymentInfoOnFile" value="Ingen betalingsinfo"/> + <string name="AgeVerified" value="Alders-checket"/> + <string name="NotAgeVerified" value="Ikke alders-checket"/> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=da + </string> + <string name="no_partner_text" value="Ingen"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="data_panel"> + <panel name="lifes_images_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Klik for at vælge et billede"/> + </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Real World:"/> + </panel> + <icon label="" name="real_world_edit_icon" tool_tip="Klik for at vælge et billede"/> + <text name="title_homepage_text"> + Hjemmeside: + </text> + <check_box label="Vis mig i søgeresultater" name="show_in_search_checkbox"/> + <text name="title_acc_status_text" value="Min konto:"/> + <text name="my_account_link" value="[[URL] Go to My Dashboard]"/> + <text name="acc_status_text" value="Beboer. Ingen betalingsinfo."/> + <text name="title_partner_text" value="Min partner:"/> + <text name="partner_edit_link" value="[[URL] Edit]"/> + </panel> + </panel> + </scroll_container> + <panel name="profile_me_buttons_panel"> + <button label="Gem ændringer" name="save_btn"/> + <button label="Annullér" name="cancel_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_shape.xml b/indra/newview/skins/default/xui/da/panel_edit_shape.xml new file mode 100644 index 00000000000..19c27748caa --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_shape.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_shape_panel"> + <panel name="avatar_sex_panel"> + <text name="gender_text"> + Køn: + </text> + <radio_group name="sex_radio"> + <radio_item label="Kvinde" name="radio"/> + <radio_item label="Mand" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Krop"/> + <accordion_tab name="shape_head_tab" title="Hoved"/> + <accordion_tab name="shape_eyes_tab" title="Øjne"/> + <accordion_tab name="shape_ears_tab" title="Ører"/> + <accordion_tab name="shape_nose_tab" title="Næse"/> + <accordion_tab name="shape_mouth_tab" title="Mund"/> + <accordion_tab name="shape_chin_tab" title="Hage"/> + <accordion_tab name="shape_torso_tab" title="Overkrop"/> + <accordion_tab name="shape_legs_tab" title="Ben"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_shirt.xml b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml new file mode 100644 index 00000000000..cd2e8d8cb32 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_shirt_panel"> + <panel name="avatar_shirt_color_panel"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Trøje"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_skirt.xml b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml new file mode 100644 index 00000000000..4407c87d364 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_skirt_panel"> + <panel name="avatar_skirt_color_panel"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Nederdel"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml new file mode 100644 index 00000000000..4a133d86935 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_tattoo_panel"> + <panel name="avatar_tattoo_color_panel"> + <texture_picker label="Hoved tatovering" name="Head Tattoo" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Øvre tatovering" name="Upper Tattoo" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Nedre tatovering" name="Lower Tattoo" tool_tip="Klik for at vælge et billede"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_list_item.xml b/indra/newview/skins/default/xui/da/panel_group_list_item.xml new file mode 100644 index 00000000000..bfffdccc5e1 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_group_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="group_list_item"> + <text name="group_name" value="Ukendt"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_notify.xml b/indra/newview/skins/default/xui/da/panel_group_notify.xml new file mode 100644 index 00000000000..43a84298e25 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_group_notify.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="instant_message" name="panel_group_notify"> + <panel label="header" name="header"> + <text name="title" value="Afsender navn / Gruppe navn"/> + </panel> + <text name="attachment" value="Bilag"/> + <button label="Ok" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml index 2cb57b4e87d..74bea831fb8 100644 --- a/indra/newview/skins/default/xui/da/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml @@ -17,7 +17,7 @@ klik pÃ¥ deres navne. <name_list name="member_list"> <name_list.columns label="Medlemsnavn" name="name"/> <name_list.columns label="Doneret leje" name="donated"/> - <name_list.columns label="Sidst pÃ¥ den" name="online"/> + <name_list.columns label="Status" name="online"/> </name_list> <button label="Invitér nyt medlem" name="member_invite"/> <button label="Udmeld" name="member_eject"/> @@ -30,7 +30,7 @@ en eller flere roller. En gruppe kan have op til 10 roller, inkluderet alle- og ejerroller. </panel.string> <panel.string name="cant_delete_role"> - 'Alle-' og 'Ejerroller' er specielle og kan ikke slettes. + Rollerne 'Everyone' og 'Owners' er specielle og kan ikke slettes </panel.string> <panel.string name="power_folder_icon"> Inv_FolderClosed @@ -39,7 +39,7 @@ inkluderet alle- og ejerroller. <scroll_list name="role_list"> <scroll_list.columns label="Rollenavn" name="name"/> <scroll_list.columns label="Titel" name="title"/> - <scroll_list.columns label="Medlemmer" name="members"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> <button label="Opret ny rolle" name="role_create"/> <button label="Slet rolle" name="role_delete"/> @@ -58,7 +58,7 @@ ting i denne gruppe. Der er en bred vifte af rettigheder. </tab_container> <panel name="members_footer"> <text name="static"> - Tildelte roller + Medlemmer </text> <scroll_list name="member_assigned_roles"> <scroll_list.columns label="" name="checkbox"/> @@ -74,13 +74,13 @@ ting i denne gruppe. Der er en bred vifte af rettigheder. </panel> <panel name="roles_footer"> <text name="static"> - Navn + Rolle navn </text> <line_editor name="role_name"> Ansatte </line_editor> <text name="static3"> - Titel + Rolle titel </text> <line_editor name="role_title"> (venter) @@ -94,7 +94,7 @@ ting i denne gruppe. Der er en bred vifte af rettigheder. <text name="static4"> Tildelte roller </text> - <check_box label="Medlemmer er synlige" name="role_visible_in_list" tool_tip="Angiver om medlemmer med denne rolle er synlige i fanen 'Generelt' for avatarer uden for gruppen."/> + <check_box label="Vis medlemmer for andre" name="role_visible_in_list" tool_tip="Angiver om medlemmer med denne rolle er synlige i fanen 'Generelt' for avatarer uden for gruppen."/> <text name="static5" tool_tip="A list of Abilities the currently selected role can perform."> Tilladte rettigheder </text> diff --git a/indra/newview/skins/default/xui/da/panel_im_control_panel.xml b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml new file mode 100644 index 00000000000..0384652e5d0 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <text name="avatar_name" value="Ukendt"/> + <button label="Profil" name="view_profile_btn"/> + <button label="Tilføj ven" name="add_friend_btn"/> + <button label="Teleportér" name="teleport_btn"/> + <button label="Del" name="share_btn"/> + <panel name="panel_call_buttons"> + <button label="Opkald" name="call_btn"/> + <button label="Læg pÃ¥" name="end_call_btn"/> + <button label="Stemme opsætning" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_landmark_info.xml b/indra/newview/skins/default/xui/da/panel_landmark_info.xml new file mode 100644 index 00000000000..202a4d46645 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_landmark_info.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="Opret landemærke"/> + <string name="title_edit_landmark" value="Redigér landemærke"/> + <string name="title_landmark" value="Landemærke"/> + <string name="not_available" value="(N\A)"/> + <string name="unknown" value="(ukendt)"/> + <string name="public" value="(offentlig)"/> + <string name="server_update_text"> + Information om sted ikke tilgængelig før en opdatering af server. + </string> + <string name="server_error_text"> + Information om dette sted er ikke tilgængelig lige nu, prøv venligst igen senere. + </string> + <string name="server_forbidden_text"> + Information om dette sted er ikke tilgængelig pÃ¥ grund af begrænsning i rettigheder. Check venligst dine adgangsrettigheder med ejeren af parcellen. + </string> + <string name="acquired_date"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </string> + <text name="title" value="Sted profil"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="maturity_value" value="ukendt"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Ejer:"/> + <text name="creator_label" value="Skaber:"/> + <text name="created_label" value="Lavet d.:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Titel:"/> + <text name="notes_label" value="Mine noter:"/> + <text name="folder_label" value="Landemærke lokation:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml new file mode 100644 index 00000000000..47487832cbb --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_landmarks.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Landmarks"> + <accordion name="landmarks_accordion"> + <accordion_tab name="tab_favorites" title="Favorites bjælke"/> + <accordion_tab name="tab_landmarks" title="Landemærker"/> + <accordion_tab name="tab_inventory" title="Min beholdning"/> + <accordion_tab name="tab_library" title="Bibliotek"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Vis yderligere valg"/> + <button name="add_btn" tool_tip="Tilføj nyt landemærke"/> + <dnd_button name="trash_btn" tool_tip="Fjern valgte landemærke"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index 3b1b717c462..c8c275d84d0 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -6,33 +6,29 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - Fornavn: - </text> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Fornavn"/> - <text name="last_name_text"> - Efternavn: - </text> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Efternavn"/> - <text name="password_text"> - Password: - </text> - <button label="Log Ind" label_selected="Log Ind" name="connect_btn"/> - <text name="start_location_text"> - Start lokation: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Min sidste lokation" name="MyLastLocation"/> - <combo_box.item label="Hjem" name="MyHome"/> - <combo_box.item label="<Skriv navn pÃ¥ region>" name="Typeregionname"/> - </combo_box> - <check_box label="Husk password" name="remember_check"/> - <text name="create_new_account_text"> - Opret bruger - </text> - <text name="forgot_password_text"> - Glemt navn eller password? - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Fornavn: + </text> + <line_editor label="Fornavn" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/> + <line_editor label="Efternavn" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/> + <check_box label="Husk" name="remember_check"/> + <text name="start_location_text"> + Start ved: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Hjem" name="MyHome"/> + </combo_box> + <button label="Log pÃ¥" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Opret bruger + </text> + <text name="login_help"> + Hjælp til login + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml new file mode 100644 index 00000000000..70570920cda --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Tilpas" name="Media settings for controls"> + <text name="controls_label"> + Kontroller: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Standard + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_owner_interact"/> + <check_box initial_value="false" label="Vis kontrol bjælke" name="perms_owner_control"/> + <check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_group_interact"/> + <check_box initial_value="false" label="Vis kontrol bjælke" name="perms_group_control"/> + <check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_anyone_interact"/> + <check_box initial_value="false" label="Vis kontrol bjælke" name="perms_anyone_control"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml new file mode 100644 index 00000000000..465bc75a1bf --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <button name="back_btn" tool_tip="GÃ¥ tilbage til min forrige lokation"/> + <button name="forward_btn" tool_tip="GÃ¥ en lokation fremad"/> + <button name="home_btn" tool_tip="Teleport til min hjemme lokation"/> + <location_input label="Lokation" name="location_combo"/> + <search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg"> + <combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="Søg mere af mine favoritter"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_notes.xml b/indra/newview/skins/default/xui/da/panel_notes.xml new file mode 100644 index 00000000000..f8d911b9e58 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Noter & Privatliv" name="panel_notes"> + <layout_stack name="layout"> + <panel name="notes_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <text name="status_message" value="Min private noter:"/> + <text name="status_message2" value="Tillad denne person at:"/> + <check_box label="Se min online status" name="status_check"/> + <check_box label="Se mig pÃ¥ kortet" name="map_check"/> + <check_box label="Editére, slette og tage mine objekter" name="objects_check"/> + </panel> + </scroll_container> + </panel> + <panel name="notes_buttons_panel"> + <button label="Tilføj" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/> + <button label="IM" name="im" tool_tip="Ã…ben session med personlig besked (IM)"/> + <button label="Kald" name="call" tool_tip="Opkald til denne beboer"/> + <button label="Kort" name="show_on_map_btn" tool_tip="Vis beboeren pÃ¥ kortet"/> + <button label="Teleport" name="teleport" tool_tip="Tilbyd teleport"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml new file mode 100644 index 00000000000..7d6401283e0 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Outfits"> + <accordion name="outfits_accordion"> + <accordion_tab name="tab_cof" title="Nuværende sæt"/> + <accordion_tab name="tab_outfits" title="Mine sæt"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml new file mode 100644 index 00000000000..a6a796f6127 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <menu_item_call label="Erstat nuværende sæt" name="wear"/> + <menu_item_call label="Tilføj til nuværende sæt" name="add"/> + <menu_item_call label="Fjern fra nuværende sæt" name="remove"/> + <menu_item_call label="Omdøb" name="rename"/> + <menu_item_call label="Fjern" name="remove_link"/> + <menu_item_call label="Slet" name="delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml new file mode 100644 index 00000000000..07b7f60810b --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Personer" name="people_panel"> + <string name="no_people" value="Ingen personer"/> + <string name="no_one_near" value="Ingen tæt pÃ¥"/> + <string name="no_friends_online" value="Ingen venner online"/> + <string name="no_friends" value="Ingen venner"/> + <string name="no_groups" value="Ingen grupper"/> + <string name="people_filter_label" value="Filtrér personer"/> + <string name="groups_filter_label" value="Filtrér grupper"/> + <filter_editor label="Filtrér" name="filter_input"/> + <tab_container name="tabs"> + <panel label="TÆT PÃ…" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Valg"/> + <button name="add_friend_btn" tool_tip="Tilføjer valgte beboere til din venneliste"/> + </panel> + </panel> + <panel label="VENNER" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Online"/> + <accordion_tab name="tab_all" title="Alle"/> + </accordion> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Valg"/> + <button name="add_btn" tool_tip="Tilbyd venskab til beboer"/> + <button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/> + </panel> + </panel> + <panel label="GRUPPER" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Valg"/> + <button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/> + <button name="activate_btn" tool_tip="Activér valgte gruppe"/> + </panel> + </panel> + <panel label="NYLIGE" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Valg"/> + <button name="add_friend_btn" tool_tip="Tilføj valgte person til din venneliste"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Profil" name="view_profile_btn" tool_tip="Vis billede, grupper og anden information om beboer"/> + <button label="IM" name="im_btn" tool_tip="Chat privat med denne person"/> + <button label="Opkald" name="call_btn" tool_tip="Opkald til denne beboer"/> + <button label="Del" name="share_btn"/> + <button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport"/> + <button label="Group profil" name="group_info_btn" tool_tip="Vis gruppe information"/> + <button label="Gruppe chat" name="chat_btn" tool_tip="Ã…ben chat session"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml new file mode 100644 index 00000000000..ee3c59b88a8 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_picks.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Favoritter" name="panel_picks"> + <string name="no_picks" value="Ingen favoritter"/> + <string name="no_classifieds" value="Ingen annoncer"/> + <text name="empty_picks_panel_text"> + Der er ingen favoritter/annoncer her + </text> + <accordion name="accordion"> + <accordion_tab name="tab_picks" title="Favoritter"/> + <accordion_tab name="tab_classifieds" title="Annoncer"/> + </accordion> + <panel label="bottom_panel" name="edit_panel"> + <button name="new_btn" tool_tip="Opret en ny favorit eller annonce pÃ¥ dette sted"/> + </panel> + <panel name="buttons_cucks"> + <button label="Info" name="info_btn" tool_tip="Vis favorit information"/> + <button label="Teleportér" name="teleport_btn" tool_tip="Teleportér til dette sted"/> + <button label="Kort" name="show_on_map_btn" tool_tip="Vis dette sted pÃ¥ verdenskort"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml new file mode 100644 index 00000000000..052bf749cb7 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_places.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Steder" name="places panel"> + <string name="landmarks_tab_title" value="MINE LANDEMÆRKER"/> + <string name="teleport_history_tab_title" value="TELEPORT HISTORIK"/> + <filter_editor label="Filtrér steder" name="Filter"/> + <panel name="button_panel"> + <button label="Teleportér" name="teleport_btn"/> + <button label="Kort" name="map_btn"/> + <button label="Redigér" name="edit_btn"/> + <button label="Luk" name="close_btn"/> + <button label="Annullér" name="cancel_btn"/> + <button label="Gem" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml index c62beac8998..c382b222eaf 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml @@ -1,33 +1,26 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Kommunikation" name="im"> - <text name="text_box"> - Min online status: + <panel.string name="log_in_to_change"> + log pÃ¥ for at ændre + </panel.string> + <button label="Nulstil historik" name="clear_cache"/> + <text name="cache_size_label_l"> + (Lokationer, billeder, web, søge historik) </text> - <check_box label="Kun mine venner og grupper kan se nÃ¥r jeg er online" - name="online_visibility" /> - <text name="text_box2"> - IM valg: + <check_box label="Kun venner og grupper ved jeg er online" name="online_visibility"/> + <check_box label="Kun venner og grupper kan sende besked til mig" name="voice_call_friends_only_check"/> + <check_box label="SlÃ¥ mikrofon fra nÃ¥r opkald slutter" name="auto_disengage_mic_check"/> + <check_box label="Acceptér cookies" name="cookies_enabled"/> + <check_box label="Tillad media autoplay" name="autoplay_enabled"/> + <text name="Logs:"> + Logs: </text> - <string name="log_in_to_change"> - Log ind for at ændre - </string> - <check_box label="Send IM til E-mail ([EMAIL])" name="send_im_to_email" /> - <check_box label="Inkludér IM i chat vindue" name="include_im_in_chat_console" /> - <check_box label="Vis tidslinje i private beskeder (IM)" name="show_timestamps_check" /> - <check_box label="Vis nÃ¥r venner logger pÃ¥" name="friends_online_notify_checkbox" /> - <text name="text_box3"> - Optaget autosvar: + <check_box label="Gem en log med lokal chat pÃ¥ min computer" name="log_nearby_chat"/> + <check_box label="Gem en log med private beskeder (IM) pÃ¥ min computer" name="log_instant_messages"/> + <check_box label="Tilføj tidsstempel" name="show_timestamps_check_im"/> + <text name="log_path_desc"> + Placering af logfiler </text> - <text name="text_box4"> - Log funktioner: - </text> - <check_box label="Gem en log af privat beskeder (IM) pÃ¥ min computer" - name="log_instant_messages" /> - <check_box label="Vis klokkeslæt i log" name="log_instant_messages_timestamp" /> - <check_box label="Vis slutningen af sidste samtale i beskeder" name="log_show_history" /> - <check_box label="Gem log af lokal chat pÃ¥ min computer" name="log_chat" /> - <check_box label="Vis klokkeslæt i lokat chat log" name="log_chat_timestamp" /> - <check_box label="Vis indkommende IM i lokal chat log" name="log_chat_IM" /> - <check_box label="Inkludér dato med klokkeslæt" name="log_date_timestamp" /> - <button label="Ændre sti" label_selected="Ændre sti" name="log_path_button" left="150"/> + <button label="Ændre sti" label_selected="Ændre sti" left="150" name="log_path_button"/> + <button label="Liste med blokeringer" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index e826e65315f..2dd0b71d8fe 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -1,30 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Input & kamera" name="Input panel"> - <text name=" Mouselook Options:"> - Førstepersons valg: +<panel label="Input og kamera" name="Input panel"> + <button label="Andre enheder" name="joystick_setup_button"/> + <text name="Mouselook:"> + Første person: </text> - <text name=" Mouse Sensitivity:"> - Mus følsomhed: + <text name=" Mouse Sensitivity"> + Mus - følsomhed </text> - <check_box label="Omvendt mus" name="invert_mouse"/> - <text name=" Auto Fly Options:"> - Auto flyv valg: + <check_box label="Omvendt" name="invert_mouse"/> + <text name="Network:"> + Netværk: </text> - <check_box label="Flyv/Land ved at holde Page Up/Down nede" name="automatic_fly"/> - <text name=" Camera Options:"> - Kamera valg: + <text name="Maximum bandwidth"> + Maksimum bÃ¥ndbredde </text> - <text name="camera_fov_label"> - Camera synsvinkel: + <text name="text_box2"> + kbps </text> - <text name="Camera Follow Distance:"> - Kamera følge-afstand: + <check_box label="Speciel port" name="connection_port_enabled"/> + <spinner label="Port nummer:" name="web_proxy_port"/> + <text name="cache_size_label_l"> + Cache størrelse </text> - <check_box label="Fokusér kamera automatisk ved redigering" name="edit_camera_movement" tool_tip="Fokusér kamera automatisk nÃ¥r du gÃ¥r ind og ud af redigering."/> - <check_box label="Fokusér kamera automatisk ved udseende" name="appearance_camera_movement" tool_tip="Lad kameraet automatisk placere sig nÃ¥r du er i redigering"/> - <text name="text2"> - Avatar skærm funktioner: + <text name="text_box5"> + MB + </text> + <button label="Vælg" label_selected="Vælg" name="set_cache"/> + <button label="Nulstil" label_selected="Gem" name="reset_cache"/> + <text name="Cache location"> + Cache lokation + </text> + <text name="Web:"> + Web: + </text> + <radio_group name="use_external_browser"> + <radio_item label="Benyt den indbyggede browser" name="internal" tool_tip="Brug den indbyggede web browser til hjælp, web links m.v. Denne browser Ã¥bner et nyt vindue i [APP_NAME]."/> + <radio_item label="Brug min normale browser (IE, Firefox)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm."/> + </radio_group> + <check_box initial_value="false" label="Web proxy" name="web_proxy_enabled"/> + <line_editor name="web_proxy_editor" tool_tip="Angiv navn eller IP addresse pÃ¥ den proxy du ønsker at anvende"/> + <button label="Vælg" label_selected="Vælg" name="set_proxy"/> + <text name="Proxy location"> + Proxy placering </text> - <check_box label="Vis avatar i førsteperson" name="first_person_avatar_visible"/> - <button label="Joystick opsætning" name="joystick_setup_button"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml new file mode 100644 index 00000000000..ef7110ffcf5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_profile.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Profil" name="panel_profile"> + <string name="no_partner_text" value="Ingen"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="Real world:"/> + </panel> + <text name="me_homepage_text"> + Hjemmeside: + </text> + <text name="title_member_text" value="Medlem siden:"/> + <text name="title_acc_status_text" value="Konto status:"/> + <text name="acc_status_text" value="Beboer. Ingen betalingsinfo"/> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Grupper:"/> + </panel> + </scroll_container> + <panel name="profile_buttons_panel"> + <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til denne beboer"/> + <button label="IM" name="im" tool_tip="Skriv en personlig besked (IM)"/> + <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/> + <button label="Map" name="show_on_map_btn" tool_tip="Show the resident on the map"/> + <button label="Tilbyd teleport" name="teleport" tool_tip="Tilbyd en teleport til denne beboer"/> + <button label="â–¼" name="overflow_btn" tool_tip="Betal penge til eller del beholdning med denne beboer"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Redigér profil" name="edit_profile_btn"/> + <button label="Redigér udseende" name="edit_appearance_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml index 394664f1f11..0e8ab7556f9 100644 --- a/indra/newview/skins/default/xui/da/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/da/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Covenant" name="Covenant"> <text name="estate_section_lbl"> - Estate: + Estate </text> <text name="estate_name_lbl"> Navn: @@ -27,10 +27,10 @@ Ændringer i regler vil blive vist i alle parceller til denne estate. </text> <text name="covenant_instructions"> - Træk og slip et notecard her for at ændre regler for denne estate. + Træk og slip en note for at ændre regler for denne estate. </text> <text name="region_section_lbl"> - Region: + Region </text> <text name="region_name_lbl"> Navn: diff --git a/indra/newview/skins/default/xui/da/panel_region_debug.xml b/indra/newview/skins/default/xui/da/panel_region_debug.xml index 07e857163ac..08e2d1e263e 100644 --- a/indra/newview/skins/default/xui/da/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/da/panel_region_debug.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="Debug" name="Debug"> <text name="region_text_lbl"> Region: @@ -6,16 +6,13 @@ <text name="region_text"> ukendt </text> - <check_box label="Deaktivér scripts" name="disable_scripts_check" - tool_tip="Deaktivér alle scripts i denne region" /> - <button label="?" name="disable_scripts_help" /> - <check_box label="Deaktivér kollisioner" name="disable_collisions_check" - tool_tip="Deaktivér kollisioner mellem objekter i denne region" /> - <button label="?" name="disable_collisions_help" /> - <check_box label="Deaktivér fysik" name="disable_physics_check" - tool_tip="Deaktivér alt fysik i denne region" /> - <button label="?" name="disable_physics_help" /> - <button label="Gem" name="apply_btn" /> + <check_box label="Deaktivér scripts" name="disable_scripts_check" tool_tip="Deaktivér alle scripts i denne region"/> + <button label="?" name="disable_scripts_help"/> + <check_box label="Deaktivér kollisioner" name="disable_collisions_check" tool_tip="Deaktivér kollisioner mellem objekter i denne region"/> + <button label="?" name="disable_collisions_help"/> + <check_box label="Deaktivér fysik" name="disable_physics_check" tool_tip="Deaktivér alt fysik i denne region"/> + <button label="?" name="disable_physics_help"/> + <button label="Gem" name="apply_btn"/> <text name="objret_text_lbl"> Returnér objekter </text> @@ -25,27 +22,19 @@ <line_editor name="target_avatar_name"> (ingen) </line_editor> - <button label="Vælg..." name="choose_avatar_btn" /> + <button label="Vælg" name="choose_avatar_btn"/> <text name="options_text_lbl"> Valg: </text> - <check_box label="Returnér kun objekter med script" name="return_scripts" - tool_tip="Returnér kun objekter med scripts." /> - <check_box label="Returnér kun objekter pÃ¥ andre brugeres land" name="return_other_land" - tool_tip="returnér kun objekter pÃ¥ land som tilhører andre" /> - <check_box label="Returnér objekter fra alle regioner i denne estate" - name="return_estate_wide" - tool_tip="Returnér objekter i alle regioner der tilhører denne estate" /> - <button label="Returnér" name="return_btn" /> - <button label="Mest kolliderende..." name="top_colliders_btn" - tool_tip="Liste med de objekter der oplever flest kollissioner" /> - <button label="?" name="top_colliders_help" /> - <button label="Mest krævende scripts..." name="top_scripts_btn" - tool_tip="Liste med de objekter der kræver mest script tid" /> - <button label="?" name="top_scripts_help" /> - <button label="Genstart region" name="restart_btn" - tool_tip="Genstart region om 2 minutter (sender advarsel først)" /> - <button label="?" name="restart_help" /> - <button label="Udskyd genstart" name="cancel_restart_btn" - tool_tip="Udsæt genstart med en time" /> + <check_box label="Med scripts" name="return_scripts" tool_tip="Returnér kun objekter med scripts"/> + <check_box label="PÃ¥ en andens land" name="return_other_land" tool_tip="returnér kun objekter pÃ¥ land som tilhører andre"/> + <check_box label="I hver eneste region i denne estate" name="return_estate_wide" tool_tip="Returnér objekter i alle regioner der tilhører denne estate"/> + <button label="Returnér" name="return_btn"/> + <button label="Mest kolliderende..." name="top_colliders_btn" tool_tip="Liste med de objekter der oplever flest kollissioner"/> + <button label="?" name="top_colliders_help"/> + <button label="Mest krævende scripts..." name="top_scripts_btn" tool_tip="Liste med de objekter der kræver mest script tid"/> + <button label="?" name="top_scripts_help"/> + <button label="Genstart region" name="restart_btn" tool_tip="Genstart region om 2 minutter (sender advarsel først)"/> + <button label="?" name="restart_help"/> + <button label="Udskyd genstart" name="cancel_restart_btn" tool_tip="Udsæt genstart med en time"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_texture.xml b/indra/newview/skins/default/xui/da/panel_region_texture.xml index 65c4743da03..fc597eee151 100644 --- a/indra/newview/skins/default/xui/da/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/da/panel_region_texture.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="Terræn textures" name="Textures"> <text name="region_text_lbl"> Region: @@ -36,22 +36,22 @@ <text name="height_text_lbl9"> Nordøst </text> - <spinner label="Lav" name="height_start_spin_0" /> - <spinner label="Lav" name="height_start_spin_1" /> - <spinner label="Lav" name="height_start_spin_2" /> - <spinner label="Lav" name="height_start_spin_3" /> - <spinner label="Høj" name="height_range_spin_0" /> - <spinner label="Høj" name="height_range_spin_1" /> - <spinner label="Høj" name="height_range_spin_2" /> - <spinner label="Høj" name="height_range_spin_3" /> + <spinner label="Lav" name="height_start_spin_0"/> + <spinner label="Lav" name="height_start_spin_1"/> + <spinner label="Lav" name="height_start_spin_2"/> + <spinner label="Lav" name="height_start_spin_3"/> + <spinner label="Høj" name="height_range_spin_0"/> + <spinner label="Høj" name="height_range_spin_1"/> + <spinner label="Høj" name="height_range_spin_2"/> + <spinner label="Høj" name="height_range_spin_3"/> <text name="height_text_lbl10"> - Disse værdier repræsenterer overgange for texturerne ovenfor mÃ¥lt i meter + Disse værdier repræsenterer blandingsomrÃ¥der for teksturer ovenfor. </text> <text name="height_text_lbl11"> - LAV værdien er MAKSIMUM højde for texture nummer 1, + MÃ¥lt i meter, angiver LAV værdien MAKSIMUM højden for tekstur 1, og HØJ værdien er minimumshøjden for tekstur 4. </text> <text name="height_text_lbl12"> og HØJ værdien er MIMIMUM højde for texture nummer 4. </text> - <button label="Gem" name="apply_btn" /> + <button label="Gem" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_script_ed.xml b/indra/newview/skins/default/xui/da/panel_script_ed.xml new file mode 100644 index 00000000000..0bdfa89d3b7 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_script_ed.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="script panel"> + <panel.string name="loading"> + Henter... + </panel.string> + <panel.string name="can_not_view"> + Du kan ikke se eller rette dette script, da det er sat til "no copy". Du skal have fulde rettigheder for at se eller rette et script i et objekt. + </panel.string> + <panel.string name="public_objects_can_not_run"> + Offentlige objekter kan ikke afvikle scripts + </panel.string> + <panel.string name="script_running"> + kører + </panel.string> + <panel.string name="Title"> + Script: [NAME] + </panel.string> + <text_editor name="Script Editor"> + Henter... + </text_editor> + <button label="Gem" label_selected="Gem" name="Save_btn"/> + <combo_box label="Indsæt..." name="Insert..."/> + <menu_bar name="script_menu"> + <menu label="Filer" name="File"> + <menu_item_call label="Gem" name="Save"/> + <menu_item_call label="Annullér alle ændringer" name="Revert All Changes"/> + </menu> + <menu label="Redigér" name="Edit"> + <menu_item_call label="Fortryd" name="Undo"/> + <menu_item_call label="Gentag" name="Redo"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Indsæt" name="Paste"/> + <menu_item_call label="Vælg alt" name="Select All"/> + <menu_item_call label="Fravælg alt" name="Deselect"/> + <menu_item_call label="Søg / Erstat..." name="Search / Replace..."/> + </menu> + <menu label="Hjælp" name="Help"> + <menu_item_call label="Hjælp..." name="Help..."/> + <menu_item_call label="Hjælp med keywords..." name="Keyword Help..."/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_side_tray.xml b/indra/newview/skins/default/xui/da/panel_side_tray.xml new file mode 100644 index 00000000000..ab4a2a134e7 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_side_tray.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray cannot show background because it is always + partially on screen to hold tab buttons. --> +<side_tray name="sidebar"> + <sidetray_tab description="Hjem." name="sidebar_home"> + <panel label="hjem" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Find venner, kontakter og personer tæt pÃ¥." name="sidebar_people"> + <panel_container name="panel_container"> + <panel label="Gruppe info" name="panel_group_info_sidetray"/> + <panel label="Blokerede beboere og objekter" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Find steder du vil hen og steder du har været før." label="Steder" name="sidebar_places"> + <panel label="Steder" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Redigér din profile og favoritter." name="sidebar_me"> + <panel label="Mig" name="panel_me"/> + </sidetray_tab> + <sidetray_tab description="Ændre dit nuværende udseende" name="sidebar_appearance"> + <panel label="Redigér fremtoning" name="sidepanel_appearance"/> + </sidetray_tab> + <sidetray_tab description="Browse din beholdning." name="sidebar_inventory"> + <panel label="Redigér beholdning" name="sidepanel_inventory"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml new file mode 100644 index 00000000000..f25639d56fc --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml--> +<panel name="panel_stand_stop_flying"> + <button label="StÃ¥" name="stand_btn" tool_tip="Klik her for at stÃ¥ op."/> + <button label="Stop flyvning" name="stop_fly_btn" tool_tip="Stop flyvning"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history.xml b/indra/newview/skins/default/xui/da/panel_teleport_history.xml new file mode 100644 index 00000000000..64b5ecf5cf4 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_teleport_history.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="I dag"/> + <accordion_tab name="yesterday" title="I gÃ¥r"/> + <accordion_tab name="2_days_ago" title="2 dage siden"/> + <accordion_tab name="3_days_ago" title="3 dage siden"/> + <accordion_tab name="4_days_ago" title="4 dage siden"/> + <accordion_tab name="5_days_ago" title="5 dage siden"/> + <accordion_tab name="6_days_and_older" title="6 dage siden"/> + <accordion_tab name="1_month_and_older" title="1 mÃ¥ned eller ældre"/> + <accordion_tab name="6_months_and_older" title="6 mÃ¥neder eller ældre"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml new file mode 100644 index 00000000000..685601b922e --- /dev/null +++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Egenskaber for beholdningsgenstand"> + <panel.string name="unknown"> + (ukendt) + </panel.string> + <panel.string name="public"> + (offentlig) + </panel.string> + <panel.string name="you_can"> + Du kan: + </panel.string> + <panel.string name="owner_can"> + Ejer kan: + </panel.string> + <panel.string name="acquiredDate"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </panel.string> + <text name="title" value="Egenskaber for genstand"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Navn: + </text> + <text name="LabelItemDescTitle"> + Beskrivelse: + </text> + <text name="LabelCreatorTitle"> + Skaber: + </text> + <button label="Profil..." name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Ejer: + </text> + <button label="Profil..." name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Erhvervet: + </text> + <text name="LabelAcquiredDate"> + Ons Maj 24 12:50:46 2006 + </text> + <text name="OwnerLabel"> + Dig: + </text> + <check_box label="Editér" name="CheckOwnerModify"/> + <check_box label="Kopiér" name="CheckOwnerCopy"/> + <check_box label="Sælg" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Enhver: + </text> + <check_box label="Kopiér" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Del" name="CheckShareWithGroup"/> + <text name="NextOwnerLabel"> + Næste ejer: + </text> + <check_box label="Editér" name="CheckNextOwnerModify"/> + <check_box label="Kopiér" name="CheckNextOwnerCopy"/> + <check_box label="Sælg" name="CheckNextOwnerTransfer"/> + <check_box label="Til salg" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Kopiér" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Pris:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml new file mode 100644 index 00000000000..6ade03ce563 --- /dev/null +++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Egenskaber for objekt"> + <panel.string name="text deed continued"> + Dedikér + </panel.string> + <panel.string name="text deed"> + Dedikér + </panel.string> + <panel.string name="text modify info 1"> + Du kan modificere dette objekt + </panel.string> + <panel.string name="text modify info 2"> + Du kan modificere disse objekter + </panel.string> + <panel.string name="text modify info 3"> + Du kan ikke modificere dette objekt + </panel.string> + <panel.string name="text modify info 4"> + Du kan ikke modificere disse objekter + </panel.string> + <panel.string name="text modify warning"> + Dette objekt har linkede dele + </panel.string> + <panel.string name="Cost Default"> + Pris: L$ + </panel.string> + <panel.string name="Cost Total"> + Total pris: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Pris pr.: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Blandet pris + </panel.string> + <panel.string name="Sale Mixed"> + Blandet salg + </panel.string> + <panel label=""> + <text name="Name:"> + Navn: + </text> + <text name="Description:"> + Beskrivelse: + </text> + <text name="Creator:"> + Skaber: + </text> + <text name="Owner:"> + Ejer: + </text> + <text name="Group:"> + Gruppe: + </text> + <button name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/> + <name_box initial_value="Henter..." name="Group Name Proxy"/> + <button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med næste ejers rettigheder. Gruppedelte genstande kan dedikeres af en gruppeadministrator."/> + <check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle medlemmer i den angivne gruppe at videregive dine "redigere" rettigheder for dette objekt. Du mÃ¥ dedikere for at tillade rolle begrænsninger."/> + <text name="label click action"> + Klik for at: + </text> + <combo_box name="clickaction"> + <combo_box.item label="Røre (standard)" name="Touch/grab(default)"/> + <combo_box.item label="Sidde pÃ¥ objekt" name="Sitonobject"/> + <combo_box.item label="Købe objekt" name="Buyobject"/> + <combo_box.item label="Betale til objekt" name="Payobject"/> + <combo_box.item label="Ã…bne" name="Open"/> + </combo_box> + <check_box label="Til salg:" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Kopi" name="Copy"/> + <combo_box.item label="Indhold" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Pris: L$" name="Edit Cost"/> + <check_box label="Vis i søgning" name="search_check" tool_tip="Lad personer se dette objekt i søgeresultater"/> + <panel name="perms_build"> + <text name="perm_modify"> + Du kan redigere dette objekt + </text> + <text name="Anyone can:"> + Enhver: + </text> + <check_box label="Flytte" name="checkbox allow everyone move"/> + <check_box label="Kopiere" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Næste ejer: + </text> + <check_box label="Redigere" name="checkbox next owner can modify"/> + <check_box label="Kopiere" name="checkbox next owner can copy"/> + <check_box label="Overfør" name="checkbox next owner can transfer" tool_tip="Næste ejer kan sælge eller give dette objekt væk"/> + <text name="B:"> + B: + </text> + <text name="O:"> + Ã…: + </text> + <text name="G:"> + O: + </text> + <text name="E:"> + R: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + </panel> + </panel> + <panel name="button_panel"> + <button label="Ã…ben" name="open_btn"/> + <button label="Betal" name="pay_btn"/> + <button label="Køb" name="buy_btn"/> + <button label="Annullér" name="cancel_btn"/> + <button label="Gem" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index fda01d2f597..493bb4cb20c 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -815,7 +815,7 @@ tekstur i din beholdning. <string name="no_copy" value=" (ikke kopiere)"/> <string name="worn" value=" (bÃ¥ret)"/> <string name="link" value=" (sammenkæde)"/> - <string name="broken_link" value=" (brudt_kæde)""/> + <string name="broken_link" value=" (brudt_kæde)"/> <string name="LoadingContents"> Henter indhold... </string> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index f80f810dba6..a2fcaa63f67 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -1,20 +1,60 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="INFORMAZIONI SU [CAPITALIZED_APP_NAME]"> -<tab_container name="about_tab"> - <panel name="credits_panel"> - <text_editor name="credits_editor"> - Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. +<floater name="floater_about" title="Informazioni su [APP_NAME]"> + <floater.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]] + </floater.string> + <floater.string name="AboutCompiler"> + Fatto con [COMPILER] versione [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Tu sei in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] a [REGION] ospitata da [HOSTNAME] ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +Memoria: [MEMORY_MB] MB +Versione Sistema Operativo: [OS_VERSION] +Venditore Scheda Grafica: [GRAPHICS_CARD_VENDOR] +Scheda Grafica: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Versione Driver Scheda Grafica: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + Versione OpenGL: [OPENGL_VERSION] + +Versione libcurl: [LIBCURL_VERSION] +Versione J2C Decoder: [J2C_VERSION] +Versione Audio Driver: [AUDIO_DRIVER_VERSION] +Versione Qt Webkit: [QT_WEBKIT_VERSION] +Versione Vivox: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (nessuno) + </floater.string> + <floater.string name="AboutTraffic"> + Pacchetti Perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </floater.string> + <tab_container name="about_tab"> + <panel label="Informazioni" name="support_panel"> + <button label="Copia negli appunti" name="copy_btn"/> + </panel> + <panel label="Ringraziamenti" name="credits_panel"> + <text_editor name="credits_editor"> + Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar Per avere successo nel business, sii coraggioso, sii il primo, sii differente. --Henry Marchant - </text_editor> - </panel> - <panel name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion + </text_editor> + </panel> + <panel label="Licenze" name="licenses_panel"> + <text_editor name="credits_editor"> + 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion APR Copyright (C) 2000-2004 The Apache Software Foundation cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. @@ -35,10 +75,7 @@ Tutti i diritti riservati. Leggi licenses.txt per maggiori dettagli. Chat vocale Codifica audio: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> - </panel> -</tab_container> - <string name="you_are_at"> - Sei a [POSITION] - </string> + </text_editor> + </panel> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index f2bd150ad7b..4c82475a6f4 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -1,7 +1,59 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterland" title="INFORMAZIONI SUL TERRENO"> +<floater name="floaterland" title="INFO SUL TERRENO"> + <floater.string name="Minutes"> + [MINUTES] minuti + </floater.string> + <floater.string name="Minute"> + minuto + </floater.string> + <floater.string name="Seconds"> + [SECONDS] secondi + </floater.string> + <floater.string name="Remaining"> + restante + </floater.string> <tab_container name="landtab"> - <panel label="Generale" name="land_general_panel"> + <panel label="GENERALE" name="land_general_panel"> + <panel.string name="new users only"> + Solo ai nuovi residenti + </panel.string> + <panel.string name="anyone"> + A chiunque + </panel.string> + <panel.string name="area_text"> + Area + </panel.string> + <panel.string name="area_size_text"> + [AREA] m² + </panel.string> + <panel.string name="auction_id_text"> + Asta n.: [ID] + </panel.string> + <panel.string name="need_tier_to_modify"> + Devi confermare l'acquisto prima di poter modificare il terreno. + </panel.string> + <panel.string name="group_owned_text"> + (Posseduta dal gruppo) + </panel.string> + <panel.string name="profile_text"> + Profilo... + </panel.string> + <panel.string name="info_text"> + Info... + </panel.string> + <panel.string name="public_text"> + (pubblica) + </panel.string> + <panel.string name="none_text"> + (nessuno) + </panel.string> + <panel.string name="sale_pending_text"> + (vendita in corso) + </panel.string> + <panel.string name="no_selection_text"> + Nessun appezzamento selezionato. +Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli. + </panel.string> <text name="Name:"> Nome: </text> @@ -11,123 +63,93 @@ <text name="LandType"> Tipo: </text> - <text name="LandTypeText" left="119"> + <text left="119" name="LandTypeText"> Mainland / Homestead </text> <text name="ContentRating" width="115"> Categoria di accesso: </text> - <text name="ContentRatingText" left="119"> + <text left="119" name="ContentRatingText"> Adult </text> <text name="Owner:"> Proprietario: </text> - <text name="OwnerText" left="119" width="227"> + <text left="119" name="OwnerText" width="227"> Leyla Linden </text> - <button label="Profilo..." label_selected="Profilo..." name="Profile..."/> <text name="Group:"> Gruppo: </text> - <text left="119" name="GroupText" width="227" /> + <text left="119" name="GroupText" width="227"/> <button label="Imposta..." label_selected="Imposta..." name="Set..."/> - <check_box left="119" label="Permetti cessione al gruppo" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata dalle terre del gruppo."/> + <check_box label="Permetti cessione al gruppo" left="119" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata dalle terre del gruppo."/> <button label="Cedi..." label_selected="Cedi..." name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/> - <check_box left="119" label="Il proprietario fa un contributo con la cessione" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> + <check_box label="Il proprietario fa un contributo con la cessione" left="119" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> <text name="For Sale:"> In vendita: </text> - <text name="Not for sale." left="119"> + <text left="119" name="Not for sale."> Non in vendita. </text> - <text name="For Sale: Price L$[PRICE]." left="119"> + <text left="119" name="For Sale: Price L$[PRICE]."> Prezzo: [PRICE]L$ ([PRICE_PER_SQM]L$/m²). </text> - <text name="SalePending" left="119" width="321"/> + <text left="119" name="SalePending" width="321"/> <button bottom="-242" label="Vendi la terra..." label_selected="Vendi la terra..." name="Sell Land..."/> - <text name="For sale to" left="119"> + <text left="119" name="For sale to"> In vendita a: [BUYER] </text> - <text name="Sell with landowners objects in parcel." width="240" left="119"> + <text left="119" name="Sell with landowners objects in parcel." width="240"> Gli oggetti sono inclusi nella vendita. </text> - <text name="Selling with no objects in parcel." width="240" left="119"> + <text left="119" name="Selling with no objects in parcel." width="240"> Gli oggetti non sono inclusi nella vendita. </text> - <button bottom="-242" font="SansSerifSmall" left="275" width="165" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" name="Cancel Land Sale"/> + <button bottom="-242" font="SansSerifSmall" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" left="275" name="Cancel Land Sale" width="165"/> <text name="Claimed:" width="115"> Presa in possesso il: </text> - <text name="DateClaimText" left="119"> + <text left="119" name="DateClaimText"> Tue Aug 15 13:47:25 2006 </text> <text name="PriceLabel"> Area: </text> - <text name="PriceText" left="119" width="140"> + <text left="119" name="PriceText" width="140"> 4048 m² </text> <text name="Traffic:"> Traffico: </text> - <text name="DwellText" left="119" width="140"> + <text left="119" name="DwellText" width="140"> 0 </text> <button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/> <button label="Acquista per il gruppo..." label_selected="Acquista per il gruppo..." name="Buy For Group..."/> - <button label="Compra pass..." label_selected="Compra pass..." left="130" width="125" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio."/> + <button label="Compra pass..." label_selected="Compra pass..." left="130" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio." width="125"/> <button label="Abbandona la terra..." label_selected="Abbandona la terra..." name="Abandon Land..."/> <button label="Reclama la terra..." label_selected="Reclama la terra..." name="Reclaim Land..."/> <button label="Vendita Linden..." label_selected="Vendita Linden..." name="Linden Sale..." tool_tip="La terra deve essere posseduta, con contenuto impostato, e non già messa in asta."/> - <panel.string name="new users only"> - Solo ai nuovi residenti - </panel.string> - <panel.string name="anyone"> - A chiunque - </panel.string> - <panel.string name="area_text"> - Area - </panel.string> - <panel.string name="area_size_text"> - [AREA] m² - </panel.string> - <panel.string name="auction_id_text"> - Asta n.: [ID] - </panel.string> - <panel.string name="need_tier_to_modify"> - Devi confermare l'acquisto prima di poter modificare il terreno. - </panel.string> - <panel.string name="group_owned_text"> - (Posseduta dal gruppo) - </panel.string> - <panel.string name="profile_text"> - Profilo... - </panel.string> - <panel.string name="info_text"> - Info... - </panel.string> - <panel.string name="public_text"> - (pubblica) + </panel> + <panel label="COVENANT" name="land_covenant_panel"> + <panel.string name="can_resell"> + La terra acquistata in questa regione può essere rivenduta. </panel.string> - <panel.string name="none_text"> - (nessuno) + <panel.string name="can_not_resell"> + La terra acquistata in questa regione non può essere rivenduta. </panel.string> - <panel.string name="sale_pending_text"> - (vendita in corso) + <panel.string name="can_change"> + La terra acquistata in questa regione può essere unita +o suddivisa. </panel.string> - <panel.string name="no_selection_text"> - Nessun appezzamento selezionato. -Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli. + <panel.string name="can_not_change"> + La terra acquistata in questa regione non può essere unita +o suddivisa. </panel.string> - </panel> - <panel label="Regolamento" name="land_covenant_panel"> <text name="estate_section_lbl"> Proprietà : </text> - <text name="estate_name_lbl"> - Nome: - </text> <text name="estate_name_text"> Continente </text> @@ -146,131 +168,144 @@ Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezz <text name="region_section_lbl"> Regione: </text> - <text name="region_name_lbl"> - Nome: - </text> - <text name="region_name_text" left="125"> + <text left="125" name="region_name_text"> leyla </text> <text name="region_landtype_lbl"> Tipo: </text> - <text name="region_landtype_text" left="125"> + <text left="125" name="region_landtype_text"> Mainland / Homestead </text> <text name="region_maturity_lbl" width="115"> Categoria di accesso: </text> - <text name="region_maturity_text" left="125"> + <text left="125" name="region_maturity_text"> Adult </text> <text name="resellable_lbl"> Rivendita: </text> - <text name="resellable_clause" left="125"> + <text left="125" name="resellable_clause"> La terra in questa regione non può essere rivenduta. </text> <text name="changeable_lbl"> Suddividi: </text> - <text name="changeable_clause" left="125"> + <text left="125" name="changeable_clause"> La terra in questa regione non può essere unita/suddivisa. </text> - <panel.string name="can_resell"> - La terra acquistata in questa regione può essere rivenduta. - </panel.string> - <panel.string name="can_not_resell"> - La terra acquistata in questa regione non può essere rivenduta. - </panel.string> - <panel.string name="can_change"> - La terra acquistata in questa regione può essere unita -o suddivisa. + </panel> + <panel label="OBJECTS" name="land_objects_panel"> + <panel.string name="objects_available_text"> + [COUNT] dei [MAX] ([AVAILABLE] disponibili) </panel.string> - <panel.string name="can_not_change"> - La terra acquistata in questa regione non può essere unita -o suddivisa. + <panel.string name="objects_deleted_text"> + [COUNT] dei [MAX] ([DELETED] saranno cancellati) </panel.string> - </panel> - <panel label="Oggetti" name="land_objects_panel"> <text name="parcel_object_bonus"> Fattore bonus degli oggetti della regione: [BONUS] </text> <text name="Simulator primitive usage:"> - Oggetti presenti sul simulatore: + Uso dei Primative : </text> - <text name="objects_available" left="214" width="230" > + <text left="214" name="objects_available" width="230"> [COUNT] dei [MAX] ([AVAILABLE] dsponibili) </text> - <panel.string name="objects_available_text"> - [COUNT] dei [MAX] ([AVAILABLE] disponibili) - </panel.string> - <panel.string name="objects_deleted_text"> - [COUNT] dei [MAX] ([DELETED] saranno cancellati) - </panel.string> <text name="Primitives parcel supports:" width="200"> Oggetti che il terreno supporta: </text> - <text name="object_contrib_text" left="214" width="152"> + <text left="214" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> Oggetti sul terreno: </text> - <text name="total_objects_text" left="214" width="48"> + <text left="214" name="total_objects_text" width="48"> [COUNT] </text> - <text name="Owned by parcel owner:" left="14" width="180" > + <text left="14" name="Owned by parcel owner:" width="180"> Posseduti dal proprietario: </text> - <text name="owner_objects_text" left="214" width="48"> + <text left="214" name="owner_objects_text" width="48"> [COUNT] </text> <button label="Mostra" label_selected="Mostra" name="ShowOwner" right="-135" width="60"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> - <text name="Set to group:" left="14" width="180"> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/> + <text left="14" name="Set to group:" width="180"> Imposta al gruppo: </text> - <text name="group_objects_text" left="214" width="48"> + <text left="214" name="group_objects_text" width="48"> [COUNT] </text> <button label="Mostra" label_selected="Mostra" name="ShowGroup" right="-135" width="60"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> - <text name="Owned by others:" left="14" width="180"> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/> + <text left="14" name="Owned by others:" width="180"> Posseduti da altri: </text> - <text name="other_objects_text" left="214" width="48"> + <text left="214" name="other_objects_text" width="48"> [COUNT] </text> <button label="Mostra" label_selected="Mostra" name="ShowOther" right="-135" width="60"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> - <text name="Selected / sat upon:" left="14" width="193"> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/> + <text left="14" name="Selected / sat upon:" width="193"> Selezionati / sui quali sei sopra: </text> - <text name="selected_objects_text" left="214" width="48"> + <text left="214" name="selected_objects_text" width="48"> [COUNT] </text> - <text name="Autoreturn" left="4" width="412"> + <text left="4" name="Autoreturn" width="412"> Autorestituisci gli oggetti degli altri residenti (minuti, 0 per disabilitata): </text> - <line_editor name="clean other time" right="-20" /> + <line_editor name="clean other time" right="-20"/> <text name="Object Owners:" width="150"> Proprietari degli oggetti: </text> - <button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" name="Refresh List" left="158"/> - <button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." name="Return objects..." left="270" width="164"/> + <button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" left="158" name="Refresh List" tool_tip="Refresh Object List"/> + <button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." left="270" name="Return objects..." width="164"/> <name_list name="owner list"> - <column label="Tipo" name="type"/> - <column label="Nome" name="name"/> - <column label="Conta" name="count"/> - <column label="Più recenti" name="mostrecent"/> + <name_list.columns label="Tipo" name="type"/> + <name_list.columns label="Nome" name="name"/> + <name_list.columns label="Conta" name="count"/> + <name_list.columns label="Più recenti" name="mostrecent"/> </name_list> </panel> - <panel label="Opzioni" name="land_options_panel"> + <panel label="OPZIONI" name="land_options_panel"> + <panel.string name="search_enabled_tooltip"> + Fai in modo che la gente trovi questo terreno nei risultati della ricerca. + </panel.string> + <panel.string name="search_disabled_small_tooltip"> + Questa opzione è disabilitata perchè questo terreno ha un'area di 128 m² o inferiore. +Solamente terreni più grandi possono essere abilitati nella ricerca. + </panel.string> + <panel.string name="search_disabled_permissions_tooltip"> + Questa opzione è disabilitata perchè tu non puoi modificare le opzioni di questo terreno. + </panel.string> + <panel.string name="mature_check_mature"> + Contenuto Mature + </panel.string> + <panel.string name="mature_check_adult"> + Contenuto Adult + </panel.string> + <panel.string name="mature_check_mature_tooltip"> + Il contenuto o le informazioni del tuo terreno sono considerate Mature. + </panel.string> + <panel.string name="mature_check_adult_tooltip"> + Il contenuto o le informazioni del tuo terreno sono considerate Adult. + </panel.string> + <panel.string name="landing_point_none"> + (nessuno) + </panel.string> + <panel.string name="push_restrict_text"> + Nessuna spinta + </panel.string> + <panel.string name="push_restrict_region_text"> + Nessuna spinta (Impostazione regionale) + </panel.string> <text name="allow_label"> Permetti agli altri residenti di: </text> <check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E' preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/> - <check_box label="Creare dei landmark" name="check landmark"/> <check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/> <text name="allow_label2"> Creare oggetti: @@ -292,85 +327,37 @@ o suddivisa. </text> <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/> <check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/> - <check_box label="Mostra il luogo nella ricerca (30 L$/week) sotto" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/> - <panel.string name="search_enabled_tooltip"> - Fai in modo che la gente trovi questo terreno nei risultati della ricerca. - </panel.string> - <panel.string name="search_disabled_small_tooltip"> - Questa opzione è disabilitata perchè questo terreno ha un'area di 128 m² o inferiore. -Solamente terreni più grandi possono essere abilitati nella ricerca. - </panel.string> - <panel.string name="search_disabled_permissions_tooltip"> - Questa opzione è disabilitata perchè tu non puoi modificare le opzioni di questo terreno. - </panel.string> - <combo_box name="land category with adult" left="282" width="140"> - <combo_box.item name="item0" label="Tutte le categorie" - /> - <combo_box.item name="item1" label="Luogo dei Linden" - /> - <combo_box.item name="item2" label="Adult" - /> - <combo_box.item name="item3" label="Arte & Cultura" - /> - <combo_box.item name="item4" label="Affari" - /> - <combo_box.item name="item5" label="Educazione" - /> - <combo_box.item name="item6" label="Gioco" - /> - <combo_box.item name="item7" label="Divertimento" - /> - <combo_box.item name="item8" label="Accoglienza nuovi residenti" - /> - <combo_box.item name="item9" label="Parchi & Natura" - /> - <combo_box.item name="item10" label="Residenziale" - /> - <combo_box.item name="item11" label="Shopping" - /> - <combo_box.item name="item12" label="Altro" - /> + <check_box label="Mostra luogo nel Cerca (L$30/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/> + <combo_box left="282" name="land category with adult" width="140"> + <combo_box.item label="Tutte le categorie" name="item0"/> + <combo_box.item label="Luogo dei Linden" name="item1"/> + <combo_box.item label="Adult" name="item2"/> + <combo_box.item label="Arte & Cultura" name="item3"/> + <combo_box.item label="Affari" name="item4"/> + <combo_box.item label="Educazione" name="item5"/> + <combo_box.item label="Gioco" name="item6"/> + <combo_box.item label="Divertimento" name="item7"/> + <combo_box.item label="Accoglienza nuovi residenti" name="item8"/> + <combo_box.item label="Parchi & Natura" name="item9"/> + <combo_box.item label="Residenziale" name="item10"/> + <combo_box.item label="Shopping" name="item11"/> + <combo_box.item label="Altro" name="item12"/> </combo_box> - <combo_box name="land category" left="282" width="140"> - <combo_box.item name="item0" label="Tutte le categorie" - /> - <combo_box.item name="item1" label="Luogo dei Linden" - /> - <combo_box.item name="item3" label="Arte & Cultura" - /> - <combo_box.item name="item4" label="Affari" - /> - <combo_box.item name="item5" label="Educazione" - /> - <combo_box.item name="item6" label="Gioco" - /> - <combo_box.item name="item7" label="Divertimento" - /> - <combo_box.item name="item8" label="Accoglienza nuovi residenti" - /> - <combo_box.item name="item9" label="Parchi & Natura" - /> - <combo_box.item name="item10" label="Residenziale" - /> - <combo_box.item name="item11" label="Shopping" - /> - <combo_box.item name="item12" label="Altro" - /> + <combo_box left="282" name="land category" width="140"> + <combo_box.item label="Tutte le categorie" name="item0"/> + <combo_box.item label="Luogo dei Linden" name="item1"/> + <combo_box.item label="Arte & Cultura" name="item3"/> + <combo_box.item label="Affari" name="item4"/> + <combo_box.item label="Educazione" name="item5"/> + <combo_box.item label="Gioco" name="item6"/> + <combo_box.item label="Divertimento" name="item7"/> + <combo_box.item label="Accoglienza nuovi residenti" name="item8"/> + <combo_box.item label="Parchi & Natura" name="item9"/> + <combo_box.item label="Residenziale" name="item10"/> + <combo_box.item label="Shopping" name="item11"/> + <combo_box.item label="Altro" name="item12"/> </combo_box> - <button label="?" label_selected="?" name="?" left="427"/> <check_box label="Contenuto Mature" name="MatureCheck" tool_tip=" "/> - <panel.string name="mature_check_mature"> - Contenuto Mature - </panel.string> - <panel.string name="mature_check_adult"> - Contenuto Adult - </panel.string> - <panel.string name="mature_check_mature_tooltip"> - Il contenuto o le informazioni del tuo terreno sono considerate Mature. - </panel.string> - <panel.string name="mature_check_adult_tooltip"> - Il contenuto o le informazioni del tuo terreno sono considerate Adult. - </panel.string> <text name="Snapshot:"> Fotografia: </text> @@ -378,39 +365,31 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <text name="landing_point"> Punto di atterraggio: [LANDING] </text> - <panel.string name="landing_point_none"> - (nessuno) - </panel.string> - <button width="60" label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno."/> - <button width="60" left="301" label="Elimina" label_selected="Elimina" name="Clear" tool_tip="Elimina punto di atterraggio."/> + <button label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno." width="60"/> + <button label="Elimina" label_selected="Elimina" left="301" name="Clear" tool_tip="Elimina punto di atterraggio." width="60"/> <text name="Teleport Routing: "> Rotte dei teleport: </text> - <combo_box width="140" name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra."> - <combo_box.item name="Blocked" label="Bloccati" - /> - <combo_box.item name="LandingPoint" label="Punto di atterraggio" - /> - <combo_box.item name="Anywhere" label="Ovunque" - /> + <combo_box name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra." width="140"> + <combo_box.item label="Bloccati" name="Blocked"/> + <combo_box.item label="Punto di atterraggio" name="LandingPoint"/> + <combo_box.item label="Ovunque" name="Anywhere"/> </combo_box> - <panel.string name="push_restrict_text"> - Nessuna spinta - </panel.string> - <panel.string name="push_restrict_region_text"> - Nessuna spinta (Impostazione regionale) - </panel.string> </panel> - <panel label="Media" name="land_media_panel"> + <panel label="MEDIA" name="land_media_panel"> <text name="with media:" width="85"> Tipo di Media: </text> - <combo_box left="97" name="media type" tool_tip="Specifica se l'Url è un video, una pagina web, o un altro tipo di media"/> + <combo_box left="97" name="media type" tool_tip="Specifica se l'Url è un video, una pagina web, o un altro tipo di media"/> <text name="at URL:" width="85"> - URL Media: + Home Page: </text> <line_editor left="97" name="media_url"/> <button label="Imposta..." label_selected="Imposta..." name="set_media_url" width="63"/> + <text name="CurrentURL:"> + Pagina attuale: + </text> + <check_box label="Nascondi indirizzo URL Media" left="94" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/> <text name="Description:"> Descrizione: </text> @@ -419,21 +398,14 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. Cambia Texture: </text> - <texture_picker left="97" label="" name="media texture" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker label="" left="97" name="media texture" tool_tip="Clicca per scegliere un'immagine"/> <text name="replace_texture_help" width="285"> (Gli oggetti che hanno questa texture applicata mostreranno il video o la pagina web dopo che avrai cliccato sulla freccia play.) </text> - <text name="Options:"> - Opzioni -Media: - </text> - <check_box left="94" label="Auto ridimensiona" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell'appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po' più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/> - <check_box left="265" label="Fai ripetere il video" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/> - <check_box left="94" label="Nascondi indirizzo URL Media" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/> - <check_box left="265" label="Nascondi indirizzo URL Musica" name="hide_music_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url della musica a tutte le persone non autorizzate a vedere le informazioni del terreno."/> - <text left="99" width="120" name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default."> + <check_box label="Auto ridimensiona" left="94" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell'appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po' più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/> + <text left="99" name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default." width="120"> Grandezza Media: </text> <spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> @@ -441,57 +413,43 @@ Media: <text name="pixels"> pixels </text> - <text name="MusicURL:"> - URL Musica: - </text> - <line_editor left="97" name="music_url"/> - <text name="Sound:"> - Suono: - </text> - <check_box left="94" label="Limita le gesture e i suoni degli oggetti in questo territorio" name="check sound local"/> - <button label="?" label_selected="?" name="?" left="420"/> - <text name="Voice settings:"> - Voice: + <text name="Options:"> + Opzioni +Media: </text> - <check_box left="94" label="Abilita il Voice" name="parcel_enable_voice_channel"/> - <check_box left="94" label="Abilita il Voice (stabilito su tutta la proprietà )" name="parcel_enable_voice_channel_is_estate_disabled"/> - <check_box left="114" label="Limita il voice a questa porzione di terreno" name="parcel_enable_voice_channel_parcel"/> + <check_box label="Fai ripetere il video" left="265" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/> + </panel> + <panel label="SUONO" name="land_audio_panel"> + <check_box label="Attiva Voice" name="parcel_enable_voice_channel"/> + <check_box label="Attiva Voice (stabilito dalla Proprietà )" name="parcel_enable_voice_channel_is_estate_disabled"/> </panel> - <panel label="Accesso" name="land_access_panel"> + <panel label="ACCESSO" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Definito dalla Proprietà ) + </panel.string> + <panel.string name="estate_override"> + Una o più di queste impostazioni sono già impostate a livello regionale + </panel.string> <text name="Limit access to this parcel to:"> Accesso a questo terreno </text> - <check_box label="Permetti accesso pubblico" name="public_access"/> + <check_box label="Permetti Accesso Pubblico [MATURITY]" name="public_access"/> <text name="Only Allow"> - Blocca l'accesso con Residenti: + Accesso ristretto ai Residenti verificati con: </text> - <check_box label="Che non hanno dato le proprie informazioni di pagamento alla Linden Lab" name="limit_payment" tool_tip="Manda via residenti non identificati."/> - <check_box label="Che non sono adulti con età verificata" name="limit_age_verified" tool_tip="Manda via residenti che non hanno verificato la loro età . Guarda il sito support.secondlife.com per ulteriori informazioni."/> - <panel.string name="estate_override"> - Una o più di queste impostazioni sono già impostate a livello regionale - </panel.string> + <check_box label="Informazioni di pagamento on File [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Manda via residenti non identificati."/> + <check_box label="Verifica dell'età [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Espelli residenti che non hanno verificato l'età . Vedi [SUPPORT_SITE] per maggiori informazioni."/> <check_box label="Permetti accesso al gruppo: [GROUP]" name="GroupCheck" tool_tip="Imposta il gruppo nel pannello generale."/> <check_box label="Vendi pass a:" name="PassCheck" tool_tip="Permetti in questo terreno l'accesso temporaneo"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Chiunque" - /> - <combo_box.item name="Group" label="Gruppo" - /> + <combo_box.item label="Chiunque" name="Anyone"/> + <combo_box.item label="Gruppo" name="Group"/> </combo_box> <spinner label="Prezzo in L$:" name="PriceSpin"/> <spinner label="Ore di accesso:" name="HoursSpin"/> - <text label="Permetti sempre" name="AllowedText"> - Residenti permessi - </text> - <name_list name="AccessList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> - <button label="Aggiungi..." label_selected="Aggiungi..." name="add_allowed"/> - <button label="Rimuovi" label_selected="Rimuovi" name="remove_allowed"/> - <text label="Blocca" name="BanCheck"> - Residenti bloccati - </text> - <name_list name="BannedList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> - <button label="Aggiungi..." label_selected="Aggiungi..." name="add_banned"/> - <button label="Rimuovi" label_selected="Rimuovi" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <name_list name="AccessList" tool_tip="([LISTED] in lista, [MAX] max)"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_activeim.xml b/indra/newview/skins/default/xui/it/floater_activeim.xml new file mode 100644 index 00000000000..d19882fa488 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="ATTIVA IM"/> diff --git a/indra/newview/skins/default/xui/it/floater_animation_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_preview.xml index b6d6148afb2..74a994825db 100644 --- a/indra/newview/skins/default/xui/it/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_animation_preview.xml @@ -1,70 +1,177 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Animation Preview" title=""> + <floater.string name="failed_to_initialize"> + Impossibile inizializzare la sequenza + </floater.string> + <floater.string name="anim_too_long"> + Il file dell'animazione è lungo [LENGTH] secondi. + +La lunghezza massima è [MAX_LENGTH] secondi. + </floater.string> + <floater.string name="failed_file_read"> + Impossibile leggere il file dell'animazione. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Ok + </floater.string> + <floater.string name="E_ST_EOF"> + Fine prematura del file. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Impossibile leggere la definizione del vincolo. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Non può aprire il file BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + HIERARCHY header non valido. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + Impossibile trovare la RADICE o UNIONE. ???????????? + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Impossibile trovare il nome MISTO. ?????? + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Impossibile trovare OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Impossibile trovare CHANNELS. ????? + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Impossibile ottenere un ordine di rotazione. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Rotazione dell'asse non disponibile. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Impossibile trovare il GESTO. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Impossibile ottenere il numero dei frames. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Impossibile ottenere il tempo del frame. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Impossibile ottenre una posizione dei valori. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Impossibile ottenere i valori di rotazione. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Impossibile aprire la traduzione del file. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Impossibile leggere l'intestazione della traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Impossibile leggere i nomi della traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Impossibile leggere la traduzione ignora il valore. ????? + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Impossibile leggere la traduzione del valore relativo. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Cannot read translation outname value. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Impossibile leggere la matrice di traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Impossibile unire il nome del bambino. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Impossibile unire il nome del genitore. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Impossibile ottenre il valore di priorità . + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Impossibile ottenere il valore di loop. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Impossibile essere in agio nei valori. ????????? + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Cannot get ease Out values. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Impossibile ottenere il valore morph della mano. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Impossibile leggere il nome emote. + </floater.string> <text name="name_label"> Nome: </text> <text name="description_label"> Descrizione: </text> - <spinner label_width="72" width="110" label="Priorità " name="priority" tool_tip="Controlla quali altre animazioni possono essere annullate da questa animazione."/> - <check_box label="Ciclica" name="loop_check" tool_tip="Rende questa animazione ciclica."/> - <spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il punto nell'animazione in cui ritornare dopo ogni ciclo."/> - <spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il punto nell'animazione in cui terminare dopo ogni ciclo."/> + <spinner label="Priorità " label_width="72" name="priority" tool_tip="Controlla quali altre animazioni possono prevalere su questa animazione" width="110"/> + <check_box label="Ciclica" name="loop_check" tool_tip="Rendi questa animazione in loop"/> + <spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il momento nel quale l'animazione inizia il loop"/> + <spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il momento nel quale l'animazione ferma il loop"/> <text name="hand_label"> Postura della mano </text> - <combo_box left_delta="100" width="184" name="hand_pose_combo" tool_tip="Controlla cosa fanno le mani durante l'animazione."> - <combo_box.item name="Spread" label="Aperte"/> - <combo_box.item name="Relaxed" label="Rilassate"/> - <combo_box.item name="PointBoth" label="Entrambe indicano"/> - <combo_box.item name="Fist" label="Pugno"/> - <combo_box.item name="RelaxedLeft" label="Sinistra Rilassata"/> - <combo_box.item name="PointLeft" label="Sinistra Indica"/> - <combo_box.item name="FistLeft" label="Sinistra a pugno"/> - <combo_box.item name="RelaxedRight" label="Destra rilassata"/> - <combo_box.item name="PointRight" label="Destra Indica"/> - <combo_box.item name="FistRight" label="Destra a Pugno"/> - <combo_box.item name="SaluteRight" label="Destra Saluta"/> - <combo_box.item name="Typing" label="Digitano"/> - <combo_box.item name="PeaceRight" label="Destra 'segno di pace'"/> + <combo_box left_delta="100" name="hand_pose_combo" tool_tip="Controlla ciò che fanno le mani durante l'animazione" width="184"> + <combo_box.item label="Stendi" name="Spread"/> + <combo_box.item label="Rilassato" name="Relaxed"/> + <combo_box.item label="indica entrambi" name="PointBoth"/> + <combo_box.item label="Pugno" name="Fist"/> + <combo_box.item label="Sinistra rilassata" name="RelaxedLeft"/> + <combo_box.item label="Indica sinistra" name="PointLeft"/> + <combo_box.item label="Pugno sinistra" name="FistLeft"/> + <combo_box.item label="Destra rilassata" name="RelaxedRight"/> + <combo_box.item label="Indica destra" name="PointRight"/> + <combo_box.item label="Pugno Destro" name="FistRight"/> + <combo_box.item label="Saluta Destra" name="SaluteRight"/> + <combo_box.item label="Scrivendo" name="Typing"/> + <combo_box.item label="Pace Destra" name="PeaceRight"/> </combo_box> <text name="emote_label"> Espressione </text> - <combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controlla l'espressione del viso durante l'animazione."> - <combo_box.item name="[None]" label="None]"/> - <combo_box.item name="Aaaaah" label="Aaaaah"/> - <combo_box.item name="Afraid" label="Paura"/> - <combo_box.item name="Angry" label="Rabbia"/> - <combo_box.item name="BigSmile" label="Sorriso Aperto"/> - <combo_box.item name="Bored" label="Noia"/> - <combo_box.item name="Cry" label="Pianto"/> - <combo_box.item name="Disdain" label="Sdegno"/> - <combo_box.item name="Embarrassed" label="Imbarazzo"/> - <combo_box.item name="Frown" label="Accigliato"/> - <combo_box.item name="Kiss" label="Bacio"/> - <combo_box.item name="Laugh" label="Risata"/> - <combo_box.item name="Plllppt" label="Linguaccia"/> - <combo_box.item name="Repulsed" label="Repulsione"/> - <combo_box.item name="Sad" label="Tristezza"/> - <combo_box.item name="Shrug" label="Spallucce"/> - <combo_box.item name="Smile" label="Sorriso"/> - <combo_box.item name="Surprise" label="Sorpresa"/> - <combo_box.item name="Wink" label="Ammiccamento"/> - <combo_box.item name="Worry" label="Preoccupazione"/> + <combo_box left_delta="100" name="emote_combo" tool_tip="Controlla ciò che fà il viso durante l'animazione" width="184"> + <combo_box.item label="(Nessuno)" name="[None]"/> + <combo_box.item label="Aaaaah" name="Aaaaah"/> + <combo_box.item label="Spavento" name="Afraid"/> + <combo_box.item label="Arrabbiato" name="Angry"/> + <combo_box.item label="Grande sorriso" name="BigSmile"/> + <combo_box.item label="Annoiato" name="Bored"/> + <combo_box.item label="Pianto" name="Cry"/> + <combo_box.item label="Disdegno" name="Disdain"/> + <combo_box.item label="Imbarazzato" name="Embarrassed"/> + <combo_box.item label="Accigliato ?????" name="Frown"/> + <combo_box.item label="Bacio" name="Kiss"/> + <combo_box.item label="Risata" name="Laugh"/> + <combo_box.item label="Plllppt" name="Plllppt"/> + <combo_box.item label="Repulsione" name="Repulsed"/> + <combo_box.item label="Triste" name="Sad"/> + <combo_box.item label="Scrollata di spalle" name="Shrug"/> + <combo_box.item label="Sorriso" name="Smile"/> + <combo_box.item label="Stupore" name="Surprise"/> + <combo_box.item label="Occhiolino" name="Wink"/> + <combo_box.item label="Preoccupato" name="Worry"/> </combo_box> <text name="preview_label" width="250"> Vedi anteprima mentre </text> - <combo_box left_delta="154" width="130" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali."> - <combo_box.item name="Standing" label="In piedi"/> - <combo_box.item name="Walking" label="Passeggia"/> - <combo_box.item name="Sitting" label="Siede"/> - <combo_box.item name="Flying" label="Vola"/> + <combo_box left_delta="154" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali." width="130"> + <combo_box.item label="In piedi" name="Standing"/> + <combo_box.item label="Camminando" name="Walking"/> + <combo_box.item label="Sedendo" name="Sitting"/> + <combo_box.item label="Volando" name="Flying"/> </combo_box> - <spinner label_width="125" width="192" label="Avvio lento (sec)" name="ease_in_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> - <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Arresto lento (sec)" name="ease_out_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> - <button bottom_delta="-32" name="play_btn" tool_tip="Attiva/sospendi l'animazione."/> + <spinner label="Avvio lento (sec)" label_width="125" name="ease_in_time" tool_tip="Tempo (in seconds) oltre il quale le animazioni si miscelano" width="192"/> + <spinner bottom_delta="-20" label="Arresto lento (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tempo (in seconds) oltre il quale le animazioni terminano di miscelarsi" width="192"/> + <button bottom_delta="-32" name="play_btn" tool_tip="Riproduci la tua animazione"/> + <button name="pause_btn" tool_tip="La tua animazione in Pause"/> <button label="" name="stop_btn" tool_tip="Ferma la riproduzione dell'animazione"/> <text name="bad_animation_text"> Impossibile leggere il file dell'animazione. @@ -72,19 +179,6 @@ Raccomandiamo file di tipo BVH esportati da Poser 4. </text> - <button label="Annulla" name="cancel_btn"/> <button label="Importa ([AMOUNT]L$)" name="ok_btn"/> - <string name="failed_to_initialize"> - Impossibile inizializzare la sequenza - </string> - <string name="anim_too_long"> - Il file dell'animazione è lungo [LENGTH] secondi. - -La lunghezza massima è [MAX_LENGTH] secondi. - </string> - <string name="failed_file_read"> - Impossibile leggere il file dell'animazione. - -[STATUS] - </string> + <button label="Annulla" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_auction.xml b/indra/newview/skins/default/xui/it/floater_auction.xml index bba76a83cc6..aa7b79fc506 100644 --- a/indra/newview/skins/default/xui/it/floater_auction.xml +++ b/indra/newview/skins/default/xui/it/floater_auction.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_auction" title="INIZIA A VENDERE TERRA LINDEN"> - <check_box label="Includi barriere di selezione gialle" name="fence_check"/> - <button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/> - <button label="OK" label_selected="OK" name="ok_btn"/> - <string name="already for sale"> +<floater name="floater_auction" title="INIZIA LA VENDITA DI TERRA LINDEN"> + <floater.string name="already for sale"> Non puoi mettere in asta terreni che sono già in vendita. - </string> + </floater.string> + <check_box initial_value="true" label="Includi barriere di selezione gialle" name="fence_check"/> + <button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/> + <button label="Vendi a chiunque" label_selected="Vendi a chiunque" name="sell_to_anyone_btn"/> + <button label="Annulla le Impostazioni" label_selected="Annulla le Impostazioni" name="reset_parcel_btn"/> + <button label="Inizia l'Asta" label_selected="Inizia l'Asta" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml index 89a61eeca8c..e583d0b8b57 100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml @@ -1,42 +1,47 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="SCEGLI RESIDENTE"> + <floater.string name="not_found"> + '[TEXT]' non trovato + </floater.string> + <floater.string name="no_one_near"> + Nessuno vicino + </floater.string> + <floater.string name="no_results"> + Nessun risultato + </floater.string> + <floater.string name="searching"> + Ricerca... + </floater.string> + <string label="Seleziona" label_selected="Seleziona" name="Select"> + Seleziona + </string> + <string name="Close"> + Chiudi + </string> <tab_container name="ResidentChooserTabs"> <panel label="Cerca" name="SearchPanel"> <text name="InstructSearchResidentName"> - Scrivi parte del nome del residente: + Scrivi parte del nome di una persona: </text> - <button label="Trova" label_selected="Trova" name="Find"/> + <button label="Vai" label_selected="Vai" name="Find"/> </panel> - <panel label="Biglietti da visita" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Seleziona un biglietto da visita: + <panel label="Amici" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Seleziona una persona: </text> </panel> <panel label="Vicino a me" name="NearMePanel"> <text name="InstructSelectResident"> - Seleziona un residente -nelle vicinanze: + Seleziona una persona nei dintorni: </text> - <button font="SansSerifSmall" left_delta="6" width="110" label="Aggiorna la lista" label_selected="Aggiorna l'elenco" name="Refresh"/> - <slider label="Range" name="near_me_range" bottom_delta="-36"/> + <slider bottom_delta="-36" label="Range" name="near_me_range"/> <text name="meters"> Metri </text> - <scroll_list bottom_delta="-169" height="159" name="NearMe" /> + <button font="SansSerifSmall" label="Aggiorna la lista" label_selected="Aggiorna l'elenco" left_delta="6" name="Refresh" width="110"/> + <scroll_list bottom_delta="-169" height="159" name="NearMe"/> </panel> </tab_container> - <button label="Seleziona" label_selected="Seleziona" name="Select"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <string name="not_found"> - '[TEXT]' non trovato - </string> - <string name="no_one_near"> - Nessuno è vicino - </string> - <string name="no_results"> - Nessun risultato - </string> - <string name="searching"> - Ricerca... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancella" label_selected="Cancella" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml index f55b23af355..e5ce07f3000 100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml @@ -1,30 +1,32 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="TEXTURE DELL'AVATAR"> - <text name="baked_label"> - Texture Visualizzate - </text> +<floater name="avatar_texture_debug" title="AVATAR TEXTURES"> + <floater.string name="InvalidAvatar"> + AVATAR NON VALIDO + </floater.string> <text name="composite_label"> Texture Composite </text> - <texture_picker label="Testa" name="baked_head"/> - <texture_picker label="Trucco" name="head_bodypaint"/> - <texture_picker label="Capelli" name="hair"/> <button label="Deposito" label_selected="Deposito" name="Dump"/> - <texture_picker label="Occhi" name="baked_eyes"/> - <texture_picker label="Occhio" name="eye_texture"/> - <texture_picker label="Parte superiore del corpo" name="baked_upper_body"/> - <texture_picker label="Tatuaggio parte superiore del corpo" name="upper_bodypaint"/> - <texture_picker label="Canottiera" name="undershirt"/> - <texture_picker label="Guanti" name="gloves"/> - <texture_picker label="Maglietta" name="shirt"/> - <texture_picker label="Giacca, parte superiore" name="upper_jacket"/> - <texture_picker label="Parte inferiore del corpo" name="baked_lower_body"/> - <texture_picker label="Tatuaggio parte inferiore del corpo" name="lower_bodypaint"/> - <texture_picker label="Mutande" name="underpants"/> - <texture_picker label="Calze" name="socks"/> - <texture_picker label="Scarpe" name="shoes"/> - <texture_picker label="Pantaloni" name="pants"/> - <texture_picker label="Giacca" name="jacket"/> - <texture_picker label="Gonna" name="baked_skirt"/> - <texture_picker label="Gonna" name="skirt_texture"/> + <texture_picker label="Capelli" name="hair_grain"/> + <texture_picker label="Capelli Alpha" name="hair_alpha"/> + <texture_picker label="Trucco" name="head_bodypaint"/> + <texture_picker label="Testa Alpha" name="head_alpha"/> + <texture_picker label="Tatuaggio Testa" name="head_tattoo"/> + <texture_picker label="Occhio" name="eyes_iris"/> + <texture_picker label="Occhi Alpha" name="eyes_alpha"/> + <texture_picker label="Bodypaint Corpo Superiore" name="upper_bodypaint"/> + <texture_picker label="Maglietta intima" name="upper_undershirt"/> + <texture_picker label="Guanti" name="upper_gloves"/> + <texture_picker label="Camicia" name="upper_shirt"/> + <texture_picker label="Giacca superiore" name="upper_jacket"/> + <texture_picker label="Alpha Superiore" name="upper_alpha"/> + <texture_picker label="Tatuaggio superiore" name="upper_tattoo"/> + <texture_picker label="Bodypaint Corpo Inferiore" name="lower_bodypaint"/> + <texture_picker label="Slip" name="lower_underpants"/> + <texture_picker label="Calze" name="lower_socks"/> + <texture_picker label="Scarpe" name="lower_shoes"/> + <texture_picker label="Pantaloni" name="lower_pants"/> + <texture_picker label="Giacca" name="lower_jacket"/> + <texture_picker label="Alpha Inferiore" name="lower_alpha"/> + <texture_picker label="Tatuaggio basso" name="lower_tattoo"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml index 126c03e8556..8fd69d811d8 100644 --- a/indra/newview/skins/default/xui/it/floater_beacons.xml +++ b/indra/newview/skins/default/xui/it/floater_beacons.xml @@ -1,15 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="beacons" title="SEGNALI LUMINOSI"> +<floater name="beacons" title="BEACONS"> <panel name="beacons_panel"> - <check_box label="Oggetti scriptati con solo 'tocca' abilitato" name="touch_only"/> - <check_box label="Oggetti scriptati" name="scripted"/> - <check_box label="Oggetti fisici" name="physical"/> - <check_box label="Sorgenti di suoni" name="sounds"/> - <check_box label="Sorgenti di particelle" name="particles"/> - <check_box label="Visualizza l'evidenziato" name="highlights"/> - <check_box label="Visualizza segnali" name="beacons"/> - <text name="beacon_width_label"> - Ampiezza segnali: + <text name="label_show"> + Mostra: </text> + <check_box label="Beacons" name="beacons"/> + <check_box label="Highlights" name="highlights"/> + <text name="beacon_width_label" tool_tip="Beacon width"> + Larghezza: + </text> + <text name="label_objects"> + Per questi oggetti: + </text> + <check_box label="Fisico" name="physical"/> + <check_box label="Scripted" name="scripted"/> + <check_box label="Tocca solo" name="touch_only"/> + <check_box label="Fonte del Suono" name="sounds"/> + <check_box label="Fonte delle Particle" name="particles"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml index c6ee0f79176..233efef19bb 100644 --- a/indra/newview/skins/default/xui/it/floater_build_options.xml +++ b/indra/newview/skins/default/xui/it/floater_build_options.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="build options floater" title="OPZIONI DELLA GRIGLIA"> - <spinner label="Unità di misura della griglia (metri)" name="GridResolution" width="250" label_width="192"/> - <spinner label="Estensione della griglia (metri)" name="GridDrawSize" width="250" label_width="192"/> - <check_box label="Abilita sotto-unità di movimento" name="GridSubUnit"/> - <check_box label="Mostra piani d'intersezione" name="GridCrossSection"/> +<floater name="build options floater" title="GRID OPTIONS"> + <spinner label="Grid Units (meters)" label_width="192" name="GridResolution" width="250"/> + <spinner label="Estensione della griglia (metri)" label_width="192" name="GridDrawSize" width="250"/> + <check_box label="Usa allineamento sub-unitario" name="GridSubUnit"/> + <check_box label="Guarda le cross-sections" name="GridCrossSection"/> + <text name="grid_opacity_label" tool_tip="Opacità della Grid"> + Opacità : + </text> <slider label="Trasparenza della griglia" name="GridOpacity" width="250"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml index 7f5b68279e9..26890dc2093 100644 --- a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml @@ -1,44 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="MODIFICA IN MASSA I PERMESSI DEL CONTENUTO"> - <text name="applyto"> - Tipi di contenuto - </text> +<floater name="floaterbulkperms" title="MODIFICA PERMESSI DEL CONTENUTO"> + <floater.string name="nothing_to_modify_text"> + La selezione non contiene nessun contenuto modificabile. + </floater.string> + <floater.string name="status_text"> + Impostazione permessi su [NAME] + </floater.string> + <floater.string name="start_text"> + Avvio richiesta di modifica dei permessi... + </floater.string> + <floater.string name="done_text"> + Conclusa richiesta di modifica dei permessi. + </floater.string> <check_box label="Animazioni" name="check_animation"/> + <icon name="icon_animation" tool_tip="Animazioni"/> <check_box label="Parti del corpo" name="check_bodypart"/> + <icon name="icon_bodypart" tool_tip="Parti del Corpo"/> <check_box label="Abiti" name="check_clothing"/> + <icon name="icon_clothing" tool_tip="Vestiario"/> <check_box label="Gesture" name="check_gesture"/> - <check_box label="Landmark" name="check_landmark"/> + <icon name="icon_gesture" tool_tip="Gestures"/> <check_box label="Notecard" name="check_notecard"/> + <icon name="icon_notecard" tool_tip="Notecards"/> <check_box label="Oggetti" name="check_object"/> + <icon name="icon_object" tool_tip="Oggetti"/> <check_box label="Script" name="check_script"/> + <icon name="icon_script" tool_tip="Scripts"/> <check_box label="Suoni" name="check_sound"/> + <icon name="icon_sound" tool_tip="Suoni"/> <check_box label="Texture" name="check_texture"/> - <button label="Spunta tutti" label_selected="Tutti" name="check_all"/> - <button label="Togli la spunta a tutti" label_selected="Nessuno" name="check_none"/> + <icon name="icon_texture" tool_tip="Textures"/> + <button label="√ Tutto" label_selected="Tutti" name="check_all"/> + <button label="Pulisci" label_selected="Nessuno" name="check_none"/> <text name="newperms"> - Nuovi permessi + Nuovo Permessi del Contenuto + </text> + <text name="GroupLabel"> + Gruppo: </text> - <check_box label="Condividi con il gruppo" name="share_with_group"/> - <check_box label="Permetti a tutti di copiare" name="everyone_copy"/> + <check_box label="Condividi" name="share_with_group"/> + <text name="AnyoneLabel"> + Chiunque: + </text> + <check_box label="Copia" name="everyone_copy"/> <text name="NextOwnerLabel"> - Il prossimo proprietario può: + Prossimo proprietario: </text> <check_box label="Modificare" name="next_owner_modify"/> <check_box label="Copiare" name="next_owner_copy"/> - <check_box label="Rivendere/Regalare" name="next_owner_transfer"/> - <button label="Aiuto" name="help"/> - <button label="Applica" name="apply"/> - <button label="Chiudi" name="close"/> - <string name="nothing_to_modify_text"> - La selezione non contiene nessun contenuto modificabile. - </string> - <string name="status_text"> - Impostazione permessi su [NAME] - </string> - <string name="start_text"> - Avvio richiesta di modifica dei permessi... - </string> - <string name="done_text"> - Conclusa richiesta di modifica dei permessi. - </string> + <check_box initial_value="true" label="Transfer" name="next_owner_transfer" tool_tip="Prossimo proprietario può donare o rivendere questo oggetto"/> + <button label="Ok" name="apply"/> + <button label="Cancella" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_bumps.xml b/indra/newview/skins/default/xui/it/floater_bumps.xml index 23fa1a41a69..d9dd3f26d72 100644 --- a/indra/newview/skins/default/xui/it/floater_bumps.xml +++ b/indra/newview/skins/default/xui/it/floater_bumps.xml @@ -1,21 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_bumps" title="COLLISIONI, SPINTE E COLPI"> - <string name="none_detected"> + <floater.string name="none_detected"> Nessuno rilevato - </string> - <string name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] ti ha urtato - </string> - <string name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] ti ha spinto per mezzo di uno script - </string> - <string name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] ti ha colpito con un oggetto - </string> - <string name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] ti ha colpito con un oggetto scriptato - </string> - <string name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] ti ha colpito con un oggetto fisico - </string> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml index 1a6f64c07e4..e84d396138b 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_contents.xml @@ -7,8 +7,9 @@ Compra per [AMOUNT]L$ da [NAME]? </text> <button label="Annulla" label_selected="Annulla" name="cancel_btn" width="73"/> - <button label="Compra" label_selected="Compra" name="buy_btn" width="73" left_delta="-77"/> - <check_box label="Indossa adesso l'indumento" name="wear_check" bottom="-234" left_delta="-125"/> + <button label="Compra" label_selected="Compra" left_delta="-77" name="buy_btn" width="73"/> + <check_box bottom="-234" label="Indossa adesso +l'indumento" left_delta="-125" name="wear_check"/> <string name="no_copy_text"> (non copiabile) </string> diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index 8a597642516..9d97f7d72d5 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -1,70 +1,66 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="ACQUISTA VALUTA"> - <text name="info_buying"> - Acquistando valuta: - </text> - <text name="info_cannot_buy" left="5" right="-5"> - Non è possibile comprare ora - </text> - <text name="info_need_more" left="5" right="-5" font="SansSerifLarge"> - Hai bisogno di acquistare ulteriore contante: - </text> - <text name="error_message"> - Qualcosa non è andato a buon fine. +<floater name="buy currency" title="COMPRA L$"> + <floater.string name="buy_currency"> + Compra L$ [LINDENS] per approx. [LOCALAMOUNT] + </floater.string> + <text font="SansSerifLarge" left="5" name="info_need_more" right="-5"> + Necessiti di più L$ </text> - <button label="Vai al sito web" name="error_web"/> <text name="contacting"> Sto contattando il LindeX... </text> - <text name="buy_action_unknown"> - Compra L$ sul mercato delle valute LindeX + <text name="info_buying"> + COMPRA L$ </text> - <text name="buy_action"> - [NAME] [PRICE]L$ + <text name="balance_label"> + Io ho + </text> + <text name="balance_amount"> + [AMT]L$ </text> <text name="currency_action" width="45"> - Compra + Io voglio comprare + </text> + <text name="currency_label"> + L$ </text> - <line_editor name="currency_amt"> + <line_editor label="L$" name="currency_amt"> 1234 </line_editor> + <text name="buying_label"> + Al prezzo + </text> <text name="currency_est"> - per circa [LOCALAMOUNT] + approx. [LOCALAMOUNT] </text> <text name="getting_data"> - Dati in ricezione... - </text> - <text name="balance_label"> - Attualmente possiedi + Calcolando... </text> - <text name="balance_amount"> - [AMT]L$ - </text> - <text name="buying_label"> - Stai comprando - </text> - <text name="buying_amount"> - [AMT]L$ + <text name="buy_action"> + [NAME] [PRICE]L$ </text> <text name="total_label"> - Il tuo saldo sarà + Il mio saldo sarà </text> <text name="total_amount"> [AMT]L$ </text> <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=it-IT payment method] | [http://www.secondlife.com/my/account/currency.php?lang=it-IT currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=it-IT exchange rate] + [http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] + </text> + <text name="exchange_rate_note"> + Ri-scrivi un importo per vedere l'ultimo rapporto di cambio. </text> <text name="purchase_warning_repurchase"> - Confermando questa operazione si acquisterà solo la valuta. Per acquistare il bene, dovrai riprovare l'operazione nuovamente. + Confermando questo acquisto di soli L$, non l'oggetto. </text> - <text name="purchase_warning_notenough" bottom_delta="16"> - Non stai comprando abbastanza denaro. -Devi aumentare l'importo da acquistare. + <text bottom_delta="16" name="purchase_warning_notenough"> + Non stai acquistando abbastanza L$. Per favore aumenta l'importo. </text> + <button label="Compra ora" name="buy_btn"/> <button label="Cancella" name="cancel_btn"/> - <button label="Acquista" name="buy_btn"/> - <string name="buy_currency"> - acquistare [LINDENS]L$ per circa [LOCALAMOUNT] - </string> + <text left="5" name="info_cannot_buy" right="-5"> + Non in grado di acquistare + </text> + <button label="Continua sul Web" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml index b5d7ba07637..9fa5bd5570b 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="COMPRA TERRA"> +<floater name="buy land" title="COMPRA LA TERRA"> <text name="region_name_label"> Regione: </text> @@ -18,10 +18,10 @@ <text name="estate_name_text"> (sconosciuto) </text> - <text name="estate_owner_label" width="120" right="575"> + <text name="estate_owner_label" right="575" width="120"> Proprietario della regione: </text> - <text name="estate_owner_text" left="580" width="155"> + <text left="580" name="estate_owner_text" width="155"> (sconosciuto) </text> <text name="resellable_changeable_label"> @@ -57,9 +57,9 @@ Prezzo: </text> <text name="info_price"> - 1500 L$ -(1.1 L$/m²) -venduta con gli oggetti + L$ 1500 +(L$ 1.1/m²) +sold with objects </text> <text name="info_action"> Comprando questa terra: @@ -75,15 +75,16 @@ venduta con gli oggetti Solo i membri premium possono possedere terra. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mese, addebitati mensilmente"/> - <combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mese, addebitati ogni quadrimestre"/> - <combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mese, addebitati annualmente"/> + <combo_box.item label="US$9.95/mese, addebitato mensilmente" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="US$7.50/mese, addebitato trimestralmente" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="US$6.00/mese, addebitato annualmente" name="US$6.00/month,billedannually"/> </combo_box> <text name="land_use_action"> Aumenta il tasso di pagamento mensile delle tasse d'uso della terra a 40 US$/mese. </text> <text name="land_use_reason"> - Possiedi 1309 m² di terra. Questa porzione è 512 m² di terra. + Tu occupi 1309 m² di terreno. +This parcel is 512 m² di terreno. </text> <text name="purchase_action"> Paga il residente Joe 4000 L$ per la terra @@ -94,16 +95,16 @@ venduta con gli oggetti <text name="currency_action" width="106"> Compra ulteriori L$ </text> - <line_editor name="currency_amt" left="174" width="80"> + <line_editor left="174" name="currency_amt" width="80"> 1000 </line_editor> <text name="currency_est"> - per circa [AMOUNT2] US$ + per circa. [LOCAL_AMOUNT] </text> <text name="currency_balance"> Possiedi 2.100 L$. </text> - <check_box label="Rimuovi [AMOUNT] metri quadri di contribuzione dal gruppo." name="remove_contribution"/> + <check_box label="Rimuovi [AMOUNT] m² di contribuzione dal gruppo." name="remove_contribution"/> <button label="Compra" name="buy_btn"/> <button label="Annulla" name="cancel_btn"/> <string name="can_resell"> @@ -180,26 +181,26 @@ Prova a selezionare un'area più piccola. Il tuo account può possedere terra. </string> <string name="land_holdings"> - Possiedi [BUYER] di metri quadri di terra. + Tu occupi [BUYER] m² di terreno. </string> <string name="pay_to_for_land"> Paga [AMOUNT] L$ a [SELLER] per questa terra </string> <string name="buy_for_US"> - Comprare [AMOUNT] L$ per circa [AMOUNT2] US$, + Compra L$ [AMOUNT] per circa. [LOCAL_AMOUNT], </string> <string name="parcel_meters"> - Questo terreno è di [AMOUNT] metri quadri. + Questo parcel è [AMOUNT] m² </string> <string name="premium_land"> - Questa terra è premium, e sarà  addebitata come [AMOUNT] metri quadri. + Questo terreno è premium, e costerà [AMOUNT] m². </string> <string name="discounted_land"> - Questa terra è scontata, e sarà  addebitata come [AMOUNT] metri quadri. + Questo terreno è scontato, e costerà [AMOUNT] m². </string> <string name="meters_supports_object"> - [AMOUNT] metri quadri -supporta [AMOUNT2] oggetti + [AMOUNT] m² +mantiene [AMOUNT2] oggetti </string> <string name="sold_with_objects"> venduta con oggetti @@ -208,9 +209,9 @@ supporta [AMOUNT2] oggetti Oggetti non inclusi </string> <string name="info_price_string"> - [PRICE] L$ -([PRICE_PER_SQM] L$/m²) -[SOLD_WITH_OBJECTS] + L$ [PRICE] +(L$ [PREZZO_PER_QM]/m²) +[VENDUTO_CON_OGGETTI] </string> <string name="insufficient_land_credits"> Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d'uso terriero, diff --git a/indra/newview/skins/default/xui/it/floater_buy_object.xml b/indra/newview/skins/default/xui/it/floater_buy_object.xml index e99d4323670..5f3413931b5 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="COMPRA UNA COPIA DELL'OGGETTO"> +<floater name="contents" title="COMPRA COPIA DELL'OGGETTO"> <text name="contents_text"> - e dei suoi contenuti: + Contiene: </text> <text name="buy_text"> Compra per [AMOUNT]L$ da [NAME]? diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml index 823be8f4a1c..182f82f17ff 100644 --- a/indra/newview/skins/default/xui/it/floater_camera.xml +++ b/indra/newview/skins/default/xui/it/floater_camera.xml @@ -10,7 +10,22 @@ Muovi la telecamera su e giù e a sinistra e destra </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Muovi la telecamera su e giù e a sinistra e destra"/> - <joystick_zoom name="zoom" tool_tip="Avvicina la telecamera nell'inquadratura"/> + <joystick_track name="cam_track_stick" tool_tip="Sposta la visuale sù e giù, sinistra e destra"/> + <panel name="zoom" tool_tip="Avvicina la telecamera nell'inquadratura"> + <slider_bar name="zoom_slider" tool_tip="Zoom verso il focus"/> + </panel> + <joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al focus"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Visuale posteriore"/> + <button name="group_view" tool_tip="Visuale di Gruppo"/> + <button name="front_view" tool_tip="Visuale Frontale"/> + <button name="mouselook_view" tool_tip="Visuale Mouselook"/> + </panel> + </panel> + <panel name="buttons"> + <button label="" name="orbit_btn" tool_tip="Ruota la visuale"/> + <button label="" name="pan_btn" tool_tip="Visuale Panoramica"/> + <button label="" name="avatarview_btn" tool_tip="Guardare un avatar"/> + <button label="" name="freecamera_btn" tool_tip="Vedi oggetto"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_color_picker.xml b/indra/newview/skins/default/xui/it/floater_color_picker.xml index 297b006e725..8551d65da2c 100644 --- a/indra/newview/skins/default/xui/it/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_color_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="TAVOLOZZA COLORI"> +<floater name="ColorPicker" title="SELETTORE di COLORE"> <text name="r_val_text"> Rosso: </text> @@ -24,15 +24,14 @@ Luminosità : </text> <spinner left="84" name="lspin" width="47"/> - <check_box label="Applica Immediatamente" name="apply_immediate"/> - <button left_delta="150" name="color_pipette" /> - <button left_delta="55" label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Seleziona" label_selected="Seleziona" name="select_btn"/> + <check_box label="Applica ora" name="apply_immediate"/> + <button left_delta="150" name="color_pipette"/> + <button label="Annulla" label_selected="Annulla" left_delta="55" name="cancel_btn"/> + <button label="Ok" label_selected="Ok" name="select_btn"/> <text name="Current color:"> Colore attuale: </text> <text name="(Drag below to save.)"> - (Trascina qui sotto - per salvare) + (Trascina sotto per salvare) </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_customize.xml b/indra/newview/skins/default/xui/it/floater_customize.xml index ad6111718af..63e08444cd8 100644 --- a/indra/newview/skins/default/xui/it/floater_customize.xml +++ b/indra/newview/skins/default/xui/it/floater_customize.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="ASPETTO FISICO" width="551"> +<floater name="floater customize" title="ASPETTO" width="551"> <tab_container name="customize tab container" tab_min_width="120" width="549"> <placeholder label="Parti del corpo" name="body_parts_placeholder"/> - <panel label="Forma del corpo" name="Shape" left="124" width="389"> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <panel label="Forma del corpo" left="124" name="Shape" width="389"> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> <button label="Corpo" label_selected="Corpo" name="Body"/> <button label="Testa" label_selected="Testa" name="Head"/> <button label="Occhi" label_selected="Occhi" name="Eyes"/> @@ -14,8 +14,8 @@ <button label="Torso" label_selected="Torso" name="Torso"/> <button label="Gambe" label_selected="Gambe" name="Legs"/> <radio_group name="sex radio"> - <radio_item name="radio" label="Femmina" /> - <radio_item name="radio2" label="Maschio" /> + <radio_item label="Femmina" name="radio"/> + <radio_item label="Maschio" name="radio2"/> </radio_group> <text name="title"> [DESC] @@ -43,8 +43,8 @@ sul tuo avatar. In alternativa, puoi crearne una nuova ed indossarla. Forma del corpo: </text> <button label="Crea una nuova forma del corpo" label_selected="Crea una nuova forma del corpo" name="Create New" width="190"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> </panel> <panel label="Pelle" name="Skin"> <button label="Colore della pelle" label_selected="Colore della pelle" name="Skin Color" width="115"/> @@ -76,13 +76,13 @@ In alternativa, puoi crearne una nuova da zero ed indossarla. <text name="Item Action Label" right="89"> Pelle: </text> - <texture_picker width="96" label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker width="96" label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker width="96" label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> + <texture_picker label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> + <texture_picker label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> <button label="Crea una nuova pelle" label_selected="Crea una nuova pelle" name="Create New"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Capelli" name="Hair"> <button label="Capelli" label_selected="Colore" name="Color"/> @@ -116,9 +116,9 @@ In alternativa, puoi crearne di nuovi da zero ed indossarli. </text> <texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere un'immagine"/> <button label="Crea nuovi capelli" label_selected="Crea nuovi capelli" name="Create New"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Occhi" name="Eyes"> <text name="title"> @@ -148,19 +148,19 @@ In alternativa, puoi crearne di nuovi da zero ed indossarli. </text> <texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere un'immagine"/> <button label="Crea nuovi occhi" label_selected="Crea nuovi occhi" name="Create New"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> - <panel label="Vestiti" name="clothes_placeholder"/> + <placeholder label="Vestiti" name="clothes_placeholder"/> <panel label="Camicia" name="Shirt"> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea una nuova camicia" label_selected="Crea una nuova camicia" name="Create New"/> <button label="Togli" label_selected="Togli" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> <text name="title"> [DESC] </text> @@ -189,12 +189,12 @@ In alternativa, puoi crearne una nuova da zero ed indossarla. </panel> <panel label="Pantaloni" name="Pants"> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New" /> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + <button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New"/> <button label="Togli" label_selected="Togli" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> <text name="title"> [DESC] </text> @@ -248,12 +248,12 @@ In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. Scarpe: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea nuove scarpe" label_selected="Crea nuove scarpe" name="Create New"/> <button label="Togli" label_selected="Togli" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Calze" name="Socks"> <text name="title"> @@ -282,12 +282,12 @@ In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. Calze: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New" /> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + <button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New"/> <button label="Togli" label_selected="Togli" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Giacca" name="Jacket"> <text name="title"> @@ -315,14 +315,14 @@ In alternativa, puoi crearne una nuova da zero ed indossarla. <text name="Item Action Label" right="89"> Giacca: </text> - <texture_picker width="96" label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker width="96" label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <texture_picker label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un'immagine" width="96"/> + <texture_picker label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un'immagine" width="96"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea una nuova giacca" label_selected="Crea una nuova giacca" name="Create New"/> <button label="Togli" label_selected="Togli" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Guanti" name="Gloves"> <text name="title"> @@ -351,12 +351,12 @@ In alternativa, puoi crearne un paio nuovo da zero ed indossarlo. Guanti: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea nuovi guanti" label_selected="Crea nuovi guanti" name="Create New"/> - <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Canottiera" name="Undershirt"> <text name="title"> @@ -385,12 +385,12 @@ In alternativa, puoi crearne una nuovo da zero ed indossarla. Canottiera: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea una nuova canottiera" label_selected="Crea una nuova canottiera" name="Create New"/> - <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Mutande" name="Underpants"> <text name="title"> @@ -419,12 +419,12 @@ In alternativa, puoi crearne una paio nuovo da zero ed indossarlo. Mutande: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea nuove mutande" label_selected="Crea nuove mutande" name="Create New"/> - <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> </panel> <panel label="Gonna" name="Skirt"> <text name="title"> @@ -453,16 +453,88 @@ In alternativa, puoi crearne una nuova da zero ed indossarla. Gonna: </text> <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> <button label="Crea una nuova gonna" label_selected="Crea una nuova gonna" name="Create New"/> - <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> - <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> + <button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/> + <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> + <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/> + </panel> + <panel label="Alpha" name="Alpha"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: non può essere modificato + </text> + <text name="title_loading"> + [DESC]: caricando... + </text> + <text name="title_not_worn"> + [DESC]: non indossato + </text> + <text name="path"> + Collocato in [PATH] + </text> + <text name="not worn instructions"> + Metti una nuova alpha mask trascinandone una dall'inventario del tuo avatar. +In alternativa, creane una nuova partendo da zero e indossala. + </text> + <text name="no modify instructions"> + Non hai i permessi per modificare questa vestibilità . + </text> + <text name="Item Action Label"> + Alpha: + </text> + <texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una foto"/> + <texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha dell'occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegiere una fotografia"/> + <button label="Crea nuova alpha" label_selected="Crea nuova alpha" name="Create New"/> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button label="Salva" label_selected="Salva" name="Save"/> + <button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/> + <button label="Ripristina" label_selected="Ripristina" name="Revert"/> + </panel> + <panel label="Tatuaggio" name="Tattoo"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: non può essere modificato + </text> + <text name="title_loading"> + [DESC]: caricando... + </text> + <text name="title_not_worn"> + [DESC]: non indossato + </text> + <text name="path"> + Collocato in [PATH] + </text> + <text name="not worn instructions"> + Metti un nuovo tatuaggio trascinandone uno dall'inventario del tuo avatar. +In alternativa, creane uno nuovo partendo da zero e indossalo. + </text> + <text name="no modify instructions"> + Non hai i permessi per moficare questa vestibilità . + </text> + <text name="Item Action Label"> + Tatuaggio: + </text> + <texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una foto"/> + <texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Tatuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/> + <button label="Crea Nuovo tatuaggio" label_selected="Crea un nuovo tatuaggio" name="Create New"/> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button label="Salva" label_selected="Salva" name="Save"/> + <button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/> + <button label="Ripristina" label_selected="Ripristina" name="Revert"/> </panel> </tab_container> <scroll_container left="254" name="panel_container"/> + <button label="Crea vestiario" label_selected="Crea vestiario" name="make_outfit_btn"/> <button label="Annulla" label_selected="Annulla" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> - <button label="Crea Outfit..." label_selected="Crea Outfit..." name="Make Outfit" left="122" /> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_device_settings.xml b/indra/newview/skins/default/xui/it/floater_device_settings.xml index 932978809d5..2410a16882e 100644 --- a/indra/newview/skins/default/xui/it/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_device_settings.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="IMPOSTAZIONI DISPOSITIVI VOICE CHAT"/> +<floater name="floater_device_settings" title="OPZIONI PER IL DISPOSITIVO VOICE CHAT"/> diff --git a/indra/newview/skins/default/xui/it/floater_env_settings.xml b/indra/newview/skins/default/xui/it/floater_env_settings.xml index 32858d18cdc..1c17c18e84b 100644 --- a/indra/newview/skins/default/xui/it/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_env_settings.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="EDITOR DELL'AMBIENTE"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> Ora del giorno @@ -15,7 +18,7 @@ Nuvole Colore dell'Acqua </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire il selettore dei colori"/> <text name="EnvWaterFogText"> Nebbiosità dell'acqua @@ -23,5 +26,4 @@ dell'acqua <button bottom="-144" label="Usa orario della regione" name="EnvUseEstateTimeButton" width="145"/> <button label="Cielo avanzato" name="EnvAdvancedSkyButton"/> <button label="Acqua avanzata" name="EnvAdvancedWaterButton"/> - <button label="?" name="EnvSettingsHelpButton"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml index 91b7381d13d..eefa3bb3921 100644 --- a/indra/newview/skins/default/xui/it/floater_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_gesture.xml @@ -1,15 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gestures" title="GESTURE ATTIVE"> - <text name="help_label"> - Fai doppio click su una gesture per azionare animazioni -e suoni. - </text> +<floater label="Posti" name="gestures" title="GESTURES"> + <floater.string name="loading"> + Caricando... + </floater.string> + <floater.string name="playing"> + (Riproducendo) + </floater.string> + <floater.string name="copy_name"> + Copia di [COPY_NAME] + </floater.string> <scroll_list bottom_delta="-385" height="360" name="gesture_list"> - <column label="Frase scatenante" name="trigger" width="106"/> - <column label="Pulsante" name="shortcut" width="65"/> - <column label="Nome" name="name" width="129"/> + <scroll_list.columns label="Nome" name="name" width="129"/> + <scroll_list.columns label="Chat" name="trigger" width="106"/> + <scroll_list.columns label="Pulsante" name="shortcut" width="65"/> </scroll_list> - <button label="Nuova" name="new_gesture_btn"/> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Più opzioni"/> + <button name="new_gesture_btn" tool_tip="Crea nuova gesture"/> + <button name="activate_btn" tool_tip="Attiva/Disattiva la gesture selezionata"/> + <button name="del_btn" tool_tip="Cancella questa gesture"/> + </panel> <button label="Modifica" name="edit_btn"/> <button label="Play" name="play_btn"/> <button label="Stop" name="stop_btn"/> diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml index cdf3e970a66..08326b1da3d 100644 --- a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Hardware Settings Floater" title="IMPOSTAZIONI HARDWARE"> +<floater name="Hardware Settings Floater" title="OPZIONI HARDWARE"> <text name="Filtering:"> Filtraggio: </text> @@ -8,21 +8,22 @@ Antialiasing: </text> <combo_box label="Antialiasing" name="fsaa" width="94"> - <combo_box.item name="FSAADisabled" label="Disattivato"/> - <combo_box.item name="2x" label="2x"/> - <combo_box.item name="4x" label="4x"/> - <combo_box.item name="8x" label="8x"/> - <combo_box.item name="16x" label="16x"/> + <combo_box.item label="Disattivato" name="FSAADisabled"/> + <combo_box.item label="2x" name="2x"/> + <combo_box.item label="4x" name="4x"/> + <combo_box.item label="8x" name="8x"/> + <combo_box.item label="16x" name="16x"/> </combo_box> <spinner label="Gamma:" name="gamma"/> <text name="(brightness, lower is brighter)"> - (Luminosità , più basso = più luminoso, 0=default) + (0 = luminosità default, più basso = più luminoso) </text> <text name="Enable VBO:"> Attiva VBO: </text> - <check_box label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance. Ma, su un vecchio hardware, spesso l'implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/> - <slider label="Memoria Texture (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantità di memoria allocata per le texture. Impostata di default sulla memoria della scheda grafica. Ridurla può aumentare la performance, ma può anche rendere le texture sfocate."/> - <spinner label="Indice della distanza della nebbia:" name="fog"/> + <check_box initial_value="true" label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance. Ma, su un vecchio hardware, spesso l'implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/> + <slider label="Texture Memory (MB):" name="GraphicsCardTextureMemory" tool_tip="Spazio di memoria da ssegnare alle textures. Memoria della scheda video in Defaults. Ridurre questa impostazione potrebbe migliorare il rendimento ma potrebbe anche rendere le textures poco definite."/> + <spinner label="Indice della distanza +della nebbia:" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_help_browser.xml b/indra/newview/skins/default/xui/it/floater_help_browser.xml new file mode 100644 index 00000000000..9a158c5216d --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_help_browser.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="HELP BROWSER"> + <layout_stack name="stack1"> + <layout_panel name="external_controls"> + <button label="Apri nel mio Web Browser" name="open_browser"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_im.xml b/indra/newview/skins/default/xui/it/floater_im.xml index 2a9862fe7cd..6303615e60e 100644 --- a/indra/newview/skins/default/xui/it/floater_im.xml +++ b/indra/newview/skins/default/xui/it/floater_im.xml @@ -10,7 +10,7 @@ Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat. </string> <string name="muted_message"> - Hai mutato questo residente. L'invio di un messaggio lo riabiliterà automaticamente. + Hai bloccato questo residente. Spedendo un messaggio sarà automaticamente sbloccati. </string> <string name="generic_request_error"> Errore durante la richiesta, riprova più tardi. diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml new file mode 100644 index 00000000000..2970639f4c4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="Instant Messages"/> diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml new file mode 100644 index 00000000000..830c65b4439 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_im_session.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="panel_im"> + <layout_stack name="im_panels"> + <layout_panel label="Pannello di Controllo IM" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="A" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml index 8ee3181bce3..341202d8bc2 100644 --- a/indra/newview/skins/default/xui/it/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_image_preview.xml @@ -10,17 +10,17 @@ Anteprima dell' immagine come: </text> - <combo_box label="Tipo d'abito" name="clothing_type_combo" left="120" width="166"> - <combo_box.item name="Image" label="Immagine"/> - <combo_box.item name="Hair" label="Capelli"/> - <combo_box.item name="FemaleHead" label="Testa femminile"/> - <combo_box.item name="FemaleUpperBody" label="Corpo femminile superiore"/> - <combo_box.item name="FemaleLowerBody" label="Corpo femminile inferiore"/> - <combo_box.item name="MaleHead" label="Testa maschile"/> - <combo_box.item name="MaleUpperBody" label="Corpo maschile superiore"/> - <combo_box.item name="MaleLowerBody" label="Corpo maschile inferiore"/> - <combo_box.item name="Skirt" label="Gonna"/> - <combo_box.item name="SculptedPrim" label="Oggetto sculpt"/> + <combo_box label="Tipo d'abito" left="120" name="clothing_type_combo" width="166"> + <combo_box.item label="Immagine" name="Image"/> + <combo_box.item label="Capelli" name="Hair"/> + <combo_box.item label="Testa Femminile" name="FemaleHead"/> + <combo_box.item label="Corpo Femminile Superiore" name="FemaleUpperBody"/> + <combo_box.item label="Corpo Femminile Inferiore" name="FemaleLowerBody"/> + <combo_box.item label="Testa Maschile" name="MaleHead"/> + <combo_box.item label="Corpo Maschile Superiore" name="MaleUpperBody"/> + <combo_box.item label="Corpo Maschile Inferiore" name="MaleLowerBody"/> + <combo_box.item label="Gonna" name="Skirt"/> + <combo_box.item label="Sculpted Prim" name="SculptedPrim"/> </combo_box> <text name="bad_image_text"> Non è stato possibile leggere l'immagine. diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml new file mode 100644 index 00000000000..fc7b8de6f40 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="incoming call" title="UNA PERSONA SCONOSCIUTA STA' CHIAMANDO"> + <floater.string name="localchat"> + Voice Chat nei dintorni + </floater.string> + <floater.string name="anonymous"> + anonimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + stà chiamando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + ha aggiunto una chiamata in Voice Chat ad una conferenza in chat. + </floater.string> + <text name="question"> + Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat? + </text> + <button label="Accetta" label_selected="Accetta" name="Accept"/> + <button label="Rifiuta" label_selected="Rifiuta" name="Reject"/> + <button label="Inizia IM" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inspect.xml b/indra/newview/skins/default/xui/it/floater_inspect.xml index 1a4e6c3c1bd..bae993d2be8 100644 --- a/indra/newview/skins/default/xui/it/floater_inspect.xml +++ b/indra/newview/skins/default/xui/it/floater_inspect.xml @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="ISPEZIONA OGGETTI" min_width="450"> +<floater min_width="450" name="inspect" title="ISPEZIONA OGGETTI"> + <floater.string name="timeStamp"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </floater.string> <scroll_list name="object_list" tool_tip="Seleziona un oggetto da questo elenco per evidenziarlo inworld"> - <column label="Nome dell'oggetto" name="object_name"/> - <column label="Proprietario" name="owner_name"/> - <column label="Creatore" name="creator_name"/> - <column label="Data di creazione" name="creation_date"/> + <scroll_list.columns label="Nome dell'oggetto" name="object_name"/> + <scroll_list.columns label="Proprietario" name="owner_name"/> + <scroll_list.columns label="Creatore" name="creator_name"/> + <scroll_list.columns label="Data di creazione" name="creation_date"/> </scroll_list> - <button width="185" label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell'oggetto evidenziato"/> - <button width="165" left="205" label="Vedi il profilo del creatore..." label_selected="" name="button creator" tool_tip="Vedi il profilo del creatore originale dell'oggetto evidenziato"/> + <button label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell'oggetto evidenziato" width="185"/> + <button label="Vedi il profilo del creatore..." label_selected="" left="205" name="button creator" tool_tip="Vedi il profilo del creatore originale dell'oggetto evidenziato" width="165"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory.xml b/indra/newview/skins/default/xui/it/floater_inventory.xml index e3325463d6c..5049bb3e58c 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory.xml @@ -1,47 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory" title="INVENTARIO"> - <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Tutti gli elementi" name="All Items"/> - <inventory_panel label="Elementi recenti" name="Recent Items"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="File" name="File"> - <menu_item_call label="Apri" name="Open"/> - <menu_item_call label="Nuova finestra" name="New Window"/> - <menu_item_call label="Mostra Filtri" name="Show Filters"/> - <menu_item_call label="Azzera Filtri" name="Reset Current"/> - <menu_item_call label="Chiudi tutte le cartelle" name="Close All Folders"/> - <menu_item_call label="Svuota Cestino" name="Empty Trash"/> - </menu> - <menu label="Crea" name="Create"> - <menu_item_call label="Nuova Cartella" name="New Folder"/> - <menu_item_call label="Nuovo Script" name="New Script"/> - <menu_item_call label="Nuova Nota" name="New Note"/> - <menu_item_call label="Nuova Gesture" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nuova Camicia" name="New Shirt"/> - <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> - <menu_item_call label="Nuove Scarpe" name="New Shoes"/> - <menu_item_call label="Nuove Calze" name="New Socks"/> - <menu_item_call label="Nuova Giacca" name="New Jacket"/> - <menu_item_call label="Nuova Gonna" name="New Skirt"/> - <menu_item_call label="Nuovi Guanti" name="New Gloves"/> - <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> - <menu_item_call label="Nuove Mutande" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nuova Forma del Corpo" name="New Shape"/> - <menu_item_call label="Nuova Pelle" name="New Skin"/> - <menu_item_call label="Nuovi Capelli" name="New Hair"/> - <menu_item_call label="Nuovi Occhi" name="New Eyes"/> - </menu> - </menu> - <menu label="Ordinamento" name="Sort"> - <menu_item_check label="Per nome" name="By Name"/> - <menu_item_check label="Per data" name="By Date"/> - <menu_item_check label="Cartelle sempre per nome" name="Folders Always By Name"/> - <menu_item_check label="Cartelle di sistema sempre in cima" name="System Folders To Top"/> - </menu> - </menu_bar> + <floater.string name="Title"> + Inventario + </floater.string> + <floater.string name="TitleFetching"> + Inventario (Fetching [ITEM_COUNT] Items...) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + Inventario ([ITEM_COUNT] Items) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Raggiunto ?????????? + </floater.string> + <panel label="Pannello dell'Inventario" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml index 8860fd82076..aaf7b716566 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="PROPRIETÀ DELL'OGGETTO NELL'INVENTARIO"> +<floater name="item properties" title="CARATTERISTICHE DELL'ARTICOLO IN INVENTARIO"> + <floater.string name="unknown"> + (sconosciuto) + </floater.string> + <floater.string name="public"> + (pubblico) + </floater.string> + <floater.string name="you_can"> + Tu puoi: + </floater.string> + <floater.string name="owner_can"> + Il proprietario può: + </floater.string> + <floater.string name="acquiredDate"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </floater.string> <text name="LabelItemNameTitle"> Nome: </text> @@ -27,55 +42,32 @@ Wed May 24 12:50:46 2006 </text> <text name="OwnerLabel"> - Tu puoi: - </text> - <check_box label="Modificare" name="CheckOwnerModify"/> - <check_box left_delta="88" label="Copiare" name="CheckOwnerCopy"/> - <check_box label="Rivendere/Regalare" name="CheckOwnerTransfer"/> - <text name="BaseMaskDebug"> - B: - </text> - <text name="OwnerMaskDebug"> - O: + Tu: </text> - <text name="GroupMaskDebug"> - G: + <check_box label="Modifica" name="CheckOwnerModify"/> + <check_box label="Copiare" left_delta="88" name="CheckOwnerCopy"/> + <check_box label="Rivendi" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Chiunque: </text> - <text name="EveryoneMaskDebug"> - E: + <check_box label="Copia" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppo: </text> - <text name="NextMaskDebug"> - N: - </text> - <check_box label="Condividi con il gruppo" name="CheckShareWithGroup"/> - <check_box label="Permetti a tutti di copiare" name="CheckEveryoneCopy"/> + <check_box label="Condividi" name="CheckShareWithGroup"/> <text name="NextOwnerLabel" width="230"> - Il prossimo proprietario può: - </text> - <check_box label="Modificare" name="CheckNextOwnerModify"/> - <check_box left_delta="88" label="Copiare" name="CheckNextOwnerCopy"/> - <check_box label="Rivendere/Regalare" name="CheckNextOwnerTransfer"/> - <text name="SaleLabel"> - Metti l'oggetto: + Prossimo Proprietario: </text> + <check_box label="Modifica" name="CheckNextOwnerModify"/> + <check_box label="Copiare" left_delta="88" name="CheckNextOwnerCopy"/> + <check_box label="Rivendi" name="CheckNextOwnerTransfer"/> <check_box label="In vendita" name="CheckPurchase"/> - <radio_group name="RadioSaleType" left_delta="88" > - <radio_item name="radio" label="Originale" /> - <radio_item name="radio2" label="Copia" /> - </radio_group> - <text name="TextPrice"> - Prezzo: L$ + <combo_box name="combobox sale copy"> + <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Originale" name="Original"/> + </combo_box> + <spinner label="Prezzo:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ </text> - <string name="unknown"> - (sconosciuto) - </string> - <string name="public"> - (pubblico) - </string> - <string name="you_can"> - Tu puoi: - </string> - <string name="owner_can"> - Il proprietario può: - </string> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml index d74ff9bfb49..3eff0cfcebe 100644 --- a/indra/newview/skins/default/xui/it/floater_joystick.xml +++ b/indra/newview/skins/default/xui/it/floater_joystick.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="CONFIGURAZIONE JOYSTICK"> - <check_box name="enable_joystick" label="Abilita Joystick:"/> + <check_box label="Abilita Joystick:" name="enable_joystick"/> <text left="120" name="joystick_type" width="380"/> - <spinner label="Mapping: asse X" name="JoystickAxis1" label_width="140" width="180" left="12"/> - <spinner label="Mapping: asse Y" name="JoystickAxis2" label_width="134" width="174" left="205"/> - <spinner label="Mapping: asse Z" name="JoystickAxis0" label_width="94" width="134" left="390"/> - <spinner label="Mapping: direzione o Pitch" name="JoystickAxis4" label_width="140" width="180" left="12"/> - <spinner label="Mapping: altitudine o Yaw" name="JoystickAxis5" label_width="134" width="174" left="205"/> - <spinner label="Mapping del Roll" name="JoystickAxis3" label_width="94" width="134" left="390"/> - <spinner label="Mapping dello Zoom" name="JoystickAxis6" label_width="140" width="180" left="12"/> - <check_box label="Zoom diretto" name="ZoomDirect" left="205"/> + <spinner label="Mapping: asse X" label_width="140" left="12" name="JoystickAxis1" width="180"/> + <spinner label="Mapping: asse Y" label_width="134" left="205" name="JoystickAxis2" width="174"/> + <spinner label="Mapping: asse Z" label_width="94" left="390" name="JoystickAxis0" width="134"/> + <spinner label="Mapping: direzione o Pitch" label_width="140" left="12" name="JoystickAxis4" width="180"/> + <spinner label="Mapping: altitudine o Yaw" label_width="134" left="205" name="JoystickAxis5" width="174"/> + <spinner label="Mapping del Roll" label_width="94" left="390" name="JoystickAxis3" width="134"/> + <spinner label="Mapping dello Zoom" label_width="140" left="12" name="JoystickAxis6" width="180"/> + <check_box label="Zoom diretto" left="205" name="ZoomDirect"/> <check_box label="Cursore 3D" name="Cursor3D"/> <check_box label="Auto livellamento" name="AutoLeveling"/> - <text name="Control Modes:" left="3" width="113"> + <text left="3" name="Control Modes:" width="113"> Modalità di controllo: </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" left="192" label="Costruire"/> - <check_box name="JoystickFlycamEnabled" label="Camera dall'alto"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Costruire" left="192" name="JoystickBuildEnabled"/> + <check_box label="Camera dall'alto" name="JoystickFlycamEnabled"/> <text name="XScale"> Regolazione X </text> @@ -27,13 +27,13 @@ <text name="ZScale"> Regolazione Z </text> - <text name="PitchScale" left="3" width="112"> + <text left="3" name="PitchScale" width="112"> Regolazione: Pitch </text> - <text name="YawScale" left="3" width="112"> + <text left="3" name="YawScale" width="112"> Regolazione: Yaw </text> - <text name="RollScale" left="3" width="112"> + <text left="3" name="RollScale" width="112"> Regolazione: Roll </text> <text name="XDeadZone"> @@ -45,22 +45,22 @@ <text name="ZDeadZone"> Angolo morto Z </text> - <text name="PitchDeadZone" left="3" width="112"> + <text left="3" name="PitchDeadZone" width="112"> Angolo morto: Pitch </text> - <text name="YawDeadZone" left="3" width="112"> + <text left="3" name="YawDeadZone" width="112"> Angolo morto: Yaw </text> - <text name="RollDeadZone" left="3" width="112"> + <text left="3" name="RollDeadZone" width="112"> Angolo morto: Roll </text> <text name="Feathering"> Smussamento </text> - <text name="ZoomScale2" width="135" left="6"> + <text left="6" name="ZoomScale2" width="135"> Regolazione dello zoom </text> - <text name="ZoomDeadZone" width="135" left="6"> + <text left="6" name="ZoomDeadZone" width="135"> Angolo morto dello zoom </text> <button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/> diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml index 5ed748da69e..93bf11b069c 100644 --- a/indra/newview/skins/default/xui/it/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml @@ -1,155 +1,154 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="MISURATORE DEL LAG"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/> - <text left="30" name="client_lag_cause" right="-10" /> - <text left="30" name="network_lag_cause" right="-10" /> - <text left="30" name="server_lag_cause" right="-32" /> - <text name="client"> - Programma in locale: - </text> - <text name="client_text" left="145" font="SansSerifSmall"> - Normale - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/> - <text name="network"> - Network: - </text> - <text name="network_text" font="SansSerifSmall"> - Normale - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/> - <text name="server"> - Server: - </text> - <text name="server_text" font="SansSerifSmall"> - Normale - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> +<floater name="floater_lagmeter" title="LAG METER"> + <floater.string name="max_title_msg"> Misuratore del lag - </string> - <string name="max_width_px"> + </floater.string> + <floater.string name="max_width_px"> 360 - </string> - <string name="min_title_msg"> + </floater.string> + <floater.string name="min_title_msg"> Lag - </string> - <string name="min_width_px"> + </floater.string> + <floater.string name="min_width_px"> 90 - </string> - <string name="client_text_msg"> + </floater.string> + <floater.string name="client_text_msg"> Programma in locale - </string> - <string name="client_frame_rate_critical_fps"> + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> 10 - </string> - <string name="client_frame_rate_warning_fps"> + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> 15 - </string> - <string name="client_frame_time_window_bg_msg"> + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> Normale, finestra sullo sfondo - </string> - <string name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> Velocità dei frame al di sotto di [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> Velocità dei frame tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normale - </string> - <string name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> Possibile causa: Campo visivo impostato troppo alto - </string> - <string name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Possibile causa: Caricamento immagini - </string> - <string name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Possibile causa: Troppe immagini in memoria - </string> - <string name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> Possibile causa: Troppi oggetti complessi intorno - </string> - <string name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> Network - </string> - <string name="network_packet_loss_critical_pct"> + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> 10 - </string> - <string name="network_packet_loss_warning_pct"> + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> 5 - </string> - <string name="network_packet_loss_critical_msg"> + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti - </string> - <string name="network_packet_loss_warning_msg"> + </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 - </string> - <string name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normale - </string> - <string name="network_ping_critical_ms"> + </floater.string> + <floater.string name="network_ping_critical_ms"> 600 - </string> - <string name="network_ping_warning_ms"> + </floater.string> + <floater.string name="network_ping_warning_ms"> 300 - </string> - <string name="network_ping_critical_msg"> + </floater.string> + <floater.string name="network_ping_critical_msg"> Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms - </string> - <string name="network_packet_loss_cause_msg"> + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta. - </string> - <string name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Possibile cattiva connessione o l'apertura di un programma di scambio files. - </string> - <string name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> Server - </string> - <string name="server_frame_rate_critical_fps"> + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> 20 - </string> - <string name="server_frame_rate_warning_fps"> + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> 30 - </string> - <string name="server_single_process_max_time_ms"> + </floater.string> + <floater.string name="server_single_process_max_time_ms"> 20 - </string> - <string name="server_frame_time_critical_msg"> + </floater.string> + <floater.string name="server_frame_time_critical_msg"> Velocità dei frame al di sotto di [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> Velocità dei frame tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_normal_msg"> Normale - </string> - <string name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Possibile causa: troppi oggetti fisici - </string> - <string name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Possibile causa: troppi oggetti scriptati - </string> - <string name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Possibile causa: eccessivo traffico sulla rete - </string> - <string name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> Possibile causa: troppi residenti in movimento nella regione - </string> - <string name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> Possibile causa: troppe elaborazioni di immagini - </string> - <string name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Possibile causa: carico eccessivo del simulatore - </string> - <string name="smaller_label"> + </floater.string> + <floater.string name="smaller_label"> >> - </string> - <string name="bigger_label"> + </floater.string> + <floater.string name="bigger_label"> << - </string> + </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"> + Network + </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="Pulsante per minimizzare"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_land_holdings.xml b/indra/newview/skins/default/xui/it/floater_land_holdings.xml index 8a6689f6afc..9f2884448d0 100644 --- a/indra/newview/skins/default/xui/it/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/it/floater_land_holdings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="land holdings floater" title="IL MIO TERRENO"> +<floater name="land holdings floater" title="LA MIA TERRA"> <scroll_list name="parcel list"> - <column label="Nome del terreno" name="name"/> + <column label="Parcel" name="name"/> <column label="Regione" name="location"/> <column label="Tipo" name="type"/> <column label="Area" name="area"/> </scroll_list> <button label="Teletrasportati" label_selected="Teletrasportati" name="Teleport" tool_tip="Teletrasportati al centro di questo terreno."/> - <button width="130" label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="Show on Map" tool_tip="Mostra questo terreno sulla mappa."/> + <button label="Mappa" label_selected="Mappa" name="Show on Map" tool_tip="Mostra questa terra nella mappa del mondo" width="130"/> <text name="contrib_label"> Contributi ai tuoi gruppi: </text> diff --git a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml index bd50ad3df7e..d86b834c38d 100644 --- a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml @@ -1,12 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="SCRIPT: NUOVO SCRIPT"> - <button label="Ripristina" label_selected="Ripristina" name="Reset"/> - <check_box label="In esecuzione" name="running" left="4"/> - <check_box label="Mono" name="mono" left="106"/> - <string name="not_allowed"> - Non sei autorizzato a visualizzare questo script. - </string> - <string name="script_running"> + <floater.string name="not_allowed"> + Non puoi vedere o modificare questo script, perchè è impostato come "no copy". Necesiti tutti i permessi per vedere o modificare lo script dentro un oggetto. + </floater.string> + <floater.string name="script_running"> In esecuzione - </string> + </floater.string> + <floater.string name="Title"> + Script: [NAME] + </floater.string> + <button label="Ripristina" label_selected="Ripristina" name="Reset"/> + <check_box initial_value="true" label="In esecuzione" left="4" name="running"/> + <check_box initial_value="true" label="Mono" left="106" name="mono"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml index 4241a32ec1b..b699b280b63 100644 --- a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="LSL WIKI"> <check_box label="Segui il cursore" name="lock_check"/> - <combo_box label="Blocca" name="history_combo" left_delta="120" width="70"/> - <button label="Indietro" name="back_btn" left_delta="75"/> + <combo_box label="Blocca" left_delta="120" name="history_combo" width="70"/> + <button label="Indietro" left_delta="75" name="back_btn"/> <button label="Avanti" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_media_settings.xml b/indra/newview/skins/default/xui/it/floater_media_settings.xml new file mode 100644 index 00000000000..b99a11b8816 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="IMPOSTAZIONI MEDIA"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Cancella" label_selected="Cancella" name="Cancel"/> + <button label="Applica" label_selected="Applica" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml index d1809531574..ee3d642fefd 100644 --- a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="SIMULAZIONE DI PERDITÀ DI MEMORIA"> +<floater name="MemLeak" title="SIMULA UNA PERDITA DI MEMORIA"> <spinner label="Perdità di velocità (bytes per frame):" name="leak_speed"/> <spinner label="Memoria Persa Max (MB):" name="max_leak"/> <text name="total_leaked_label"> diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml index 5bd84d48c8f..edc5d9178da 100644 --- a/indra/newview/skins/default/xui/it/floater_moveview.xml +++ b/indra/newview/skins/default/xui/it/floater_moveview.xml @@ -1,13 +1,35 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="move_floater"> -<panel name="panel_actions"> - <button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra"/> - <button label="" label_selected="" name="move up btn" tool_tip="Salta o vola in alto"/> - <button label="" label_selected="" name="move down btn" tool_tip="Inchinati o vola in basso"/> - <joystick_slide name="slide left btn" tool_tip="Vai a sinistra"/> - <joystick_slide name="slide right btn" tool_tip="Vai a destra"/> - <joystick_turn name="forward btn" tool_tip="Vai avanti"/> - <joystick_turn name="backward btn" tool_tip="Vai indietro"/> -</panel> + <string name="walk_forward_tooltip"> + Cammina in avanti (premi Freccia Sù o W) + </string> + <string name="walk_back_tooltip"> + Cammina indietro (premi Freccia Giù o S) + </string> + <string name="run_forward_tooltip"> + Corri in avanti (premi Freccia Sù o W) + </string> + <string name="run_back_tooltip"> + Corri indietro (premi Freccia Giù o S) + </string> + <string name="fly_forward_tooltip"> + Vola in avanti (premi Freccia Sù o W) + </string> + <string name="fly_back_tooltip"> + Vola indietro (premi Freccia Giù o S) + </string> + <panel name="panel_actions"> + <button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi Freccia Sinistra o A)"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi Freccia Destra o D)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto, premi "E""/> + <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso, premi "C""/> + <joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi Freccia Sù o W)"/> + <joystick_turn name="backward btn" tool_tip="Cammina indietro (premi Freccia Giù o S)"/> + </panel> + <panel name="panel_modes"> + <button label="" name="mode_walk_btn" tool_tip="Modalità per camminare"/> + <button label="" name="mode_run_btn" tool_tip="Modalità per correre"/> + <button label="" name="mode_fly_btn" tool_tip="Modalità di volo"/> + <button label="Ferma il volo" name="stop_fly_btn" tool_tip="Ferma il volo"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_mute_object.xml b/indra/newview/skins/default/xui/it/floater_mute_object.xml index a72bfe96815..81cd46ec4d0 100644 --- a/indra/newview/skins/default/xui/it/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/it/floater_mute_object.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="IGNORA L'OGGETTO DAL NOME"> +<floater name="mute by name" title="BLOCCA OGGETTO PER NOME"> <text name="message"> - Ignora per nome ha effetti sull'oggetto in chat e IM, non -nei suoni. Devi scrivere esattamente il nome dell'oggetto. + Blocca un oggetto: </text> <line_editor name="object_name"> Nome dell'oggetto </line_editor> + <text name="note"> + * Blocca solo il testo dell'oggetto, non i suoni + </text> <button label="OK" name="OK"/> <button label="Annulla" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml new file mode 100644 index 00000000000..364b62fbdb3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT VICINA"/> diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml index 0c2029e18e4..d8144c7cd52 100644 --- a/indra/newview/skins/default/xui/it/floater_openobject.xml +++ b/indra/newview/skins/default/xui/it/floater_openobject.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="objectcontents" title="CONTENUTO DELL'OGGETTO"> +<floater name="objectcontents" title="CONTENUTO DEGLI OGGETTI"> <text name="object_name"> [DESC]: </text> diff --git a/indra/newview/skins/default/xui/it/floater_outgoing_call.xml b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml new file mode 100644 index 00000000000..b4536e31ccc --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="outgoing call" title="CHIAMANDO"> + <floater.string name="localchat"> + Voice Chat nei dintorni + </floater.string> + <floater.string name="anonymous"> + anonimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + stà chiamando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + ha aderito ad una chiamata Voice Chat con una chat in conferenza. + </floater.string> + <text name="connecting"> + Connettendo a [CALLEE_NAME] + </text> + <text name="calling"> + Chiamando [CALLEE_NAME] + </text> + <text name="noanswer"> + Nessuna risposta. Per favore riprova più tardi. + </text> + <text name="leaving"> + Abbandonando [CURRENT_CHAT]. + </text> + <button label="Cancella" label_selected="Cancella" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml index 4889f97ec7c..59004bbbd70 100644 --- a/indra/newview/skins/default/xui/it/floater_pay.xml +++ b/indra/newview/skins/default/xui/it/floater_pay.xml @@ -1,22 +1,26 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <button label="1 L$" label_selected="1 L$" name="fastpay 1" left="118" width="80" /> - <button label="5 L$" label_selected="5 L$" name="fastpay 5" left="210"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10" left="118" width="80" /> - <button label="20 L$" label_selected="20 L$" name="fastpay 20" left="210"/> - <button label="Paga" label_selected="Paga" name="pay btn" left="127"/> - <button label="Annulla" label_selected="Annulla" name="cancel btn" left="210"/> - <text name="payee_label" left="5" width="105"> - Paga residente: + <string name="payee_group"> + Paga Gruppo + </string> + <string name="payee_resident"> + Paga Residente + </string> + <text left="5" name="payee_label" width="105"> + Paga: </text> - <text name="payee_name" left="115"> + <icon name="icon_person" tool_tip="Persona"/> + <text left="115" name="payee_name"> [FIRST] [LAST] </text> - <text name="fastpay text" width="110" halign="left"> - Pagamento veloce: - </text> - <text name="amount text" left="4" > - Ammontare: + <button label="1 L$" label_selected="1 L$" left="118" name="fastpay 1" width="80"/> + <button label="5 L$" label_selected="5 L$" left="210" name="fastpay 5"/> + <button label="10 L$" label_selected="10 L$" left="118" name="fastpay 10" width="80"/> + <button label="20 L$" label_selected="20 L$" left="210" name="fastpay 20"/> + <text left="4" name="amount text"> + O, scegli importo: </text> <line_editor left="70" name="amount" width="49"/> + <button label="Paga" label_selected="Paga" left="127" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" left="210" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml index c41c0ba41eb..c51a2b7b317 100644 --- a/indra/newview/skins/default/xui/it/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/it/floater_pay_object.xml @@ -1,31 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <text name="payee_group" width="100" halign="left"> - Paga il gruppo: - </text> - <text name="payee_resident" width="120" halign="left"> - Paga il residente: - </text> - <text name="payee_name" left="120"> + <string halign="left" name="payee_group" width="100"> + Paga Gruppo + </string> + <string halign="left" name="payee_resident" width="120"> + Pags Residente + </string> + <icon name="icon_person" tool_tip="Persona"/> + <text left="120" name="payee_name"> [FIRST] [LAST] </text> - <text name="object_name_label" left="5" width="110" halign="left"> + <text halign="left" left="5" name="object_name_label" width="110"> Mediante l'oggetto: </text> - <text name="object_name_text" left="120" > + <icon name="icon_object" tool_tip="Oggetti"/> + <text left="120" name="object_name_text"> ... </text> - <text name="fastpay text" width="115" halign="left"> - Pagamento diretto: - </text> - <text name="amount text" left="5" halign="left"> - Ammontare: + <button label="1 L$" label_selected="1 L$" left="125" name="fastpay 1" width="70"/> + <button label="5 L$" label_selected="5 L$" left="200" name="fastpay 5" width="70"/> + <button label="10 L$" label_selected="10 L$" left="125" name="fastpay 10" width="70"/> + <button label="20 L$" label_selected="20 L$" left="200" name="fastpay 20" width="70"/> + <text halign="left" left="5" name="amount text"> + O, scegli importo: </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1" left="125" width="70"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5" left="200" width="70"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10" left="125" width="70"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20" left="200" width="70"/> + <line_editor left="74" name="amount" width="50"/> <button label="Paga" label_selected="Paga" name="pay btn"/> <button label="Cancella" label_selected="Cancella" name="cancel btn"/> - <line_editor left="74" name="amount" width="50" /> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml index 46de31455bb..67e40939513 100644 --- a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="PERMESSI DI BASE DI IMPORTAZIONE"> +<floater name="perm prefs" title="PERMESSI di UPLOAD in DEFAULT"> <panel label="Permessi" name="permissions"> <button label="?" label_selected="?" name="help"/> <check_box label="Condividi con il gruppo" name="share_with_group"/> diff --git a/indra/newview/skins/default/xui/it/floater_postcard.xml b/indra/newview/skins/default/xui/it/floater_postcard.xml index 5ea3b634d44..de246db8266 100644 --- a/indra/newview/skins/default/xui/it/floater_postcard.xml +++ b/indra/newview/skins/default/xui/it/floater_postcard.xml @@ -1,21 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="INVIA LA FOTOGRAFIA VIA EMAIL"> +<floater name="Postcard" title="ISTANTANEA IN EMAIL"> <text name="to_label" width="135"> Email del destinatario: </text> - <line_editor name="to_form" left="143" width="127" /> + <line_editor left="143" name="to_form" width="127"/> <text name="from_label"> La tua email: </text> - <line_editor name="from_form" left="143" width="127" /> + <line_editor left="143" name="from_form" width="127"/> <text name="name_label"> Il tuo nome: </text> - <line_editor name="name_form" left="143" width="127" /> + <line_editor left="143" name="name_form" width="127"/> <text name="subject_label"> Soggetto: </text> - <line_editor name="subject_form" left="143" width="127" /> + <line_editor left="143" name="subject_form" width="127"/> <line_editor label="Scrivi il soggetto qui." name="subject_form"/> <text name="msg_label"> Messaggio: @@ -29,12 +29,12 @@ <button label="Annulla" name="cancel_btn"/> <button label="Invia" name="send_btn"/> <string name="default_subject"> - Cartolina da [SECOND_LIFE] + Cartolina da [SECOND_LIFE]. </string> <string name="default_message"> Vieni a vedere! </string> <string name="upload_message"> - In spedizione... + Spedendo... </string> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml index 172449554d3..a76b9e3e27d 100644 --- a/indra/newview/skins/default/xui/it/floater_preferences.xml +++ b/indra/newview/skins/default/xui/it/floater_preferences.xml @@ -1,9 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="PREFERENZE" min_width="350" width="646"> +<floater min_width="350" name="Preferences" title="PREFERENZE" width="646"> <button label="OK" label_selected="OK" name="OK"/> <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <button label="Applica" label_selected="Applica" name="Apply"/> - <button label="Informazioni..." label_selected="Informazioni..." name="About..."/> - <button label="Aiuto" label_selected="Aiuto" name="Help"/> - <tab_container name="pref core" tab_width="146" width="646" /> + <tab_container name="pref core" tab_width="146" width="646"> + <panel label="Generale" name="general"/> + <panel label="Grafica" name="display"/> + <panel label="Privacy" name="im"/> + <panel label="Suono" name="audio"/> + <panel label="Chat" name="chat"/> + <panel label="Notifiche" name="msgs"/> + <panel label="Configurazione" name="input"/> + <panel label="Avanzato" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml index e9e0252613b..006198781ba 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_animation.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_anim"> + <floater.string name="Title"> + Animazione: [NAME] + </floater.string> <text name="desc txt"> Descrizione: </text> - <button left="20" width="131" label="Esegui inworld" label_selected="Ferma" name="Anim play btn" tool_tip="Esegui questa animazione così che altri possano vederla."/> - <button left="162" width="125" label="Esegui localmente" label_selected="Ferma" name="Anim audition btn" tool_tip="Esegui questa animazione così che solo tu possa vederla."/> + <button label="Esegui inworld" label_selected="Ferma" left="20" name="Anim play btn" tool_tip="Riproduci questa animazione così che gli altri possano vederla" width="131"/> + <button label="Esegui localmente" label_selected="Ferma" left="162" name="Anim audition btn" tool_tip="Riproduci questa animazione così che solo tu possa vederla" width="125"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_classified.xml b/indra/newview/skins/default/xui/it/floater_preview_classified.xml index 5819bd37a53..c617f81f7bb 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_classified.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMAZIONE RISERVATA"/> +<floater name="classified_preview" title="INFORMAZIONI RISERVATE"> + <floater.string name="Title"> + Riservato: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_event.xml b/indra/newview/skins/default/xui/it/floater_preview_event.xml index dca38c363f6..1e1653e7581 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_event.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMAZIONE SULL'EVENTO"/> +<floater name="event_preview" title="INFORMAZIONI SULL'EVENTO"> + <floater.string name="Title"> + Evento: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml index 60d3a7710ef..850f4c21acc 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml @@ -1,14 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> - <string name="stop_txt"> + <floater.string name="step_anim"> + Animazione da riprodurre: + </floater.string> + <floater.string name="step_sound"> + Suono da riprodurre: + </floater.string> + <floater.string name="step_chat"> + Scrivi in chat per dire: + </floater.string> + <floater.string name="step_wait"> + Attendi: + </floater.string> + <floater.string name="stop_txt"> Stop - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Anteprima - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- Nulla -- - </string> + </floater.string> + <floater.string name="Title"> + Gesture: [NAME] + </floater.string> <text name="desc_label"> Descrizione: </text> @@ -22,36 +37,29 @@ <text name="key_label"> Scorciatoia da tastiera: </text> - <combo_box label="Nessuno" name="modifier_combo" left="156" width="76"/> - <combo_box label="Nessuno" name="key_combo" width="76" left_delta="80"/> + <combo_box label="Nessuno" left="156" name="modifier_combo" width="76"/> + <combo_box label="Nessuno" left_delta="80" name="key_combo" width="76"/> <text name="library_label"> Libreria: </text> + <scroll_list name="library_list"/> + <button label="Aggiungi >>" name="add_btn"/> <text name="steps_label"> Fasi: </text> - <scroll_list name="library_list"> - Animation -Suono -Chat -Pausa - </scroll_list> - <button label="Aggiungi >>" name="add_btn"/> - <button label="Vai su" name="up_btn"/> - <button label="Vai giù" name="down_btn"/> + <button label="Sù" name="up_btn"/> + <button label="Giù" name="down_btn"/> <button label="Elimina" name="delete_btn"/> - <text name="help_label"> - Tutti i passi avvengono -simultaneamente, a meno che tu -non aggiunga pause. - </text> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Avvio" /> - <radio_item name="stop" label="Stop" /> + <radio_item label="Inizia" name="start"/> + <radio_item label="Stop" name="stop"/> </radio_group> - <check_box left="226" label="finché le animazioni sono eseguite" name="wait_anim_check"/> + <check_box label="finché le animazioni sono eseguite" left="226" name="wait_anim_check"/> <check_box label="tempo in secondi" name="wait_time_check"/> - <line_editor left_delta="114" name="wait_time_editor" /> + <line_editor left_delta="114" name="wait_time_editor"/> + <text name="help_label"> + Tutte le fasi avvengono simultaneamente, a meno che non aggiungi una fase attendi. + </text> <check_box label="Attiva" name="active_check" tool_tip="Le gesture attivate possono essere eseguite scrivendo in chat la parola chiave o premendo i tasti chiave. Le gesture generalmente si disattivano quando c'è un conflitto nei relativi tasti."/> <button label="Anteprima" name="preview_btn"/> <button label="Salva" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml new file mode 100644 index 00000000000..660b868cae4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="GESTURE SHORTCUT"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml new file mode 100644 index 00000000000..942d5ed1cee --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="TASTO RAPIDO PER GESTURE"> + <text name="trigger_label"> + Chat: + </text> + <text name="key_label"> + Tastiera: + </text> + <combo_box label="Nessuno" name="modifier_combo"/> + <combo_box label="Nessuno" name="key_combo"/> + <text name="replace_text" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave 'ciao' sostituendo con 'buongiorno' cambierà la chat da 'Io dico ciao' in 'Io dico buongiorno' non appena attiverete la gesture!"> + Sostituisci: + </text> + <line_editor name="replace_editor" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave 'ciao' sostituendo con 'buongiorno' cambierà la chat da 'Io dico ciao' in 'Io dico buongiorno' non appena attiverete la gesture"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml new file mode 100644 index 00000000000..7c1f55ddbac --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="TASTO RAPIDO GESTURE"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml index 81a51223b05..08f50872427 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml @@ -1,16 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="NOTA:"> - <button label="Salva" label_selected="Salva" name="Save"/> +<floater name="preview notecard" title="NOTE:"> + <floater.string name="no_object"> + Impossibile trovare l'oggetto che contiene questa nota. + </floater.string> + <floater.string name="not_allowed"> + Non hai i permessi per leggere questa nota. + </floater.string> + <floater.string name="Title"> + Notecard: [NAME] + </floater.string> + <floater.string label="Salva" label_selected="Salva" name="Save"> + Salva + </floater.string> <text name="desc txt"> Descrizione: </text> <text_editor name="Notecard Editor"> In caricamento... </text_editor> - <string name="no_object"> - Impossibile trovare l'oggetto che contiene questa nota. - </string> - <string name="not_allowed"> - Non ti è permesso vedere questa nota. - </string> + <button label="Salva" label_selected="Salva" name="Save"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_sound.xml b/indra/newview/skins/default/xui/it/floater_preview_sound.xml index 5fd015f7fef..182243561cf 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_sound.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_sound"> + <floater.string name="Title"> + Suono: [NAME] + </floater.string> <text name="desc txt"> Descrizione: </text> - <button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Avvia questo suono in modo che sia ascoltato solo da te."/> - <button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Avvia questo suono in modo che sia ascoltato da tutti."/> + <button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Riproduci questo suono in modo che gli altri possano sentirlo"/> + <button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Riproduci questo suono in modo che solo tu possa sentirlo"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml index e3232730e2e..dd24079ea3b 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_texture.xml @@ -1,9 +1,44 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> + <floater.string name="Title"> + Texture: [NAME] + </floater.string> + <floater.string name="Copy"> + Copia nell'Inventario + </floater.string> <text name="desc txt"> Descrizione: </text> <text name="dimensions"> - Dimensioni: [WIDTH] x [HEIGHT] + [WIDTH]px x [HEIGHT]px </text> + <combo_box name="combo_aspect_ratio" tool_tip="Anteprima del rapporto d'aspetto impostato"> + <combo_item name="Unconstrained"> + Libero + </combo_item> + <combo_item name="1:1" tool_tip="Immagine del Gruppo o Profilo nel Mondo Reale"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="[SECOND_LIFE] profilo"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Annunci ed elenco del Cerca, landmarks"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="Info sul terreno"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Preferiti nel Profilo"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="keep"/> + <button label="Cancella" name="discard"/> + <button label="Salva come:" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_region_info.xml b/indra/newview/skins/default/xui/it/floater_region_info.xml index a715cf1f06c..98808e4b55c 100644 --- a/indra/newview/skins/default/xui/it/floater_region_info.xml +++ b/indra/newview/skins/default/xui/it/floater_region_info.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="regioninfo" title="REGIONE/PROPRIETÀ"/> +<floater name="regioninfo" title="REGIONE/PROPRIETA'"/> diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml index 4b969354fed..a1e430b6b23 100644 --- a/indra/newview/skins/default/xui/it/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/it/floater_report_abuse.xml @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="DENUNCIA DI ABUSO"> - <check_box label="Includi una fotografia" name="screen_check"/> + <floater.string name="Screenshot"> + Fotografia + </floater.string> + <check_box label="Utilizza questa fotografia" name="screen_check"/> <text name="reporter_title"> Segnalato da: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Regione: @@ -20,11 +23,11 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Clicca sul pulsante e poi sull'oggetto: + Clicca sul pulsante, poi sull'oggetto offensivo: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Selezionatore di oggetti - Identifica un oggetto come argomento di questa segnalazione"/> <text name="object_name_label"> - Nome: + Oggetto: </text> <text name="object_name"> Consetetur Sadipscing @@ -33,54 +36,53 @@ Proprietario: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> <combo_box name="category_combo" tool_tip="Categoria -- scegli la categoria che descrive meglio questa segnalazione"> - <combo_box.item name="Select_category" label="Scegli la categoria"/> - <combo_box.item name="Age__Age_play" label="Età > Far finta di essere minore"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Età > Residente adulto nella Teen Second Life"/> - <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Età > Residente minorenne al di fuori della 'Second Life per Teenager'"/> - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto > sandbox da combattimento / area pericolosa"/> - <combo_box.item name="Assault__Safe_area" label="Assalto > Area sicura"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto > Test di armi in sandbox"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Commercio > Problema nella consegna di un prodotto o servizio"/> - <combo_box.item name="Disclosure__Real_world_information" label="Divulgazione > Informazioni del mondo reale"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Divulgazione > Monitoraggio remoto di chat"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Divulgazione > Informazione/chat/IMs di Second Life"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Disturbo della quiete > Uso sleale delle risorse di una regione"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Disturbo della quiete > Numero eccessivo di oggetti scriptati"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Disturbo della quiete > Oggetti messi a soqquadro"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Disturbo della quiete > Spam continuato"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Disturbo della quiete > Spam pubblicitario non richiesto"/> - <combo_box.item name="Fraud__L$" label="Truffa > L$"/> - <combo_box.item name="Fraud__Land" label="Truffa > Terreno"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Truffa > Multilivello o catena di Sant'Antonio"/> - <combo_box.item name="Fraud__US$" label="Truffa > Dollari US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Molestie > Territori adibiti a pubblicità / spam visivo"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Molestie > Diffamazione di individui o gruppi"/> - <combo_box.item name="Harassment__Impeding_movement" label="Molestie > Impedimento di movimenti"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Molestie > Molestie sessuali"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Molestie > Sollecitare/incitare altri a violare i Termini di Servizio"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Molestie > Abusi verbali"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecenza > Condotta o contenuti largamente offensivi"/> - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecenza > Nome di un avatar inappropriato"/> - <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecenza > Contenuto o condotta inappropriata in una regione PG"/> - <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecenza > Contenuto o condotta inappropriata in una regione Mature"/> - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violazione della proprietà intellettuale > Rimozione contenuti"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violazione della proprietà intellettuale > CopyBot o sblocco di permessi"/> - <combo_box.item name="Intolerance" label="Intolleranza"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno > Abuso delle risorse di una sandbox"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno > Invasione > Oggetti/textures"/> - <combo_box.item name="Land__Encroachment__Particles" label="Terreno > Invasione > Particelle"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno > Invasione > Alberi/piante"/> - <combo_box.item name="Wagering_gambling" label="Chiedere l'elemosina/gioco d'azzardo"/> - <combo_box.item name="Other" label="Altro"/> + <combo_box.item label="Scegli la categoria" name="Select_category"/> + <combo_box.item label="Età > Far finta di essere minore" name="Age__Age_play"/> + <combo_box.item label="Età > Residente adulto nella Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Età > Residente minorenne al di fuori della 'Second Life per Teenager'" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Assalto > sandbox da combattimento / area pericolosa" name="Assault__Combat_sandbox___unsafe_area"/> + <combo_box.item label="Assalto > Area sicura" name="Assault__Safe_area"/> + <combo_box.item label="Assalto > Test di armi in sandbox" name="Assault__Weapons_testing_sandbox"/> + <combo_box.item label="Commercio > Problema nella consegna di un prodotto o servizio" name="Commerce__Failure_to_deliver_product_or_service"/> + <combo_box.item label="Divulgazione > Informazioni del mondo reale" name="Disclosure__Real_world_information"/> + <combo_box.item label="Divulgazione > Monitoraggio remoto di chat" name="Disclosure__Remotely_monitoring chat"/> + <combo_box.item label="Divulgazione > Informazione/chat/IMs di Second Life" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="Disturbo della quiete > Uso sleale delle risorse di una regione" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> + <combo_box.item label="Disturbo della quiete > Numero eccessivo di oggetti scriptati" name="Disturbing_the_peace__Excessive_scripted_objects"/> + <combo_box.item label="Disturbo della quiete > Oggetti messi a soqquadro" name="Disturbing_the_peace__Object_littering"/> + <combo_box.item label="Disturbo della quiete > Spam continuato" name="Disturbing_the_peace__Repetitive_spam"/> + <combo_box.item label="Disturbo della quiete > Spam pubblicitario non richiesto" name="Disturbing_the_peace__Unwanted_advert_spam"/> + <combo_box.item label="Truffa > L$" name="Fraud__L$"/> + <combo_box.item label="Truffa > Terreno" name="Fraud__Land"/> + <combo_box.item label="Truffa > Multilivello o catena di Sant'Antonio" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="Truffa > Dollari US$" name="Fraud__US$"/> + <combo_box.item label="Molestie > Territori adibiti a pubblicità / spam visivo" name="Harassment__Advert_farms___visual_spam"/> + <combo_box.item label="Molestie > Diffamazione di individui o gruppi" name="Harassment__Defaming_individuals_or_groups"/> + <combo_box.item label="Molestie > Impedimento di movimenti" name="Harassment__Impeding_movement"/> + <combo_box.item label="Molestie > Molestie sessuali" name="Harassment__Sexual_harassment"/> + <combo_box.item label="Molestie > Sollecitare/incitare altri a violare i Termini di Servizio" name="Harassment__Solicting_inciting_others_to_violate_ToS"/> + <combo_box.item label="Molestie > Abusi verbali" name="Harassment__Verbal_abuse"/> + <combo_box.item label="Indecenza > Condotta o contenuti largamente offensivi" name="Indecency__Broadly_offensive_content_or_conduct"/> + <combo_box.item label="Indecenza > Nome di un avatar inappropriato" name="Indecency__Inappropriate_avatar_name"/> + <combo_box.item label="Indecenza > Contenuto o condotta inappropriata in una regione PG" name="Indecency__Mature_content_in_PG_region"/> + <combo_box.item label="Indecenza > Contenuto o condotta inappropriata in una regione Mature" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Violazione della proprietà intellettuale > Rimozione contenuti" name="Intellectual_property_infringement_Content_Removal"/> + <combo_box.item label="Violazione della proprietà intellettuale > CopyBot o sblocco di permessi" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> + <combo_box.item label="Intolleranza" name="Intolerance"/> + <combo_box.item label="Terreno > Abuso delle risorse di una sandbox" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="Terreno > Invasione > Oggetti/textures" name="Land__Encroachment__Objects_textures"/> + <combo_box.item label="Terreno > Invasione > Particelle" name="Land__Encroachment__Particles"/> + <combo_box.item label="Terreno > Invasione > Alberi/piante" name="Land__Encroachment__Trees_plants"/> + <combo_box.item label="Chiedere l'elemosina/gioco d'azzardo" name="Wagering_gambling"/> + <combo_box.item label="Altro" name="Other"/> </combo_box> <text name="abuser_name_title"> Nome di chi ha commesso l'abuso: </text> <button label="Scegli un residente" label_selected="" name="select_abuser" tool_tip="Scegli il nome di chi ha commesso l'abuso dalla lista"/> - <check_box label="Non conosco il nome di chi ha fatto l'abuso" name="omit_abuser_name" tool_tip="Metti qui la spunta se non sei in grado di fornire il nome di chi ha fatto l'abuso"/> <text name="abuser_name_title2"> Luogo dell'abuso: </text> @@ -91,13 +93,11 @@ Dettagli: </text> <text name="bug_aviso"> - Ti preghiamo di essere circostanziato riguardo data, -luogo, natura dell'abuso, testo rilevante di chat/IM, e, -se possibile, indica l'oggetto. + Specifica data, luogo, natura dell'abuso, testo rilevante di chat/IM, e se possibile indica l'oggetto. </text> <text name="incomplete_title"> - Nota: Segnalazioni incomplete non saranno esaminate. + * Nota: segnalazioni incomplete non saranno esaminate </text> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> <button label="Segnala abuso" label_selected="Segnala abuso" name="send_btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml new file mode 100644 index 00000000000..e70a30fa24a --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/> diff --git a/indra/newview/skins/default/xui/it/floater_script_preview.xml b/indra/newview/skins/default/xui/it/floater_script_preview.xml index 934ffd53958..94282973977 100644 --- a/indra/newview/skins/default/xui/it/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_script_preview.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview lsl text" title="SCRIPT: SCRIPT DI ROTAZIONE"> + <floater.string name="Title"> + Script: [NAME] + </floater.string> <text name="desc txt"> Descrizione: </text> diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml index 37eb3e4bbfb..728fbe8c8d9 100644 --- a/indra/newview/skins/default/xui/it/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/it/floater_script_queue.xml @@ -1,4 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="PROGRESSIONE RESET"> +<floater name="queue" title="RESETTA IL PROGRESSO"> + <floater.string name="Starting"> + Conteggio [START] degli [COUNT] articoli. + </floater.string> + <floater.string name="Done"> + Eseguito. + </floater.string> + <floater.string name="Resetting"> + Resettando + </floater.string> + <floater.string name="Running"> + In esecuzione + </floater.string> + <floater.string name="NotRunning"> + Non in esecuzione + </floater.string> <button label="Chiudi" label_selected="Chiudi" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_search.xml b/indra/newview/skins/default/xui/it/floater_script_search.xml index e5f923f7a3f..3d0b02877e8 100644 --- a/indra/newview/skins/default/xui/it/floater_script_search.xml +++ b/indra/newview/skins/default/xui/it/floater_script_search.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script search" title="CERCA SCRIPT" width="320"> - <check_box label="Senza distinzione tra maiuscole e minuscole" name="case_text" left="65"/> + <check_box label="Senza distinzione tra maiuscole e minuscole" left="65" name="case_text"/> <button label="Cerca" label_selected="Cerca" name="search_btn" width="85"/> - <button label="Sostituisci" label_selected="Sostituisci" name="replace_btn" left="100" width="85"/> - <button label="Sostituisci tutto" label_selected="Sostituisci tutto" name="replace_all_btn" left="190" width="122"/> + <button label="Sostituisci" label_selected="Sostituisci" left="100" name="replace_btn" width="85"/> + <button label="Sostituisci tutto" label_selected="Sostituisci tutto" left="190" name="replace_all_btn" width="122"/> <text name="txt" width="60"> Cerca </text> <text name="txt2" width="60"> Sostituisci </text> - <line_editor left="65" name="search_text" width="240" /> - <line_editor left="65" name="replace_text" width="240" /> + <line_editor left="65" name="search_text" width="240"/> + <line_editor left="65" name="replace_text" width="240"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_search.xml b/indra/newview/skins/default/xui/it/floater_search.xml new file mode 100644 index 00000000000..6afdd2437ee --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="TROVA"> + <floater.string name="loading_text"> + Caricando... + </floater.string> + <floater.string name="done_text"> + Eseguito + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Redo search to reflect current God level + </text> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_select_key.xml b/indra/newview/skins/default/xui/it/floater_select_key.xml index 04a77264972..181b7d52920 100644 --- a/indra/newview/skins/default/xui/it/floater_select_key.xml +++ b/indra/newview/skins/default/xui/it/floater_select_key.xml @@ -2,6 +2,6 @@ <floater name="modal container" title=""> <button label="Annulla" label_selected="Annulla" name="Cancel"/> <text name="Save item as:"> - Premi un tasto per selezionare + clicca un tasto per impostare la modalità PARLA con il tuo pulsante. </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_sell_land.xml b/indra/newview/skins/default/xui/it/floater_sell_land.xml index 91712a706bb..2a4fa05b54b 100644 --- a/indra/newview/skins/default/xui/it/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/it/floater_sell_land.xml @@ -1,65 +1,65 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sell land" title="VENDI TERRA"> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <text name="info_parcel_label"> - Terreno: - </text> - <text name="info_parcel" left="82"> - NOME APPEZZAMENTO - </text> - <text name="info_size_label"> - Dimensioni: - </text> - <text name="info_size" left="82"> - [AREA] m² - </text> - <text height="28" name="info_action" bottom_delta="-57"> - Per vendere questo -terreno: - </text> - <icon bottom_delta="-86" name="step_price" /> - <text name="price_label"> - Imposta prezzo: - </text> - <text name="price_text"> - Scegli un prezzo appropriato per questa terra. - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - ([PER_METER] L$ per metro quadro) - </text> - <text name="sell_to_label"> - Vendi la terra a: - </text> - <text name="sell_to_text"> - Scegli se vendere a tutti o ad un compratore in particolare. - </text> - <combo_box name="sell_to"> - <combo_box.item name="--selectone--" label="selezionane uno --"/> - <combo_box.item name="Anyone" label="Chiunque"/> - <combo_box.item name="Specificuser:" label="Utente specifico:"/> - </combo_box> - <button label="Seleziona..." name="sell_to_select_agent"/> - <text name="sell_objects_label"> - Vendi gli oggetti con la terra? - </text> - <text name="sell_objects_text"> - Gli oggetti trasferibili del proprietario della terra sul terreno -cambieranno proprietario. - </text> - <radio_group name="sell_objects" bottom_delta="-58" > - <radio_item name="no" label="No, voglio mantenere la proprietà degli oggetti" /> - <radio_item name="yes" label="Si, vendi gli oggetti con la terra" /> - </radio_group> - <button label="Mostra oggetti" name="show_objects"/> - <text name="nag_message_label"> - RICORDA: tutte le vendite sono definitive. - </text> - <button label="Metti la terra in vendita" name="sell_btn"/> - <button label="Annulla" name="cancel_btn"/> - </panel> - </scroll_container> +<floater name="sell land" title="VENDI LA TERRA"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="info_parcel_label"> + Parcel: + </text> + <text left="82" name="info_parcel"> + NOME DEL PARCEL + </text> + <text name="info_size_label"> + Misura: + </text> + <text left="82" name="info_size"> + [AREA] m² + </text> + <text bottom_delta="-57" height="28" name="info_action"> + Vendere questo parcel: + </text> + <text name="price_label"> + 1. Imposta un prezzo: + </text> + <text name="price_text"> + Scegli un prezzo adeguato. + </text> + <text name="price_ld"> + L$ + </text> + <line_editor name="price"> + 0 + </line_editor> + <text name="price_per_m"> + (L$[PER_METER] per m²) + </text> + <text name="sell_to_label"> + 2. Vendi la terra a: + </text> + <text name="sell_to_text"> + Scegli se vendere a chiunque o ad un specifico compratore. + </text> + <combo_box name="sell_to"> + <combo_box.item label="- Seleziona uno -" name="--selectone--"/> + <combo_box.item label="Chiunque" name="Anyone"/> + <combo_box.item label="Persona Specifica:" name="Specificuser:"/> + </combo_box> + <button label="Seleziona" name="sell_to_select_agent"/> + <text name="sell_objects_label"> + 3. Vendi gli oggetti con la terra? + </text> + <text name="sell_objects_text"> + Gli oggetti trasferibili del proprietaio della Terra cambieranno proprietà . + </text> + <radio_group bottom_delta="-58" name="sell_objects"> + <radio_item label="No, mantieni la proprietà sugli oggetti" name="no"/> + <radio_item label="Si, vendi gli oggetti con la terra" name="yes"/> + </radio_group> + <button label="Mostra Oggetti" name="show_objects"/> + <text name="nag_message_label"> + RICORDA: Tutte le vendite sono definitive. + </text> + <button label="Imposta Terra in Vendita" name="sell_btn"/> + <button label="Cancella" name="cancel_btn"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml index aec3c8aa9d4..385a7ed6e91 100644 --- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="settings_debug" title="CONFIGURAZIONI PER IL DEBUG"> +<floater name="settings_debug" title="DEBUG SETTINGS"> <combo_box name="boolean_combo"> - <combo_box.item name="TRUE" label="VERO"/> - <combo_box.item name="FALSE" label="FALSO"/> + <combo_box.item label="VERO" name="TRUE"/> + <combo_box.item label="FALSO" name="FALSE"/> </combo_box> - <color_swatch label="Colore" name="color_swatch"/> + <color_swatch label="Colore" name="val_color_swatch"/> <spinner label="x" name="val_spinner_1"/> <spinner label="x" name="val_spinner_2"/> <spinner label="x" name="val_spinner_3"/> diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml index e226ce6ffe4..668c3c8c9e2 100644 --- a/indra/newview/skins/default/xui/it/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="ANTEPRIMA DELLA FOTOGRAFIA" width="247"> +<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA" width="247"> <text name="type_label"> Destinazione della fotografia </text> <radio_group label="Tipo di fotografia" name="snapshot_type_radio" width="228"> - <radio_item name="postcard" label="Invia via email" /> - <radio_item name="texture" label="Salva nel tuo inventario ([AMOUNT] L$)" /> - <radio_item name="local" label="Salva sul tuo pc" /> + <radio_item label="Invia via email" name="postcard"/> + <radio_item label="Salva nel tuo inventario ([AMOUNT] L$)" name="texture"/> + <radio_item label="Salva sul tuo pc" name="local"/> </radio_group> <text name="file_size_label"> Grandezza del file: [SIZE] KB @@ -14,13 +14,13 @@ <button label="Aggiorna la fotografia" name="new_snapshot_btn"/> <button label="Invia" name="send_btn"/> <button label="Salva ([AMOUNT] L$)" name="upload_btn"/> - <flyout_button label="Salva" name="save_btn" tool_tip="Salva l'immagine come file" > - <flyout_button_item name="save_item" label="Salva"/> - <flyout_button_item name="saveas_item" label="Salva come..."/> + <flyout_button label="Salva" name="save_btn" tool_tip="Salva l'immagine come file"> + <flyout_button_item label="Salva" name="save_item"/> + <flyout_button_item label="Salva come..." name="saveas_item"/> </flyout_button> <button label="Annulla" name="discard_btn"/> - <button label="Espandi >>" name="more_btn" tool_tip="Opzioni avanzate"/> - <button label="<< Diminuisci" name="less_btn" tool_tip="Opzioni avanzate"/> + <button label="Espandi >>" name="more_btn" tool_tip="Opzioni Avanzate"/> + <button label="<< Diminuisci" name="less_btn" tool_tip="Opzioni Avanzate"/> <text name="type_label2"> Grandezza </text> @@ -28,50 +28,51 @@ Formato </text> <combo_box label="Risoluzione" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="Custom" label="Personalizzata"/> + <combo_box.item label="Finestra corrente" 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="Personalizzata" name="Custom"/> </combo_box> <combo_box label="Risoluzione" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="Small(128x128)" label="Piccola (128x128)"/> - <combo_box.item name="Medium(256x256)" label="Media (256x256)"/> - <combo_box.item name="Large(512x512)" label="Larga (512x512)"/> - <combo_box.item name="Custom" label="Personalizzata"/> + <combo_box.item label="Finestra corrente" name="CurrentWindow"/> + <combo_box.item label="Piccola (128x128)" name="Small(128x128)"/> + <combo_box.item label="Media (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Larga (512x512)" name="Large(512x512)"/> + <combo_box.item label="Personalizzata" name="Custom"/> </combo_box> <combo_box label="Risoluzione" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="320x240" label="320x240"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="1280x1024" label="1280x1024"/> - <combo_box.item name="1600x1200" label="1600x1200"/> - <combo_box.item name="Custom" label="Personalizzata"/> + <combo_box.item label="Finestra corrente" name="CurrentWindow"/> + <combo_box.item label="320x240" name="320x240"/> + <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="1280x1024" name="1280x1024"/> + <combo_box.item label="1600x1200" name="1600x1200"/> + <combo_box.item label="Personalizzata" name="Custom"/> </combo_box> <combo_box label="Formato" name="local_format_combo"> - <combo_box.item name="PNG" label="PNG"/> - <combo_box.item name="JPEG" label="JPEG"/> - <combo_box.item name="BMP" label="BMP"/> + <combo_box.item label="PNG" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP" name="BMP"/> </combo_box> - <spinner label="Larghezza" name="snapshot_width" label_width="58" width="116"/> - <spinner label="Altezza" name="snapshot_height" label_width="41" width="101" left="130"/> + <spinner label="Larghezza" label_width="58" name="snapshot_width" width="116"/> + <spinner label="Altezza" label_width="41" left="130" name="snapshot_height" width="101"/> <check_box label="Mantieni le proporzioni" name="keep_aspect_check"/> <slider label="Qualità d'immagine" name="image_quality_slider"/> <text name="layer_type_label" width="55"> Fotografa: </text> - <combo_box label="Layer dell'immagine" name="layer_types" left="68" width="165"> - <combo_box.item name="Colors" label="Colori"/> - <combo_box.item name="Depth" label="Profondità "/> - <combo_box.item name="ObjectMattes" label="Colori primari degli oggetti"/> + <combo_box label="Layer dell'immagine" left="68" name="layer_types" width="165"> + <combo_box.item label="Colori" name="Colors"/> + <combo_box.item label="Profondità " name="Depth"/> + <combo_box.item label="Colori primari degli oggetti" name="ObjectMattes"/> </combo_box> <check_box label="Mostra l'interfaccia nella fotografia" name="ui_check"/> <check_box bottom_delta="-17" label="Mostra i dispositivi indossati nella foto" name="hud_check"/> <check_box bottom_delta="-17" label="Mantieni aperto dopo aver salvato" name="keep_open_check"/> - <check_box bottom_delta="-17" label="Blocca l'anteprima (Anteprima a schermo intero)" name="freeze_frame_check"/> + <check_box bottom_delta="-17" label="Blocca l'anteprima +(Anteprima a schermo intero)" name="freeze_frame_check"/> <check_box bottom_delta="-29" label="Auto-Aggiorna" name="auto_snapshot_check"/> <string name="unknown"> sconosciuto diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml new file mode 100644 index 00000000000..7c8e6ba1a18 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_stats.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Statistics" title="STATISTICHE"> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Base" name="basic"> + <stat_bar label="FPS" name="fps"/> + <stat_bar label="Larghezza Banda" name="bandwidth"/> + <stat_bar label="Perdita Pacchetti" name="packet_loss"/> + <stat_bar label="Tempo Ping Sim" name="ping"/> + </stat_view> + <stat_view label="Avanzato" name="advanced"> + <stat_view label="Render" name="render"> + <stat_bar label="KTris Disegnate" name="ktrisframe"/> + <stat_bar label="KTris Disegnate" name="ktrissec"/> + <stat_bar label="Totale Oggetti" name="objs"/> + <stat_bar label="Nuovi Oggetti" name="newobjs"/> + </stat_view> + <stat_view label="Texture" name="texture"> + <stat_bar label="Conteggio" name="numimagesstat"/> + <stat_bar label="Conteggio Grezzo" name="numrawimagesstat"/> + <stat_bar label="Memoria GL" name="gltexmemstat"/> + <stat_bar label="Memoria Formattata" name="formattedmemstat"/> + <stat_bar label="Memoria Complessiva" name="rawmemstat"/> + <stat_bar label="Memoria Impegnata" name="glboundmemstat"/> + </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="Operazioni pendenti VFS" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulatore" name="sim"> + <stat_bar label="Dilatazione temporale" name="simtimedilation"/> + <stat_bar label="FPS Sim" name="simfps"/> + <stat_bar label="FPS Motore Fisico" name="simphysicsfps"/> + <stat_view label="Dettagli Motore Fisico" name="physicsdetail"> + <stat_bar label="Oggetti Pinzati" name="physicspinnedtasks"/> + <stat_bar label="Oggetti a basso LOD" name="physicslodtasks"/> + <stat_bar label="Memoria Allocata" name="physicsmemoryallocated"/> + <stat_bar label="Agenti Aggiornamenti al Sec" name="simagentups"/> + <stat_bar label="Agenti Principali" name="simmainagents"/> + <stat_bar label="Agenti Figli" name="simchildagents"/> + <stat_bar label="Oggetti" name="simobjects"/> + <stat_bar label="Oggetti Attivi" name="simactiveobjects"/> + <stat_bar label="Script Attivi" name="simactivescripts"/> + <stat_bar label="Eventi Script" name="simscripteps"/> + <stat_bar label="Pacchetti In Ingresso" name="siminpps"/> + <stat_bar label="Pacchetti In Uscita" name="simoutpps"/> + <stat_bar label="Download Pendenti" name="simpendingdownloads"/> + <stat_bar label="Upload Pendenti" name="simpendinguploads"/> + <stat_bar label="Numero totale byte non risposti" name="simtotalunackedbytes"/> + </stat_view> + <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 Agenti" name="simagentmsec"/> + <stat_bar label="Tempo Immagini" name="simimagesmsec"/> + <stat_bar label="Tempo Script" name="simscriptmsec"/> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sys_well.xml b/indra/newview/skins/default/xui/it/floater_sys_well.xml new file mode 100644 index 00000000000..057d3657d04 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sys_well_window" title="NOTIFICHE"> + <string name="title_im_well_window"> + SESSIONE IM + </string> + <string name="title_notification_well_window"> + NOTIFICHE + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml index de5c32574f4..08f5564c7ba 100644 --- a/indra/newview/skins/default/xui/it/floater_telehub.xml +++ b/indra/newview/skins/default/xui/it/floater_telehub.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="telehub" title="TELEHUB" min_height="310" height="310" width="286"> +<floater height="310" min_height="310" name="telehub" title="TELEHUB" width="286"> <text name="status_text_connected"> Telehub connesso all'oggetto [OBJECT] </text> @@ -17,16 +17,13 @@ <text name="spawn_points_text" width="265"> Rigenera i punti (posizioni, non oggetti): </text> - <scroll_list name="spawn_points_list" width="265" /> - <button width="165" label="Aggiungi punti rigenerazione" name="add_spawn_point_btn"/> - <button width="105" left="175" label="Rimuovi punti" name="remove_spawn_point_btn"/> + <scroll_list name="spawn_points_list" width="265"/> + <button label="Aggiungi punti rigenerazione" name="add_spawn_point_btn" width="165"/> + <button label="Rimuovi punti" left="175" name="remove_spawn_point_btn" width="105"/> <text name="spawn_point_help"> - Seleziona un oggetto e clicca su aggiungi per -specificarne la posizione. -Potrai quindi muovere o rimuovere l'oggetto. -Le posizioni sono relative al centro del telehub. - -Seleziona un elemento per vederne la posizione -globale. + Seleziona un oggetto e click "Aggiungi Spawn" per specificare la posizione. +Ora puoi spostare o cancellare l'oggetto. +Le Posizioni sono relative al centro del telehub. +Seleziona un oggetto nella lista per evidenziarlo nel mondo. </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml index 836f85b48c4..e57c37073ad 100644 --- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml @@ -1,22 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="PREFERITI: IMMAGINE"> +<floater name="texture picker" title="Foto: TEXTURE"> <string name="choose_picture"> Clicca per scegliere l'immagine </string> <text name="Multiple"> - Molteplice + Textures multiple </text> <text name="unknown"> - Dimensioni: [DIMENSIONS] + Misura: [Dimensions] </text> <button label="Default" label_selected="Default" name="Default"/> <button label="Niente" label_selected="Niente" name="None"/> <button label="Vuoto" label_selected="Vuoto" name="Blank"/> - <check_box label="Visualizza Cartelle" name="show_folders_check"/> - <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> - <check_box label="Applica Subito" name="apply_immediate_check"/> + <check_box label="Mostra cartelle" name="show_folders_check"/> + <search_editor label="Filtro Textures" name="inventory search editor"/> + <check_box label="Applica ora" name="apply_immediate_check"/> <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <button label="Seleziona" label_selected="Seleziona" name="Select"/> + <button label="Ok" label_selected="Ok" name="Select"/> <string name="pick title"> Scegli: </string> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index 8e6f27e162f..dda957025b6 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -1,45 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title="" short_title="COSTRUISCI" width="288"> +<floater name="toolbox floater" short_title="STRUMENTI/ATTREZZI PER COSTRUIRE" title="" width="288"> + <floater.string name="status_rotate"> + Sposta le fasce colorate per ruotare l'oggetto + </floater.string> + <floater.string name="status_scale"> + Clicca e trascina per ridimensionare il lato selezionato + </floater.string> + <floater.string name="status_move"> + Trascina per spostare, maiuscolo+trascina per copiare + </floater.string> + <floater.string name="status_modifyland"> + Clicca e tieni premuto per modificare il terreno + </floater.string> + <floater.string name="status_camera"> + Clicca e trascina per spostare la camera + </floater.string> + <floater.string name="status_grab"> + Trascina per spostare, Ctrl per sollevare, Ctrl+Shift per ruotare + </floater.string> + <floater.string name="status_place"> + Clicca inworld per costruire + </floater.string> + <floater.string name="status_selectland"> + Clicca e trascina per selezionare il terreno + </floater.string> + <floater.string name="grid_screen_text"> + Schermo + </floater.string> + <floater.string name="grid_local_text"> + Locale + </floater.string> + <floater.string name="grid_world_text"> + Globale + </floater.string> + <floater.string name="grid_reference_text"> + Riferimento + </floater.string> + <floater.string name="grid_attachment_text"> + Accessorio + </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Focus"/> <button label="" label_selected="" name="button move" tool_tip="Muoviti"/> <button label="" label_selected="" name="button edit" tool_tip="Modifica"/> <button label="" label_selected="" name="button create" tool_tip="Crea"/> <button label="" label_selected="" name="button land" tool_tip="Terra"/> + <text name="text status" width="280"> + Trascina per muovere, trascina+maiuscolo per copiare + </text> <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Guarda ruotando (Ctrl)" name="radio orbit"/> - <radio_item label="Guarda panoramicamente (Ctrl-Shift)" name="radio pan"/> + <radio_item label="Panoramica (Ctrl+Shift)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Muovi" name="radio move"/> <radio_item label="Alza (Ctrl)" name="radio lift"/> - <radio_item label="Gira intorno (Ctrl-Shift)" name="radio spin"/> + <radio_item label="Ruota (Ctrl+Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> - <radio_item label="Posizione" name="radio position"/> + <radio_item label="Sposta" name="radio position"/> <radio_item label="Ruota (Ctrl)" name="radio rotate"/> - <radio_item label="Ridimensiona (Ctrl-Shift)" name="radio stretch"/> - <radio_item label="Seleziona Texture" name="radio select face"/> + <radio_item label="Estendi/Stira???!!!! (Ctrl+Shift)" name="radio stretch"/> + <radio_item label="Seleziona Faccia multimediale" name="radio select face"/> </radio_group> - <check_box label="Modifica parti unite" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Modalità : + <check_box label="Modifica parti collegate" name="checkbox edit linked parts"/> + <text name="RenderingCost" tool_tip="Mostra il rendering cost calcolato per questo oggetto"> + þ: [COUNT] </text> - <combo_box name="combobox grid mode" left_delta="48"> - <combo_box.item name="World" label="Globale" - /> - <combo_box.item name="Local" label="Locale" - /> - <combo_box.item name="Reference" label="Riferito a" - /> - </combo_box> <check_box label="Ridimens. simmetricamente" name="checkbox uniform"/> - <check_box label="Ridimensiona le texture" name="checkbox stretch textures"/> - <check_box label="Usa righello" name="checkbox snap to grid"/> - <button label="Opzioni..." label_selected="Opzioni..." name="Options..."/> - <text name="text status" width="280"> - Trascina per muovere, trascina+maiuscolo per copiare - </text> + <check_box initial_value="true" label="Ridimensiona le texture" name="checkbox stretch textures"/> + <check_box initial_value="true" label="Posiziona nella rete???!!!" name="checkbox snap to grid"/> + <combo_box left_delta="48" name="combobox grid mode" tool_tip="Scegli il tipo di righello per posizionare l'oggetto"> + <combo_box.item label="Rete del Mondo" name="World"/> + <combo_box.item label="Rete locale" name="Local"/> + <combo_box.item label="Riferimento della rete???!!!!" name="Reference"/> + </combo_box> + <button label="Opzioni..." label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni delle rete"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> @@ -55,10 +91,10 @@ <button label="" label_selected="" name="ToolRing" tool_tip="Anello"/> <button label="" label_selected="" name="ToolTree" tool_tip="Albero"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Erba"/> - <check_box label="Mantieni selezionato" name="checkbox sticky"/> - <check_box label="Copia la selezione" name="checkbox copy selection"/> - <check_box label="Centra" name="checkbox copy centers"/> - <check_box label="Ruota" name="checkbox copy rotates"/> + <check_box label="Mantieni lo strumento/attrezzo selezionato" name="checkbox sticky"/> + <check_box label="Seleziona la Copia" name="checkbox copy selection"/> + <check_box initial_value="true" label="Centra la Copia" name="checkbox copy centers"/> + <check_box label="Ruotare la Copia" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> <radio_item label="Seleziona il terreno" name="radio select land"/> <radio_item label="Appiattisci" name="radio flatten"/> @@ -68,25 +104,61 @@ <radio_item label="Ondula" name="radio noise"/> <radio_item label="Ripristina" name="radio revert"/> </radio_group> - <button label="Applica" label_selected="Applica" name="button apply to selection" tool_tip="Modifica il terreno selezionato" left="146"/> <text name="Bulldozer:"> Bulldozer: </text> <text name="Dozer Size:"> Grandezza </text> - <volume_slider left="184" name="slider brush size" width="74" /> + <slider_bar initial_value="2.0" left="184" name="slider brush size" width="74"/> <text name="Strength:"> Potenza </text> - <text name="obj_count" left="134"> - Oggetti selezionati: [COUNT] + <button label="Applica" label_selected="Applica" left="146" name="button apply to selection" tool_tip="Modifica la terra selezionata"/> + <text left="134" name="obj_count"> + Oggetti: [COUNT] </text> - <text name="prim_count" left="134"> - primitivi: [COUNT] + <text left="134" name="prim_count"> + Prims: [COUNT] </text> <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30" width="288"> <panel label="Generale" name="General"> + <panel.string name="text deed continued"> + Intesta + </panel.string> + <panel.string name="text deed"> + Cedi al gruppo + </panel.string> + <panel.string name="text modify info 1"> + Puoi modificare questo oggetto + </panel.string> + <panel.string name="text modify info 2"> + Puoi modificare questi oggetti + </panel.string> + <panel.string name="text modify info 3"> + Non puoi modificare questo oggetto + </panel.string> + <panel.string name="text modify info 4"> + Non puoi modificare questi oggetti + </panel.string> + <panel.string name="text modify warning"> + Devi selezionare tutto l'oggetto per impostare i permessi + </panel.string> + <panel.string name="Cost Default"> + Prezzo: L$ + </panel.string> + <panel.string name="Cost Total"> + Prezzo Totale: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Prezzo per Unità : L$ + </panel.string> + <panel.string name="Cost Mixed"> + Prezzo misto + </panel.string> + <panel.string name="Sale Mixed"> + Vendita mista + </panel.string> <text name="Name:"> Nome: </text> @@ -99,135 +171,77 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Profilo..." label_selected="Profilo..." name="button creator profile"/> <text name="Owner:"> Proprietario: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Profilo..." label_selected="Profilo..." name="button owner profile"/> <text name="Group:"> Gruppo: </text> - <text name="Group Name Proxy"> - The Lindens - </text> - <button label="Imposta..." label_selected="Imposta..." name="button set group"/> - <text name="Permissions:"> - Permessi: - </text> - - <check_box label="Condividi con il gruppo" name="checkbox share with group" tool_tip="Permetti a tutti i membri del gruppo di condividere ed utilizzare i tuoi permessi per questo oggetto. Devi cederlo al gruppo per abilitare le restrizioni di ruolo."/> - <string name="text deed continued"> - Cedi al gruppo... - </string> - <string name="text deed"> - Cedi al gruppo - </string> - <button left_delta="152" width="98" label="Cedi al gruppo..." label_selected="Cedi al gruppo..." name="button deed" tool_tip="Gli oggetti condivisi con il gruppo possono essere ceduti da un funzionario del gruppo."/> - <check_box label="Permetti a chiunque di spostare" name="checkbox allow everyone move"/> - <check_box label="Permetti a chiunque di copiare" name="checkbox allow everyone copy"/> - <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l'oggetto sia visibile nella ricerca"/> - <check_box label="In vendita" name="checkbox for sale"/> - <text name="Cost"> - Prezzo: L$ + <button label="Imposta..." label_selected="Imposta..." name="button set group" tool_tip="Scegli un gruppo per condividere i permessi di questo oggetto"/> + <name_box initial_value="Caricando..." name="Group Name Proxy"/> + <button label="Intesta" label_selected="Intesta" left_delta="152" name="button deed" tool_tip="Intestando permette di regalare questo oggetto con i permessi del prossimo proprietario. Gli oggetti condivisi dal gruppo posso essere instestati solo da un officer del gruppo." width="98"/> + <check_box label="Condividi" name="checkbox share with group" tool_tip="Permetti ai membri del gruppo selezionato di condividere i tuoi permessi modify per questo oggetto. Tu devi Intestare per attivare le restrizioni al ruolo."/> + <text name="label click action" width="220"> + Clicca: </text> + <combo_box name="clickaction" width="192"> + <combo_box.item label="Tocca (default)" name="Touch/grab(default)"/> + <combo_box.item label="Siediti sull'oggetto" name="Sitonobject"/> + <combo_box.item label="Compra l'oggetto" name="Buyobject"/> + <combo_box.item label="Paga l'oggetto" name="Payobject"/> + <combo_box.item label="Apri" name="Open"/> + <combo_box.item label="Zoom" name="Zoom"/> + </combo_box> + <check_box label="In vendita:" name="checkbox for sale"/> <combo_box name="sale type"> <combo_box.item label="Copia" name="Copy"/> <combo_box.item label="Contenuto" name="Contents"/> <combo_box.item label="Originale" name="Original"/> </combo_box> - - <text name="label click action" width="220"> - Se cliccato con il tasto sinistro del mouse: - </text> - <combo_box name="clickaction" width="192"> - <combo_box.item name="Touch/grab(default)" label="Tocca/Afferra (default)" - /> - <combo_box.item name="Sitonobject" label="Siediti sull'oggetto" - /> - <combo_box.item name="Buyobject" label="Compra l'oggetto" - /> - <combo_box.item name="Payobject" label="Paga l'oggetto" - /> - <combo_box.item name="Open" label="Apri" - /> - <combo_box.item name="Play" label="Attiva i multimedia del terreno" - /> - <combo_box.item name="Opemmedia" label="Apri i multimedia del terreno" - /> - </combo_box> - <panel name="perms_build"> - <text name="perm_modify"> - Puoi modificare questo oggetto - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> - <text name="Next owner can:"> - Il prossimo proprietario può: - </text> - <check_box label="Modificare" name="checkbox next owner can modify"/> - <check_box label="Copiare" name="checkbox next owner can copy" left_delta="80"/> - <check_box name="checkbox next owner can transfer" left_delta="67"/> - </panel> - <string name="text modify info 1"> - Puoi modificare questo oggetto - </string> - <string name="text modify info 2"> - Puoi modificare questi oggetti - </string> - <string name="text modify info 3"> - Non puoi modificare questo oggetto - </string> - <string name="text modify info 4"> - Non puoi modificare questi oggetti - </string> - <string name="text modify warning"> - Devi selezionare l'intero oggetto per impostare i permessi - </string> - <string name="Cost Default"> - Prezzo: L$ - </string> - <string name="Cost Total"> - Prezzo totale: L$ - </string> - <string name="Cost Per Unit"> - Prezzo per: L$ - </string> - <string name="Cost Mixed"> - Prezzo misto - </string> - <string name="Sale Mixed"> - Vendita mista - </string> + <spinner label="Prezzo: L$" name="Edit Cost"/> + <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l'oggetto sia visibile nella ricerca"/> + <panel name="perms_build"> + <text name="perm_modify"> + Puoi modificare questo oggetto + </text> + <text name="Anyone can:"> + Chiunque: + </text> + <check_box label="Sposta" name="checkbox allow everyone move"/> + <check_box label="Copia" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Prossimo proprietario: + </text> + <check_box label="Modificare" name="checkbox next owner can modify"/> + <check_box label="Copiare" left_delta="80" name="checkbox next owner can copy"/> + <check_box label="Transfer" left_delta="67" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + </panel> </panel> <panel label="Oggetto" name="Object"> - <text name="select_single"> - Seleziona solo un prim per modificarne i parametri. - </text> - <text name="edit_object"> - Modifica i parametri dell'oggetto: - </text> <check_box label="Bloccato" name="checkbox locked" tool_tip="Previene lo spostamento o la cancellazione dell'oggetto. Spesso utile mentre si costruisce per evitare involontarie modifiche."/> <check_box label="Fisico" name="Physical Checkbox Ctrl" tool_tip="Permette all'oggetto di essere spostato e di subire gli effetti della gravità "/> - <check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Provoca la cancellazione dell'oggetto 1 minuto dopo la sua creazione."/> + <check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Causa la cancellazione dell'oggetto 1 minuto dopo la sua creazione"/> <check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Rende l'oggetto penetrabile dagli altri oggetti e dagli avatars"/> <text name="label position"> Posizione (metri) @@ -247,48 +261,27 @@ <spinner label="X" name="Rot X"/> <spinner label="Y" name="Rot Y"/> <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Materiale - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Pietra" - /> - <combo_box.item name="Metal" label="Metallo" - /> - <combo_box.item name="Glass" label="Vetro" - /> - <combo_box.item name="Wood" label="Legno" - /> - <combo_box.item name="Flesh" label="Carne" - /> - <combo_box.item name="Plastic" label="Plastica" - /> - <combo_box.item name="Rubber" label="Gomma" - /> - </combo_box> - <text name="label basetype"> - Forma di costruzione - </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Cubo" - /> - <combo_box.item name="Cylinder" label="Cilindro" - /> - <combo_box.item name="Prism" label="Prisma" - /> - <combo_box.item name="Sphere" label="Sfera" - /> - <combo_box.item name="Torus" label="Toro" - /> - <combo_box.item name="Tube" label="Tubo" - /> - <combo_box.item name="Ring" label="Anello" - /> - <combo_box.item name="Sculpted" label="Sculpted" - /> + <combo_box.item label="Cubo" name="Box"/> + <combo_box.item label="Cilindro" name="Cylinder"/> + <combo_box.item label="Prisma" name="Prism"/> + <combo_box.item label="Sfera" name="Sphere"/> + <combo_box.item label="Toro" name="Torus"/> + <combo_box.item label="Tubo" name="Tube"/> + <combo_box.item label="Anello" name="Ring"/> + <combo_box.item label="Sculpted" name="Sculpted"/> + </combo_box> + <combo_box name="material"> + <combo_box.item label="Pietra" name="Stone"/> + <combo_box.item label="Metallo" name="Metal"/> + <combo_box.item label="Vetro" name="Glass"/> + <combo_box.item label="Legno" name="Wood"/> + <combo_box.item label="Carne" name="Flesh"/> + <combo_box.item label="Plastica" name="Plastic"/> + <combo_box.item label="Gomma" name="Rubber"/> </combo_box> <text name="text cut"> - Linea di taglio Inizio e Fine + Riduci una sezione (begin/end) </text> <spinner label="I" name="cut begin"/> <spinner label="F" name="cut end"/> @@ -302,17 +295,13 @@ Forma del foro </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Default" - /> - <combo_box.item name="Circle" label="Rotondo" - /> - <combo_box.item name="Square" label="Quadrato" - /> - <combo_box.item name="Triangle" label="Triangolare" - /> + <combo_box.item label="Default" name="Default"/> + <combo_box.item label="Rotondo" name="Circle"/> + <combo_box.item label="Quadrato" name="Square"/> + <combo_box.item label="Triangolare" name="Triangle"/> </combo_box> <text name="text twist"> - Torsione Inizio e Fine + Attorciglia (begin/end) </text> <spinner label="I" name="Twist Begin"/> <spinner label="F" name="Twist End"/> @@ -330,13 +319,13 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut" width="149"> - Ritaglia il profilo Inizio e Fine + Riduci un bordo (begin/end) </text> <text name="advanced_dimple"> - Scava Inizio e Fine + Fossetta???!!!! (begin/end) </text> <text name="advanced_slice"> - Affetta Inizio e Fine + Taglia???!!! (begin/end) </text> <spinner label="I" name="Path Limit Begin"/> <spinner label="F" name="Path Limit End"/> @@ -352,22 +341,17 @@ Rivoluzioni </text> <texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="Clicca per scegliere un'immagine"/> - <check_box label="Rifletti" name="sculpt mirror control" tool_tip="Ribalta lo sculpted prim lungo l'asse X."/> - <check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverte le normali dello sculpted prim, facendolo apparire rivoltato."/> + <check_box label="Rifletti" name="sculpt mirror control" tool_tip="Rovescia il prim sculpted lungo l'asse X"/> + <check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverti i normali prim sculpted, facendoli apparire a rovescio"/> <text name="label sculpt type"> Tipo di congiunzione </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="(nessuna)" - /> - <combo_box.item name="Sphere" label="Sferica" - /> - <combo_box.item name="Torus" label="Toroidale" - /> - <combo_box.item name="Plane" label="Piana" - /> - <combo_box.item name="Cylinder" label="Cilindrica" - /> + <combo_box.item label="(nessuna)" name="None"/> + <combo_box.item label="Sferica" name="Sphere"/> + <combo_box.item label="Toroidale" name="Torus"/> + <combo_box.item label="Piana" name="Plane"/> + <combo_box.item label="Cilindrica" name="Cylinder"/> </combo_box> </panel> <panel label="Caratteristiche" name="Features"> @@ -377,134 +361,110 @@ <text name="edit_object"> Modifica le caratteristiche dell'oggetto: </text> - <check_box label="Flessibilità " name="Flexible1D Checkbox Ctrl" tool_tip="Permette all'oggetto di flettersi rispetto all'asse Z. (solo lato client)"/> - <spinner label="Morbidezza" name="FlexNumSections" label_width="72" width="135"/> - <spinner label="Gravità " name="FlexGravity" label_width="72" width="135"/> - <spinner label="Elasticità " name="FlexFriction" label_width="72" width="135"/> - <spinner label="Sventolio" name="FlexWind" label_width="72" width="135"/> - <spinner label="Tensione" name="FlexTension" label_width="72" width="135"/> - <spinner label="Forza X" name="FlexForceX" label_width="72" width="135"/> - <spinner label="Forza Y" name="FlexForceY" label_width="72" width="135"/> - <spinner label="Forza Z" name="FlexForceZ" label_width="72" width="135"/> + <check_box label="Flessibilità " name="Flexible1D Checkbox Ctrl" tool_tip="Permetti all'oggetto di flettersi lungo l'asse Z (Client-side only)"/> + <spinner label="Morbidezza" label_width="72" name="FlexNumSections" width="135"/> + <spinner label="Gravità " label_width="72" name="FlexGravity" width="135"/> + <spinner label="Elasticità " label_width="72" name="FlexFriction" width="135"/> + <spinner label="Sventolio" label_width="72" name="FlexWind" width="135"/> + <spinner label="Tensione" label_width="72" name="FlexTension" width="135"/> + <spinner label="Forza X" label_width="72" name="FlexForceX" width="135"/> + <spinner label="Forza Y" label_width="72" name="FlexForceY" width="135"/> + <spinner label="Forza Z" label_width="72" name="FlexForceZ" width="135"/> <check_box label="Luce" name="Light Checkbox Ctrl" tool_tip="Imposta l'oggetto come sorgente di luce"/> - <text name="label color"> - Colore - </text> - <color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <spinner label="Intensità " name="Light Intensity" label_width="72" width="135"/> - <spinner label="Raggio" name="Light Radius" label_width="72" width="135"/> - <spinner label="Attenuazione" name="Light Falloff" label_width="72" width="135" /> + <color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/> + <texture_picker label="" name="light texture control" tool_tip="Clicca per scegliere una proiezione dell'immagine (funziona solo con deferred rendering attivato)"/> + <spinner label="Intensità " label_width="72" name="Light Intensity" width="135"/> + <spinner label="FOV" name="Light FOV"/> + <spinner label="Raggio" label_width="72" name="Light Radius" width="135"/> + <spinner label="Focus" name="Light Focus"/> + <spinner label="Attenuazione" label_width="72" name="Light Falloff" width="135"/> + <spinner label="Atmosfera" name="Light Ambiance"/> </panel> <panel label="Texture" name="Texture"> + <panel.string name="string repeats per meter"> + Ripetizioni per metro + </panel.string> + <panel.string name="string repeats per face"> + Ripetizioni per faccia + </panel.string> <texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/> <text name="color trans"> Trasparenza % </text> <text name="glow label"> Bagliore </text> - <check_box label="Massima luminosità " name="checkbox fullbright" bottom_delta="-21"/> + <check_box bottom_delta="-21" label="Massima +luminosità " name="checkbox fullbright"/> <text name="tex gen"> - Applicazione della texture + Applicazione +della texture </text> - <combo_box name="combobox texgen" bottom_delta="-38"> - <combo_box.item name="Default" label="Default" - /> - <combo_box.item name="Planar" label="Planare" - /> + <combo_box bottom_delta="-38" name="combobox texgen"> + <combo_box.item label="Default" name="Default"/> + <combo_box.item label="Planare" name="Planar"/> </combo_box> - <text name="label shininess" bottom="-120"> + <text bottom="-120" name="label shininess"> Brillantezza </text> - <combo_box name="combobox shininess" bottom_delta="-22"> - <combo_box.item name="None" label="Nessuna" - /> - <combo_box.item name="Low" label="Bassa" - /> - <combo_box.item name="Medium" label="Media" - /> - <combo_box.item name="High" label="Alta" - /> + <combo_box bottom_delta="-22" name="combobox shininess"> + <combo_box.item label="Nessuna" name="None"/> + <combo_box.item label="Bassa" name="Low"/> + <combo_box.item label="Media" name="Medium"/> + <combo_box.item label="Alta" name="High"/> </combo_box> - <text name="label bumpiness" bottom="-120"> + <text bottom="-120" name="label bumpiness"> Rilievo </text> - <combo_box name="combobox bumpiness" width="100" bottom_delta="-22"> - <combo_box.item name="None" label="Nessuna" - /> - <combo_box.item name="Brightness" label="Luminoso" - /> - <combo_box.item name="Darkness" label="Scuro" - /> - <combo_box.item name="woodgrain" label="Venature del legno" - /> - <combo_box.item name="bark" label="Corteccia" - /> - <combo_box.item name="bricks" label="Mattoni" - /> - <combo_box.item name="checker" label="Scacchi" - /> - <combo_box.item name="concrete" label="Cemento" - /> - <combo_box.item name="crustytile" label="Mattonella incrostata" - /> - <combo_box.item name="cutstone" label="Mosaico in pietra" - /> - <combo_box.item name="discs" label="Dischi" - /> - <combo_box.item name="gravel" label="Ghiaia" - /> - <combo_box.item name="petridish" label="Sassi" - /> - <combo_box.item name="siding" label="Listoni" - /> - <combo_box.item name="stonetile" label="Mattonelle in pietra" - /> - <combo_box.item name="stucco" label="Stucco" - /> - <combo_box.item name="suction" label="Cerchi rialzati" - /> - <combo_box.item name="weave" label="Trama" - /> + <combo_box bottom_delta="-22" name="combobox bumpiness" width="100"> + <combo_box.item label="Nessuna" name="None"/> + <combo_box.item label="Luminoso" name="Brightness"/> + <combo_box.item label="Scuro" name="Darkness"/> + <combo_box.item label="Venature del legno" name="woodgrain"/> + <combo_box.item label="Corteccia" name="bark"/> + <combo_box.item label="Mattoni" name="bricks"/> + <combo_box.item label="Scacchi" name="checker"/> + <combo_box.item label="Cemento" name="concrete"/> + <combo_box.item label="Mattonella incrostata" name="crustytile"/> + <combo_box.item label="Mosaico in pietra" name="cutstone"/> + <combo_box.item label="Dischi" name="discs"/> + <combo_box.item label="Ghiaia" name="gravel"/> + <combo_box.item label="Sassi" name="petridish"/> + <combo_box.item label="Listoni" name="siding"/> + <combo_box.item label="Mattonelle in pietra" name="stonetile"/> + <combo_box.item label="Stucco" name="stucco"/> + <combo_box.item label="Cerchi rialzati" name="suction"/> + <combo_box.item label="Trama" name="weave"/> </combo_box> <text name="tex scale"> - Ripetizioni per faccia + Ripeti / Lato </text> <spinner label="Orizzontale (U)" name="TexScaleU"/> <check_box label="Inverti" name="checkbox flip s"/> <spinner label="Verticale (V)" name="TexScaleV"/> <check_box label="Inverti" name="checkbox flip t"/> - <text name="tex rotate"> - Rotazione (Gradi) - </text> - <string name="string repeats per meter"> - Ripetizioni per metro - </string> - <string name="string repeats per face"> - Ripetizioni per faccia - </string> - <text name="rpt"> - Ripetizioni per metro - </text> - <spinner left="120" name="TexRot" width="60" /> - <spinner left="120" name="rptctrl" width="60" /> - <button label="Applica" label_selected="Applica" name="button apply" left_delta="72"/> + <spinner label="RotazioneËš" left="120" name="TexRot" width="60"/> + <spinner label="Ripete / Metri" left="120" name="rptctrl" width="60"/> + <button label="Applica" label_selected="Applica" left_delta="72" name="button apply"/> <text name="tex offset"> - Offset + Bilanciamento della Texture </text> <spinner label="Orizzontale (U)" name="TexOffsetU"/> <spinner label="Verticale (V)" name="TexOffsetV"/> - <text name="textbox autofix"> - Allinea texture dei media -(deve prima caricarsi) - </text> - <button label="Allinea" label_selected="Allinea" name="button align" left="160"/> + <panel name="Add_Media"> + <text name="media_tex"> + Media + </text> + <button name="add_media" tool_tip="Aggiungi Media"/> + <button name="delete_media" tool_tip="Cancella questa media texture"/> + <button name="edit_media" tool_tip="Modifica questo Media"/> + <button label="Alllinea" label_selected="Allinea Media" name="button align" tool_tip="Allinea media texture (must load first)"/> + </panel> </panel> <panel label="Contenuto" name="Contents"> - <button label="Nuovo Script" label_selected="Nuovo script" name="button new script"/> + <button label="Nuovo Script" label_selected="Nuovo Script" name="button new script"/> <button label="Permessi" name="button permissions"/> - <panel name="ContentsInventory" width="272" /> </panel> </tab_container> <panel name="land info panel"> @@ -512,62 +472,29 @@ Informazioni sul terreno </text> <text name="label_area_price"> - Prezzo: [PRICE] L$ per [AREA] m² + Prezzo: L$[PRICE] per [AREA] m² </text> <text name="label_area"> Area: [AREA] m² </text> - <button label="Informazioni sul terreno..." label_selected="Informazioni sul terreno..." name="button about land" width="156"/> - <check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari: Verde = il tuo terreno Acqua = la terra del tuo gruppo Rosso = posseduta da altri Giallo = in vendita Viola = in asta Grigia = pubblica"/> - <button label="?" label_selected="?" name="button show owners help" left_delta="120"/> + <button label="Info sul terreno" label_selected="Info sul terreno" name="button about land" width="156"/> + <check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari: + +Verde = il tuo terreno +Acqua = la terra del tuo gruppo +Rosso = posseduta da altri +Giallo = in vendita +Viola = in asta +Grigia = pubblica"/> <text name="label_parcel_modify"> Modifica il terreno </text> <button label="Suddividi" label_selected="Suddividi" name="button subdivide land" width="156"/> - <button label="Unisci" label_selected="Unisci" name="button join land" width="156"/> + <button label="Aderisci" label_selected="Aderisci" name="button join land" width="156"/> <text name="label_parcel_trans"> Transazioni del territorio </text> - <button label="Acquista il terreno" label_selected="Acquista il terreno" name="button buy land" width="156"/> - <button label="Abbandona il terreno" label_selected="Abbandona il terreno" name="button abandon land" width="156"/> + <button label="Compra la Terra" label_selected="Compra la Terra" name="button buy land" width="156"/> + <button label="Abbandona la Terra" label_selected="Abbandona la Terra" name="button abandon land" width="156"/> </panel> - <floater.string name="status_rotate"> - Sposta le fasce colorate per ruotare l'oggetto - </floater.string> - <floater.string name="status_scale"> - Clicca e trascina per ridimensionare il lato selezionato - </floater.string> - <floater.string name="status_move"> - Trascina per spostare, maiuscolo+trascina per copiare - </floater.string> - <floater.string name="status_modifyland"> - Clicca e tieni premuto per modificare il terreno - </floater.string> - <floater.string name="status_camera"> - Clicca e sposta per cambiare visuale - </floater.string> - <floater.string name="status_grab"> - Trascina per muovere, Ctrl per alzare, Ctrl-Shift per ruotare - </floater.string> - <floater.string name="status_place"> - Clicca inworld per costruire - </floater.string> - <floater.string name="status_selectland"> - Clicca e trascina per selezionare il terreno - </floater.string> - <floater.string name="grid_screen_text"> - Schermo - </floater.string> - <floater.string name="grid_local_text"> - Locale - </floater.string> - <floater.string name="grid_world_text"> - Globale - </floater.string> - <floater.string name="grid_reference_text"> - Riferimento - </floater.string> - <floater.string name="grid_attachment_text"> - Accessorio - </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_top_objects.xml b/indra/newview/skins/default/xui/it/floater_top_objects.xml index 9b406199e91..8f7f3e060aa 100644 --- a/indra/newview/skins/default/xui/it/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/it/floater_top_objects.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="IN CARICAMENTO..."> +<floater name="top_objects" title="Oggetti principali"> <text name="title_text"> In caricamento... </text> @@ -19,17 +19,17 @@ </text> <button label="Mostra segnali luminosi" name="show_beacon_btn" width="150"/> <text name="obj_name_text"> - Nome oggetto: + Nome dell'oggetto: </text> <button label="Filtro" name="filter_object_btn" width="150"/> <text name="owner_name_text"> - Nome oggetto: + Proprietario: </text> <button label="Filtro" name="filter_owner_btn" width="150"/> <button label="Restituisci selezionato" name="return_selected_btn" width="150"/> - <button label="Restituisci tutti" name="return_all_btn" left="170"/> + <button label="Restituisci tutti" left="170" name="return_all_btn"/> <button label="Disabilita selezionato" name="disable_selected_btn" width="150"/> - <button label="Disabilita per tutti" name="disable_all_btn" left="170"/> + <button label="Disabilita per tutti" left="170" name="disable_all_btn"/> <button label="Aggiorna" name="refresh_btn" width="150"/> <string name="top_scripts_title"> Script pesanti diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml index 12b6021b5bb..f3f8072f568 100644 --- a/indra/newview/skins/default/xui/it/floater_tos.xml +++ b/indra/newview/skins/default/xui/it/floater_tos.xml @@ -4,8 +4,7 @@ <button label="Annulla" label_selected="Annulla" name="Cancel"/> <check_box label="Accetto i Termini di Servizio" name="agree_chk"/> <text name="tos_heading"> - Leggi attentamente i seguenti Termini di Servizio. Per continuare ad entrare in [SECOND_LIFE], -devi accettare l'accordo. + Per favore leggi attentamente i seguenti Termini di Servizio. Per continuare il log in [SECOND_LIFE], devi accettare le condizioni. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml new file mode 100644 index 00000000000..e4c54d44eb4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Controlli del Voice"> + <string name="title_nearby"> + VOICE NEI DINTORNI + </string> + <string name="title_group"> + Chiamata di Gruppo con [GROUP] + </string> + <string name="title_adhoc"> + Conference Call + </string> + <string name="title_peer_2_peer"> + Chiama con [NAME] + </string> + <string name="no_one_near"> + Nessuno vicino + </string> + <panel name="control_panel"> + <layout_stack> + <layout_panel name="leave_btn_panel"> + <button label="Chiudi Chiamata" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_water.xml b/indra/newview/skins/default/xui/it/floater_water.xml index 13db1d4589b..d2849440d61 100644 --- a/indra/newview/skins/default/xui/it/floater_water.xml +++ b/indra/newview/skins/default/xui/it/floater_water.xml @@ -3,7 +3,7 @@ <text name="KeyFramePresetsText" width="224"> Impostazioni predeterminate dell'acqua: </text> - <combo_box left_delta="230" name="WaterPresetsCombo" width="150" /> + <combo_box left_delta="230" name="WaterPresetsCombo" width="150"/> <button label="Nuovo" label_selected="Nuovo" name="WaterNewPreset"/> <button label="Salva" label_selected="Salva" name="WaterSavePreset"/> <button label="Cancella" label_selected="Cancella" name="WaterDeletePreset"/> @@ -12,21 +12,22 @@ <text name="BHText"> Colore della nebbiosità dell'acqua </text> - <button label="?" name="WaterFogColorHelp" left="209"/> - <color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire la selezione colore"/> - <text name="WaterFogDensText" font="SansSerifSmall"> - Esponente di densità della nebbia dell'acqua + <button label="?" left="209" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire il selettore dei colori"/> + <text font="SansSerifSmall" name="WaterFogDensText"> + Esponente di densità della nebbia + dell'acqua </text> <slider bottom_delta="-40" name="WaterFogDensity"/> - <button label="?" name="WaterFogDensityHelp" left="209"/> - <text name="WaterUnderWaterFogModText" font="SansSerifSmall" bottom="-140"> + <button label="?" left="209" name="WaterFogDensityHelp"/> + <text bottom="-140" font="SansSerifSmall" name="WaterUnderWaterFogModText"> Regolatore effetto nebbia subacquea </text> - <button label="?" name="WaterUnderWaterFogModHelp" left="209"/> + <button label="?" left="209" name="WaterUnderWaterFogModHelp"/> <text name="BDensText"> Scala di riflessione delle onde </text> - <button label="?" name="WaterNormalScaleHelp" left="415"/> + <button label="?" left="415" name="WaterNormalScaleHelp"/> <text name="BHText2"> 1 </text> @@ -39,31 +40,33 @@ <text name="HDText"> Scala Fresnel </text> - <button label="?" name="WaterFresnelScaleHelp" left="415"/> + <button label="?" left="415" name="WaterFresnelScaleHelp"/> <text name="FresnelOffsetText"> Offset Fresnel </text> - <button label="?" name="WaterFresnelOffsetHelp" left="415"/> - <text name="DensMultText" font="SansSerifSmall"> - Scala di rifrazione nell'acqua dall'alto + <button label="?" left="415" name="WaterFresnelOffsetHelp"/> + <text font="SansSerifSmall" name="DensMultText"> + Scala di rifrazione nell'acqua + dall'alto </text> <slider bottom_delta="-40" name="WaterScaleAbove"/> - <button label="?" name="WaterScaleAboveHelp" left="650"/> - <text name="WaterScaleBelowText" font="SansSerifSmall" bottom="-70"> - Scala di rifrazione nell'acqua dal basso + <button label="?" left="650" name="WaterScaleAboveHelp"/> + <text bottom="-70" font="SansSerifSmall" name="WaterScaleBelowText"> + Scala di rifrazione nell'acqua + dal basso </text> <slider bottom_delta="-40" name="WaterScaleBelow"/> - <button label="?" name="WaterScaleBelowHelp" left="650"/> - <text name="MaxAltText" bottom="-122"> + <button label="?" left="650" name="WaterScaleBelowHelp"/> + <text bottom="-122" name="MaxAltText"> Moltiplicatore della sfocatura </text> - <button label="?" name="WaterBlurMultiplierHelp" left="650"/> + <button label="?" left="650" name="WaterBlurMultiplierHelp"/> </panel> <panel label="Immagine" name="Waves"> <text name="BHText"> Direzione della grande onda </text> - <button label="?" name="WaterWave1Help" left="170"/> + <button label="?" left="170" name="WaterWave1Help"/> <text name="WaterWave1DirXText"> X </text> @@ -73,7 +76,7 @@ <text name="BHText2"> Direzione della piccola onda </text> - <button label="?" name="WaterWave2Help" left="170"/> + <button label="?" left="170" name="WaterWave2Help"/> <text name="WaterWave2DirXText"> X </text> diff --git a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml new file mode 100644 index 00000000000..6d68db058d1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="whitelist_entry"> + <text name="media_label"> + Inserisci un URL o una configurazione URL da aggiungere alla lista dei domini permessi + </text> + <line_editor name="whitelist_entry" tool_tip="Inserisci un URL o una configurazione URL alla lista bianca"/> + <button label="OK" name="ok_btn"/> + <button label="Cancella" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml index 6fb7b93bc71..a672df0d963 100644 --- a/indra/newview/skins/default/xui/it/floater_world_map.xml +++ b/indra/newview/skins/default/xui/it/floater_world_map.xml @@ -1,59 +1,70 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="worldmap" title="MAPPA"> - <tab_container name="maptab"> - <panel label="Oggetti" name="objects_mapview"/> - <panel label="Terreno" name="terrain_mapview"/> - </tab_container> - <text name="you_label"> - Tu - </text> - <text name="home_label"> - Casa - </text> - <text name="auction_label"> - Asta - </text> - <text name="land_for_sale_label"> - Terreno in vendita - </text> - <button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teletrasportati a casa"/> - <check_box label="Residenti" name="people_chk"/> - <check_box label="Punto informativo" name="infohub_chk"/> - <check_box label="Punto di snodo di teletrasporto" name="telehubchk"/> - <icon bottom="-170" name="landforsale" /> - <check_box label="Terra in vendita" name="land_for_sale_chk" bottom="-170"/> - <text name="events_label"> - Eventi: - </text> - <check_box label="PG" name="event_chk"/> - <check_box label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <icon bottom="-200" name="avatar_icon" /> - <combo_box label="Amici Online" name="friend combo" tool_tip="Amici da mostrare sulla mappa"> - <combo_box.item name="item1" label="Amici Online"/> - </combo_box> - <combo_box label="Landmark" name="landmark combo" tool_tip="Landmarks da mostrare sulla mappa"> - <combo_box.item name="item1" label="Landmark"/> - </combo_box> - <line_editor label="Cerca per nome di regione" name="location" tool_tip="Scrivi il nome di una regione"/> - <button label="Cerca" name="DoSearch" tool_tip="Cerca regione"/> - <text name="search_label"> - Cerca tra i risultati: - </text> - <scroll_list name="search_results" bottom_delta="-310" height="304" > - <column label="" name="icon"/> - <column label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - Luogo: - </text> - <spinner name="spin x" tool_tip="Coordinata X del luogo da mostrare sulla mappa"/> - <spinner name="spin y" tool_tip="Coordinata Y del luogo da mostrare sulla mappa"/> - <spinner name="spin z" tool_tip="Coordinata Z del luogo da mostrare sulla mappa"/> - <button font="SansSerifSmall" label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/> - <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra destinazione" label_selected="Mostra destinazione" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto"/> - <button font="SansSerifSmall" label="Pulisci" label_selected="Pulisci" name="Clear" tool_tip="Togli traccia"/> - <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra la mia posizione" label_selected="Mostra la mia posizione" name="Show My Location" tool_tip="Centra la mappa alla posizione del tuo avatar"/> - <button font="SansSerifSmall" label="Copia lo SLurl negli appunti" name="copy_slurl" tool_tip="Copia l'attuale posizione quale SLurl utilizzabile nel web."/> - <slider label="Zoom" name="zoom slider"/> +<floater name="worldmap" title="MAPPA DEL MONDO"> + <panel name="layout_panel_1"> + <text name="events_label"> + Legenda + </text> + </panel> + <panel> + <button font="SansSerifSmall" label="Mostra la mia posizione" label_selected="Mostra la mia posizione" left_delta="91" name="Show My Location" tool_tip="Centra la mappa sul luogo dove si trova il mio avatar" width="135"/> + <text name="person_label"> + Io + </text> + <check_box label="Residenti" name="people_chk"/> + <check_box label="Punto informativo" name="infohub_chk"/> + <text name="infohub_label"> + Infohub + </text> + <check_box bottom="-170" label="Terra in vendita" name="land_for_sale_chk"/> + <icon bottom="-170" name="landforsale"/> + <text name="land_sale_label"> + Vendita di terra + </text> + <text name="auction_label"> + per conto del proprietario + </text> + <button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teleport a casa mia"/> + <text name="Home_label"> + Casa + </text> + <text name="events_label"> + Eventi: + </text> + <check_box label="PG" name="event_chk"/> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Mature + </text> + <check_box label="Adult" name="event_adult_chk"/> + </panel> + <panel> + <text name="find_on_map_label"> + Trova sulla Mappa + </text> + </panel> + <panel> + <combo_box label="Amici Online" name="friend combo" tool_tip="Mostra amici sulla mappa"> + <combo_box.item label="Miei Amici Online" name="item1"/> + </combo_box> + <combo_box label="Miei Landmarks" name="landmark combo" tool_tip="Landmark da mostrare sulla mappa"> + <combo_box.item label="Miei Landmarks" name="item1"/> + </combo_box> + <search_editor label="Regione per nome" name="location" tool_tip="Scrivi il nome di una regione"/> + <button label="Trova" name="DoSearch" tool_tip="Cerca regione"/> + <scroll_list bottom_delta="-310" height="304" name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button font="SansSerifSmall" label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/> + <button font="SansSerifSmall" label="Copia SLurl" name="copy_slurl" tool_tip="Copia il luogo attuale come SLurl per essere usato nel web."/> + <button font="SansSerifSmall" label="Mostra Selezione" label_selected="Mostra destinazione" left_delta="91" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto" width="135"/> + </panel> + <panel> + <text name="zoom_label"> + Zoom + </text> + </panel> + <panel> + <slider label="Zoom" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/inspect_avatar.xml b/indra/newview/skins/default/xui/it/inspect_avatar.xml new file mode 100644 index 00000000000..61f7a692347 --- /dev/null +++ b/indra/newview/skins/default/xui/it/inspect_avatar.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_avatar"> + <string name="Subtitle"> + [ETA'] + </string> + <string name="Details"> + [PROFILO_SL] + </string> + <slider name="volume_slider" tool_tip="Volume del Voice" value="0.5"/> + <button label="Aggiungi Amico" name="add_friend_btn"/> + <button label="IM" name="im_btn"/> + <button label="Di più" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Disattiva il Voice" name="disable_voice"/> + <button label="Attiva Voice" name="enable_voice"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/inspect_group.xml b/indra/newview/skins/default/xui/it/inspect_group.xml new file mode 100644 index 00000000000..d7b86fdbcb1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/inspect_group.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_group"> + <string name="PrivateGroup"> + Gruppo Privato + </string> + <string name="FreeToJoin"> + Adesione libera + </string> + <string name="CostToJoin"> + L$[AMOUNT] per aderire + </string> + <string name="YouAreMember"> + Tu sei un Membro + </string> + <button label="Aderire" name="join_btn"/> + <button label="Abbandona" name="leave_btn"/> + <button label="Vedi Profilo" name="view_profile_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml new file mode 100644 index 00000000000..7e6d195cb1f --- /dev/null +++ b/indra/newview/skins/default/xui/it/inspect_object.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_object"> + <string name="Creator"> + Di [CREATOR] + </string> + <string name="CreatorAndOwner"> + Di [CREATOR] +owner [OWNER] + </string> + <string name="Price"> + L$[AMOUNT] + </string> + <string name="PriceFree"> + Gratis! + </string> + <string name="Touch"> + Tocca + </string> + <string name="Sit"> + Siedi + </string> + <button label="Compra" name="buy_btn"/> + <button label="Paga" name="pay_btn"/> + <button label="Fai una Copia" name="take_free_copy_btn"/> + <button label="Tocca" name="touch_btn"/> + <button label="Siedi" name="sit_btn"/> + <button label="Apri" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Secure Browsing"/> + <button label="Ulteriore" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/inspect_remote_object.xml b/indra/newview/skins/default/xui/it/inspect_remote_object.xml new file mode 100644 index 00000000000..9fabe2ca0b5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/inspect_remote_object.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_remote_object"> + <text name="object_owner_label"> + Proprietario: + </text> + <button label="Mappa" name="map_btn"/> + <button label="Bloccare" name="block_btn"/> + <button label="Chiudi" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml new file mode 100644 index 00000000000..ff068b90a5c --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Vedi profilo" name="Profile..."/> + <menu_item_call label="Chiedi amicizia" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Chiama" name="Call"/> + <menu_item_call label="Invita nel gruppo" name="Invite..."/> + <menu_item_call label="Blocca" name="Avatar Mute"/> + <menu_item_call label="Denuncia" name="abuse"/> + <menu_item_call label="Congela" name="Freeze..."/> + <menu_item_call label="Espelli" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Avvicinati" name="Zoom In"/> + <menu_item_call label="Paga" name="Pay..."/> + <menu_item_call label="Profilo oggetto" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml new file mode 100644 index 00000000000..9711b5918a3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Tocca" name="Attachment Object Touch"/> + <menu_item_call label="Modifica" name="Edit..."/> + <menu_item_call label="Stacca" name="Detach"/> + <menu_item_call label="Lascia" name="Drop"/> + <menu_item_call label="Alzati" name="Stand Up"/> + <menu_item_call label="Il mio aspetto fisico" name="Appearance..."/> + <menu_item_call label="I miei amici" name="Friends..."/> + <menu_item_call label="I miei gruppi" name="Groups..."/> + <menu_item_call label="Il mio profilo" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml new file mode 100644 index 00000000000..522c7ab4e6a --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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="Chiedi amicizia..." name="Add Friend"/> + <menu_item_call label="Togli amicizia..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml new file mode 100644 index 00000000000..a435fcd3117 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Vedi profilo" name="Profile..."/> + <menu_item_call label="Chiedi amicizia" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Chiama" name="Call"/> + <menu_item_call label="Invita nel gruppo" name="Invite..."/> + <menu_item_call label="Blocca" name="Avatar Mute"/> + <menu_item_call label="Denuncia" name="abuse"/> + <menu_item_call label="Congela" name="Freeze..."/> + <menu_item_call label="Espelli" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Avvicinati" name="Zoom In"/> + <menu_item_call label="Paga" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml new file mode 100644 index 00000000000..b7a9f8efbed --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="Alzati" name="Stand Up"/> + <context_menu label="Vola >" name="Take Off >"> + <context_menu label="Abiti >" name="Clothes >"> + <menu_item_call label="Gonna" name="Shirt"/> + <menu_item_call label="Pantaloni" name="Pants"/> + <menu_item_call label="Gonna" name="Skirt"/> + <menu_item_call label="Scarpe" name="Shoes"/> + <menu_item_call label="Calzini" name="Socks"/> + <menu_item_call label="Giacca" name="Jacket"/> + <menu_item_call label="Guanti" name="Gloves"/> + <menu_item_call label="Maglietta intima" name="Self Undershirt"/> + <menu_item_call label="Slip" name="Self Underpants"/> + <menu_item_call label="Tatuaggio" name="Self Tattoo"/> + <menu_item_call label="Alfa (trasparenza)" name="Self Alpha"/> + <menu_item_call label="Tutti gli abiti" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Stacca >" name="Object Detach"/> + <menu_item_call label="Stacca tutto" name="Detach All"/> + </context_menu> + <menu_item_call label="Il mio aspetto fisico" name="Appearance..."/> + <menu_item_call label="I miei amici" name="Friends..."/> + <menu_item_call label="I miei gruppi" name="Groups..."/> + <menu_item_call label="Il mio profilo" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_bottomtray.xml b/indra/newview/skins/default/xui/it/menu_bottomtray.xml new file mode 100644 index 00000000000..185cf75183f --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_bottomtray.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_camera_move_controls_menu"> + <menu_item_check label="Tasto Gesture" name="ShowGestureButton"/> + <menu_item_check label="Tasto Movimento" name="ShowMoveButton"/> + <menu_item_check label="Tasto Camera" name="ShowCameraButton"/> + <menu_item_check label="Tasto Snapshot" name="ShowSnapshotButton"/> + <menu_item_call label="Taglia" name="NearbyChatBar_Cut"/> + <menu_item_call label="Copia" name="NearbyChatBar_Copy"/> + <menu_item_call label="Incolla" name="NearbyChatBar_Paste"/> + <menu_item_call label="Cancella" name="NearbyChatBar_Delete"/> + <menu_item_call label="Seleziona Tutto" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_favorites.xml b/indra/newview/skins/default/xui/it/menu_favorites.xml new file mode 100644 index 00000000000..9c4966d198f --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teleport" name="Teleport To Landmark"/> + <menu_item_call label="Vedi/Modifica Landmark" name="Landmark Open"/> + <menu_item_call label="Copia SLurl" name="Copy slurl"/> + <menu_item_call label="Mostra sulla mappa" name="Show On Map"/> + <menu_item_call label="Copia" name="Landmark Copy"/> + <menu_item_call label="Incolla" name="Landmark Paste"/> + <menu_item_call label="Cancella" name="Delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml new file mode 100644 index 00000000000..c4f9d21d14d --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gesture_gear"> + <menu_item_call label="Aggiungi/Cancella dai favoriti" name="activate"/> + <menu_item_call label="Copia" name="copy_gesture"/> + <menu_item_call label="Incolla" name="paste"/> + <menu_item_call label="Copia UUID" name="copy_uuid"/> + <menu_item_call label="Salva outfit" name="save_to_outfit"/> + <menu_item_call label="Modifica" name="edit_gesture"/> + <menu_item_call label="Ispeziona" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_group_plus.xml b/indra/newview/skins/default/xui/it/menu_group_plus.xml new file mode 100644 index 00000000000..6b7692a0671 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_group_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Unisciti al gruppo..." name="item_join"/> + <menu_item_call label="Nuovo gruppo..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml new file mode 100644 index 00000000000..a87e76a19b2 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_navbar_menu"> + <menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Mostra la barra dei favoriti" name="ShowNavbarFavoritesPanel"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..f78ed8489fe --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Fine sessione" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml new file mode 100644 index 00000000000..f39ad316fe3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet Group Menu"> + <menu_item_call label="Informazioni gruppo" name="Show Profile"/> + <menu_item_call label="Mostra sessione" name="Chat"/> + <menu_item_call label="Fine sessione" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml new file mode 100644 index 00000000000..e89576b1f98 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet P2P Menu"> + <menu_item_call label="Vedi profilo" name="Show Profile"/> + <menu_item_call label="Chiedi amicizia" name="Add Friend"/> + <menu_item_call label="Mostra sessione" name="Send IM"/> + <menu_item_call label="Fine sessione" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml new file mode 100644 index 00000000000..968fbd37aee --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Vedi profilo" name="view_profile"/> + <menu_item_call label="Chiedi amicizia" name="add_friend"/> + <menu_item_call label="IM" name="im"/> + <menu_item_call label="Chiama" name="call"/> + <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="Invita nel gruppo" name="invite_to_group"/> + <menu_item_call label="Blocca" name="block"/> + <menu_item_call label="Denuncia" name="report"/> + <menu_item_call label="Congela" name="freeze"/> + <menu_item_call label="Espelli" name="eject"/> + <menu_item_call label="Debug" name="debug"/> + <menu_item_call label="Trova sulla mappa" name="find_on_map"/> + <menu_item_call label="Avvicinati" name="zoom_in"/> + <menu_item_call label="Paga" name="pay"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml new file mode 100644 index 00000000000..74d828fc20d --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Tocca" name="touch"/> + <menu_item_call label="Siedi" name="sit"/> + <menu_item_call label="Paga" name="pay"/> + <menu_item_call label="Compra" name="buy"/> + <menu_item_call label="Prendi" name="take"/> + <menu_item_call label="Prendi copia" name="take_copy"/> + <menu_item_call label="Apri" name="open"/> + <menu_item_call label="Modifica" name="edit"/> + <menu_item_call label="Indossa" name="wear"/> + <menu_item_call label="Denuncia" name="report"/> + <menu_item_call label="Blocca" name="block"/> + <menu_item_call label="Avvicinati" name="zoom_in"/> + <menu_item_call label="Cancella" name="remove"/> + <menu_item_call label="Più info" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml new file mode 100644 index 00000000000..1812a21b0db --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Alzati" name="stand_up"/> + <menu_item_call label="Il mio aspetto fisico" name="my_appearance"/> + <menu_item_call label="Il mio profilo" name="my_profile"/> + <menu_item_call label="I miei amici" name="my_friends"/> + <menu_item_call label="I miei gruppi" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index 31b50e8d6b1..edb9490914c 100644 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -12,7 +12,7 @@ <menu_item_call label="Nuovo Script" name="New Script"/> <menu_item_call label="Nuova Notecard" name="New Note"/> <menu_item_call label="Nuova Gesture" name="New Gesture"/> - <menu name="New Clothes"> + <menu label="Maglietta Intima" name="New Clothes"> <menu_item_call label="Nuova Maglietta" name="New Shirt"/> <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> <menu_item_call label="Nuove Scarpe" name="New Shoes"/> @@ -22,31 +22,47 @@ <menu_item_call label="Nuovi Guanti" name="New Gloves"/> <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> <menu_item_call label="Nuove Mutande" name="New Underpants"/> + <menu_item_call label="Nuovo Alfa Mask" name="New Alpha Mask"/> + <menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/> </menu> - <menu name="New Body Parts"> + <menu label="Nuove Parti del Corpo" name="New Body Parts"> <menu_item_call label="Nuova Forma del corpo" name="New Shape"/> <menu_item_call label="Nuova Pelle" name="New Skin"/> <menu_item_call label="Nuovi Capelli" name="New Hair"/> <menu_item_call label="Nuovi Occhi" name="New Eyes"/> </menu> + <menu label="Cambia Tipo" name="Change Type"> + <menu_item_call label="Predefinito" name="Default"/> + <menu_item_call label="Guanti" name="Gloves"/> + <menu_item_call label="Giacca" name="Jacket"/> + <menu_item_call label="Pantaloni" name="Pants"/> + <menu_item_call label="Shape" name="Shape"/> + <menu_item_call label="Scarpe" name="Shoes"/> + <menu_item_call label="Camicia" name="Shirt"/> + <menu_item_call label="Gonna" name="Skirt"/> + <menu_item_call label="Slip" name="Underpants"/> + <menu_item_call label="Maglietta Intima" name="Undershirt"/> + </menu> <menu_item_call label="Teletrasportati" name="Landmark Open"/> <menu_item_call label="Apri" name="Animation Open"/> <menu_item_call label="Apri" name="Sound Open"/> <menu_item_call label="Elimina oggetto" name="Purge Item"/> <menu_item_call label="Ripristina oggetto" name="Restore Item"/> + <menu_item_call label="Vai al Link" name="Goto Link"/> <menu_item_call label="Apri" name="Open"/> <menu_item_call label="Proprietà " name="Properties"/> <menu_item_call label="Rinomina" name="Rename"/> <menu_item_call label="Copia UUID dell'oggetto" name="Copy Asset UUID"/> <menu_item_call label="Copia" name="Copy"/> <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Incolla come Link" name="Paste As Link"/> <menu_item_call label="Cancella" name="Delete"/> <menu_item_call label="Togli gli oggetti" name="Take Off Items"/> <menu_item_call label="Aggiungi all'outfit" name="Add To Outfit"/> <menu_item_call label="Sostituisci outfit" name="Replace Outfit"/> <menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/> <menu_item_call label="Esegui" name="Sound Play"/> - <menu_item_call label="Informazioni sul landmark" name="Teleport To Landmark"/> + <menu_item_call label="Informazioni sul Landmark" name="About Landmark"/> <menu_item_call label="Esegui inworld" name="Animation Play"/> <menu_item_call label="Esegui localmente" name="Animation Audition"/> <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/> @@ -54,8 +70,8 @@ <menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/> <menu_item_call label="Attiva" name="Activate"/> <menu_item_call label="Disattiva" name="Deactivate"/> + <menu_item_call label="Salva con nome" name="Save As"/> <menu_item_call label="Stacca da te" name="Detach From Yourself"/> - <menu_item_call label="Ripristina all'ultima posizione" name="Restore to Last Position"/> <menu_item_call label="Indossa" name="Object Wear"/> <menu label="Attacca a" name="Attach To"/> <menu label="Attacca all'HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/it/menu_inventory_add.xml b/indra/newview/skins/default/xui/it/menu_inventory_add.xml new file mode 100644 index 00000000000..d33dabc4c36 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Carica sul server" name="upload"> + <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/> + <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/> + <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/> + <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nuova Cartella" name="New Folder"/> + <menu_item_call label="Nuovo Script" name="New Script"/> + <menu_item_call label="Nuova Notecard" name="New Note"/> + <menu_item_call label="Nuova Gesture" name="New Gesture"/> + <menu label="Nuovi Abiti" name="New Clothes"> + <menu_item_call label="Nuova Camicia" name="New Shirt"/> + <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> + <menu_item_call label="Nuove Scarpe" name="New Shoes"/> + <menu_item_call label="Nuove Calze" name="New Socks"/> + <menu_item_call label="Nuova Giacca" name="New Jacket"/> + <menu_item_call label="Nuova Gonna" name="New Skirt"/> + <menu_item_call label="Nuovi Guanti" name="New Gloves"/> + <menu_item_call label="Nuova Maglietta Intima" name="New Undershirt"/> + <menu_item_call label="Nuovi Slip" name="New Underpants"/> + <menu_item_call label="Nuovo Alfa (Trasparenza)" name="New Alpha"/> + <menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/> + </menu> + <menu label="Nuove Parti del Corpo" name="New Body Parts"> + <menu_item_call label="Nuova Shape" name="New Shape"/> + <menu_item_call label="Nuova Pelle" name="New Skin"/> + <menu_item_call label="Nuovi Capelli" name="New Hair"/> + <menu_item_call label="Nuovi Occhi" name="New Eyes"/> + </menu> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml new file mode 100644 index 00000000000..e97af5c9505 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <menu_item_call label="Nuova Finestra di Inventory" name="new_window"/> + <menu_item_call label="Ordina per nome" name="sort_by_name"/> + <menu_item_call label="Ordina per data (più recenti)" name="sort_by_recent"/> + <menu_item_call label="Mostra i Filtri" name="show_filters"/> + <menu_item_call label="Cancella i Filtri" name="reset_filters"/> + <menu_item_call label="Chiudi le cartelle" name="close_folders"/> + <menu_item_call label="Svuota cestino" name="empty_trash"/> + <menu_item_call label="Svuota Persi e Ritrovati" name="empty_lostnfound"/> + <menu_item_call label="Salva texture come" name="Save Texture As"/> + <menu_item_call label="Trova originale" name="Find Original"/> + <menu_item_call label="Trova tutti i link" name="Find All Links"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_land.xml b/indra/newview/skins/default/xui/it/menu_land.xml new file mode 100644 index 00000000000..173c080c3fa --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="Info sul terreno" name="Place Information..."/> + <menu_item_call label="Siedi qui" name="Sit Here"/> + <menu_item_call label="Compra questo terreno" name="Land Buy"/> + <menu_item_call label="Compra permesso" name="Land Buy Pass"/> + <menu_item_call label="Costruisci" name="Create"/> + <menu_item_call label="Modifica terreno" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_landmark.xml b/indra/newview/skins/default/xui/it/menu_landmark.xml new file mode 100644 index 00000000000..58e3e992ed8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_landmark.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="landmark_overflow_menu"> + <menu_item_call label="Copia SLurl" name="copy"/> + <menu_item_call label="Cancella" name="delete"/> + <menu_item_call label="Crea luogo consigliato" name="pick"/> + <menu_item_call label="Aggiungi alla barra dei favoriti" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 44a801d2739..db3b84df294 100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -1,13 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="File" name="File"> + <menu label="Io" name="File"> + <menu_item_call label="Preferenze" name="Preferences..."/> <menu_item_call label="Chiudi" name="Quit"/> </menu> - <menu label="Modifica" name="Edit"> - <menu_item_call label="Preferenze...." name="Preferences..."/> - </menu> <menu label="Aiuto" name="Help"> <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Informazioni su [APP_NAME]..." name="About Second Life..."/> + </menu> + <menu label="Debug" name="Debug"> + <menu label="Modifica" name="Edit"> + <menu_item_call label="Annulla" name="Undo"/> + <menu_item_call label="Ripeti" name="Redo"/> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Duplica" name="Duplicate"/> + <menu_item_call label="Seleziona Tutto" name="Select All"/> + <menu_item_call label="Deseleziona" name="Deselect"/> + </menu> + <menu_item_call label="Mostra Impostazioni di Debug" name="Debug Settings"/> + <menu_item_call label="Impostazioni colori Interfaccia" name="UI/Color Settings"/> + <menu_item_call label="Mostra la finestra laterale" name="Show Side Tray"/> + <menu label="Test Interfaccia Utente" name="UI Tests"/> + <menu_item_call label="Mostra i Termini di Servizio (TOS)" name="TOS"/> + <menu_item_call label="Mostra Messaggi critici" name="Critical"/> + <menu_item_call label="Test Web browser" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/it/menu_mini_map.xml b/indra/newview/skins/default/xui/it/menu_mini_map.xml index 1109f3f6466..7caa7fd226e 100644 --- a/indra/newview/skins/default/xui/it/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/it/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom ravvicinato" name="Zoom Close"/> <menu_item_call label="Zoom Medio" name="Zoom Medium"/> <menu_item_call label="Zoom Distante" name="Zoom Far"/> + <menu_item_check label="Ruota la mappa" name="Rotate Map"/> <menu_item_call label="Ferma il puntamento" name="Stop Tracking"/> - <menu_item_call label="Profilo..." name="Profile"/> + <menu_item_call label="Mappa del mondo" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_navbar.xml b/indra/newview/skins/default/xui/it/menu_navbar.xml new file mode 100644 index 00000000000..3d855cf7017 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Mostra le coordinate" name="Show Coordinates"/> + <menu_item_check label="Mostra proprietà parcel" name="Show Parcel Properties"/> + <menu_item_call label="Landmark" name="Landmark"/> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Seleziona tutto" name="Select All"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_nearby_chat.xml b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml new file mode 100644 index 00000000000..2a625fc7633 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="NearBy Chat Menu"> + <menu_item_call label="Mostra le persone vicine..." name="nearby_people"/> + <menu_item_check label="Mostra Testo bloccato" name="muted_text"/> + <menu_item_check label="Mostra Icone amici" name="show_buddy_icons"/> + <menu_item_check label="Mostra nomi" name="show_names"/> + <menu_item_check label="Mostra Icone e nomi" name="show_icons_and_names"/> + <menu_item_call label="Dimensioni del Font" name="font_size"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml new file mode 100644 index 00000000000..955d4c8776e --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_object.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Tocca" name="Object Touch"/> + <menu_item_call label="Modifica" name="Edit..."/> + <menu_item_call label="Costruisci" name="Build"/> + <menu_item_call label="Apri" name="Open"/> + <menu_item_call label="Siedi qui" name="Object Sit"/> + <menu_item_call label="Profilo oggetto" name="Object Inspect"/> + <context_menu label="Metti >" name="Put On"> + <menu_item_call label="Indossa" name="Wear"/> + <context_menu label="Attacca >" name="Object Attach"/> + <context_menu label="Attacca HUD >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Togli >" name="Remove"> + <menu_item_call label="Prendi" name="Pie Object Take"/> + <menu_item_call label="Denuncia abuso" name="Report Abuse..."/> + <menu_item_call label="Blocca" name="Object Mute"/> + <menu_item_call label="Restituisci" name="Return..."/> + <menu_item_call label="Cancella" name="Delete"/> + </context_menu> + <menu_item_call label="Prendi copia" name="Take Copy"/> + <menu_item_call label="Paga" name="Pay..."/> + <menu_item_call label="Compra" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml new file mode 100644 index 00000000000..0f347b1a909 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Object Icon Menu"> + <menu_item_call label="Profilo oggetto..." name="Object Profile"/> + <menu_item_call label="Blocca..." name="Block"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_participant_list.xml b/indra/newview/skins/default/xui/it/menu_participant_list.xml new file mode 100644 index 00000000000..33c8fc404d8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_participant_list.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <menu_item_call label="Vedi profilo" name="View Profile"/> + <menu_item_call label="Chiedi amicizia" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Chiama" name="Call"/> + <menu_item_call label="Condividi" name="Share"/> + <menu_item_call label="Paga" name="Pay"/> + <menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/> + <menu_item_check label="Muta testo" name="MuteText"/> + <menu_item_check label="Consenti chat di testo" name="AllowTextChat"/> + <menu_item_call label="Muta questo partecipante" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Muta tutti gli altri" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Riabilita questo partecipante" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Riabilita tutti gli altri" name="ModerateVoiceUnMuteOthers"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml new file mode 100644 index 00000000000..ad8927be132 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Ordina per nome" name="sort_name"/> + <menu_item_check label="Ordina per stato" name="sort_status"/> + <menu_item_check label="Icone persone" name="view_icons"/> + <menu_item_call label="Mostra gli & oggetti dei residenti bloccati" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml new file mode 100644 index 00000000000..d31ddaf1aa6 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Visualizza le icone di gruppo" name="Display Group Icons"/> + <menu_item_call label="Lascia i gruppi selezionati" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml new file mode 100644 index 00000000000..be071a50743 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Vedi profilo" name="View Profile"/> + <menu_item_call label="Chiedi amicizia" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Chiama" name="Call"/> + <menu_item_call label="Condividi" name="Share"/> + <menu_item_call label="Paga" name="Pay"/> + <menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml new file mode 100644 index 00000000000..f9fda2fb985 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Chiedi amicizie" name="Add Friends"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Chiama" name="Call"/> + <menu_item_call label="Condividi" name="Share"/> + <menu_item_call label="Paga" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml new file mode 100644 index 00000000000..c1b384196d0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Ordina mettendo per primo chi ha parlato per ultimo" name="sort_by_recent_speakers"/> + <menu_item_check label="Ordina per nome" name="sort_name"/> + <menu_item_check label="Ordina per Distanza" name="sort_distance"/> + <menu_item_check label="Vedi le icone delle persone" name="view_icons"/> + <menu_item_call label="Mostra gli & oggetti dei residenti bloccati" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml new file mode 100644 index 00000000000..f8fd9dca79d --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Mostra prima i più recenti" name="sort_most"/> + <menu_item_check label="Ordina per nome" name="sort_name"/> + <menu_item_check label="Vedi le icone delle persone" name="view_icons"/> + <menu_item_call label="Mostra gli & oggetti dei residenti bloccati" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_picks.xml b/indra/newview/skins/default/xui/it/menu_picks.xml new file mode 100644 index 00000000000..e84b321ccf8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_picks.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Picks"> + <menu_item_call label="Informazioni" name="pick_info"/> + <menu_item_call label="Modifica" name="pick_edit"/> + <menu_item_call label="Teleport" name="pick_teleport"/> + <menu_item_call label="Mappa" name="pick_map"/> + <menu_item_call label="Cancella" name="pick_delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_picks_plus.xml b/indra/newview/skins/default/xui/it/menu_picks_plus.xml new file mode 100644 index 00000000000..d758a9715e2 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_picks_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="picks_plus_menu"> + <menu_item_call label="Nuovo luogo consigliato" name="create_pick"/> + <menu_item_call label="Nuovo Annuncio" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_place.xml b/indra/newview/skins/default/xui/it/menu_place.xml new file mode 100644 index 00000000000..5b9261b159a --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_place.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="place_overflow_menu"> + <menu_item_call label="Prendi il Landmark" name="landmark"/> + <menu_item_call label="Crea luogo consigliato" name="pick"/> + <menu_item_call label="Compra Permesso" name="pass"/> + <menu_item_call label="Modifica" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_place_add_button.xml b/indra/newview/skins/default/xui/it/menu_place_add_button.xml new file mode 100644 index 00000000000..6dd10f422ec --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_place_add_button.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Aggiungi cartella" name="add_folder"/> + <menu_item_call label="Aggiungi landmark" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml new file mode 100644 index 00000000000..45765bf77df --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Aggiungi Landmark" name="add_landmark"/> + <menu_item_call label="Aggiungi cartella" name="add_folder"/> + <menu_item_call label="Taglia" name="cut"/> + <menu_item_call label="Copia" name="copy_folder"/> + <menu_item_call label="Incolla" name="paste"/> + <menu_item_call label="Rinomina" name="rename"/> + <menu_item_call label="Cancella" name="delete"/> + <menu_item_call label="Apri" name="expand"/> + <menu_item_call label="Chiudi" name="collapse"/> + <menu_item_call label="Apri tutte le cartelle" name="expand_all"/> + <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/> + <menu_item_check label="Ordina per data" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml new file mode 100644 index 00000000000..2c5b8a848c1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_ladmark_gear"> + <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="Maggiori Informazioni" name="more_info"/> + <menu_item_call label="Mostra sulla Mappa" name="show_on_map"/> + <menu_item_call label="Aggiungi Landmark" name="add_landmark"/> + <menu_item_call label="Aggiungi Cartella" name="add_folder"/> + <menu_item_call label="Taglia" name="cut"/> + <menu_item_call label="Copia Landmark" name="copy_landmark"/> + <menu_item_call label="Copia SLurl" name="copy_slurl"/> + <menu_item_call label="Incolla" name="paste"/> + <menu_item_call label="Rinomina" name="rename"/> + <menu_item_call label="Cancella" name="delete"/> + <menu_item_call label="Apri tutte le cartelle" name="expand_all"/> + <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/> + <menu_item_check label="Ordina per Data" name="sort_by_date"/> + <menu_item_call label="Crea Luogo Consigliato" name="create_pick"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_profile_overflow.xml b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml new file mode 100644 index 00000000000..76a04a127e8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Paga" name="pay"/> + <menu_item_call label="Condividi" name="share"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_slurl.xml b/indra/newview/skins/default/xui/it/menu_slurl.xml index 283fd92b197..be83133efc1 100644 --- a/indra/newview/skins/default/xui/it/menu_slurl.xml +++ b/indra/newview/skins/default/xui/it/menu_slurl.xml @@ -2,5 +2,5 @@ <menu name="Popup"> <menu_item_call label="Informazioni sull'indirizzo URL" name="about_url"/> <menu_item_call label="Teleportati all'indirizzo URL" name="teleport_to_url"/> - <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> + <menu_item_call label="Mappa" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml new file mode 100644 index 00000000000..71acda5a9d0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Teleport History Gear Context Menu"> + <menu_item_call label="Apri tutte le cartelle" name="Expand all folders"/> + <menu_item_call label="Chiudi tutte le cartelle" name="Collapse all folders"/> + <menu_item_call label="Cancella la storia dei Teleport" name="Clear Teleport History"/> +</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 new file mode 100644 index 00000000000..c01230584be --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Teleport" name="Teleport"/> + <menu_item_call label="Più informazioni" name="More Information"/> + <menu_item_call label="Copia negli appunti" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml new file mode 100644 index 00000000000..c221f141a68 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Apri" name="TabOpen"/> + <menu_item_call label="Chiudi" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_text_editor.xml b/indra/newview/skins/default/xui/it/menu_text_editor.xml new file mode 100644 index 00000000000..baab233a219 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_text_editor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Text editor context menu"> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Seleziona Tutto" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml new file mode 100644 index 00000000000..874f7a8df9b --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra profilo" name="show_agent"/> + <menu_item_call label="Copia nome negli appunti" name="url_copy_label"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_group.xml b/indra/newview/skins/default/xui/it/menu_url_group.xml new file mode 100644 index 00000000000..ac9dab2b3c7 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra info gruppo" name="show_group"/> + <menu_item_call label="Copia gruppo negli appunti" name="url_copy_label"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_http.xml b/indra/newview/skins/default/xui/it/menu_url_http.xml new file mode 100644 index 00000000000..b8f965f2d6f --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_http.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Apri pagina web" name="url_open"/> + <menu_item_call label="Apri nel browser interno" name="url_open_internal"/> + <menu_item_call label="Apri nel browser esterno" name="url_open_external"/> + <menu_item_call label="Copia URL negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_inventory.xml b/indra/newview/skins/default/xui/it/menu_url_inventory.xml new file mode 100644 index 00000000000..0b410b4eff0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_inventory.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra elemento dell'inventory" name="show_item"/> + <menu_item_call label="Copia nome negli appunti" name="url_copy_label"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_map.xml b/indra/newview/skins/default/xui/it/menu_url_map.xml new file mode 100644 index 00000000000..096efcd1b9f --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_map.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> + <menu_item_call label="Teleportati nel luogo" name="teleport_to_location"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml new file mode 100644 index 00000000000..67a9f0b9142 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra info oggetto" name="show_object"/> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> + <menu_item_call label="Teleportati sul luogo dell'oggetto" name="teleport_to_object"/> + <menu_item_call label="Copia nome oggetto negli appunti" name="url_copy_label"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_parcel.xml b/indra/newview/skins/default/xui/it/menu_url_parcel.xml new file mode 100644 index 00000000000..e40d05f423e --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_parcel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra info appezzamento" name="show_parcel"/> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_slapp.xml b/indra/newview/skins/default/xui/it/menu_url_slapp.xml new file mode 100644 index 00000000000..2e5ad64a598 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_slapp.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Lancia questo comando" name="run_slapp"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_slurl.xml b/indra/newview/skins/default/xui/it/menu_url_slurl.xml new file mode 100644 index 00000000000..1850252669a --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_slurl.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Mostra info del luogo" name="show_place"/> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> + <menu_item_call label="Teleporta nel luogo" name="teleport_to_location"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_teleport.xml b/indra/newview/skins/default/xui/it/menu_url_teleport.xml new file mode 100644 index 00000000000..0a09090c261 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_teleport.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Teleportati in questo posto" name="teleport"/> + <menu_item_call label="Mostra Sulla mappa" name="show_on_map"/> + <menu_item_call label="Copia SLurl negli appunti" name="url_copy"/> +</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 b1eb80149e9..f9605da22ad 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -1,213 +1,326 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="Io" name="Me"> <menu_item_call label="Preferenze" name="Preferences"/> - <menu_item_call name="Manage My Account"> - <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it" /> + <menu_item_call label="Il mio Pannello di Controllo" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/> </menu_item_call> + <menu_item_call label="Compra L$" name="Buy and Sell L$"/> + <menu_item_call label="Il Mio Profilo" name="Profile"/> + <menu_item_call label="Il Mio Aspetto" name="Appearance"/> + <menu_item_check label="Il Mio Inventory" name="Inventory"/> + <menu_item_call label="Mostra Inventory su Barra Laterale" name="ShowSidetrayInventory"/> + <menu_item_call label="Le mie Gesture" name="Gestures"/> + <menu label="Il Mio Stato" name="Status"> + <menu_item_call label="Non Disponibile" name="Set Away"/> + <menu_item_call label="Non Disponibile" name="Set Busy"/> + </menu> + <menu_item_call label="Richiedi Status Amministratore" name="Request Admin Options"/> + <menu_item_call label="Lascia Status Amministratore" name="Leave Admin Options"/> + <menu_item_call label="Esci da [APP_NAME]" name="Quit"/> </menu> - <menu label="File" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Carica" name="upload"> - <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/> - <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/> - <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/> - <menu_item_call label="Multiplo ([COST]L$ per file)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Imposta i permessi di base..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Chiudi la finestra" name="Close Window"/> - <menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Salva la texture come..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Fai una fotografia" name="Take Snapshot"/> - <menu_item_call label="Salva la fotografia sul tuo disco" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Disconnetti" name="Quit"/> - </menu> - <menu label="Modifica" name="Edit"> - <menu_item_call label="Annulla" name="Undo"/> - <menu_item_call label="Ripeti" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Taglia" name="Cut"/> - <menu_item_call label="Copia" name="Copy"/> - <menu_item_call label="Incolla" name="Paste"/> - <menu_item_call label="Cancella" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Cerca..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Seleziona tutto" name="Select All"/> - <menu_item_call label="Deseleziona" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplica" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Indossa l'oggetto" name="Attach Object"/> - <menu label="Togli l'oggetto" name="Detach Object"/> - <menu label="Spogliati dei vestiti" name="Take Off Clothing"> - <menu_item_call label="Maglietta" name="Shirt"/> - <menu_item_call label="Pantaloni" name="Pants"/> - <menu_item_call label="Scarpe" name="Shoes"/> - <menu_item_call label="Calze" name="Socks"/> - <menu_item_call label="Giacca" name="Jacket"/> - <menu_item_call label="Guanti" name="Gloves"/> - <menu_item_call label="Canottiera" name="Menu Undershirt"/> - <menu_item_call label="Mutande" name="Menu Underpants"/> - <menu_item_call label="Gonna" name="Skirt"/> - <menu_item_call label="Tutti i vestiti" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gesture..." name="Gestures..."/> - <menu_item_call label="Profilo..." name="Profile..."/> - <menu_item_call label="Aspetto fisico..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Amici..." name="Friends..."/> - <menu_item_call label="Gruppi..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Preferenze..." name="Preferences..."/> - </menu> - <menu label="Visualizza" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Visualizzazione in soggettiva" name="Mouselook"/> - <menu_item_check label="Costruisci" name="Build"/> - <menu_item_check label="Camera dall'alto" name="Joystick Flycam"/> - <menu_item_call label="Reimposta la visuale" name="Reset View"/> - <menu_item_call label="Guarda l'ultimo che ha parlato" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Strumenti" name="Toolbar"/> - <menu_item_check label="Chat locale" name="Chat History"/> - <menu_item_check label="Comunica" name="Instant Message"/> - <menu_item_check label="Inventario" name="Inventory"/> - <menu_item_check label="Residenti con voice attivo" name="Active Speakers"/> - <menu_item_check label="Residenti ignorati & Oggetti" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Controlli della telecamera" name="Camera Controls"/> - <menu_item_check label="Controlli dei movimenti" name="Movement Controls"/> - <menu_item_check label="Mappa globale" name="World Map"/> - <menu_item_check label="Mini-Mappa" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Barra delle statistiche" name="Statistics Bar"/> - <menu_item_check label="Confini della proprietÃ" name="Property Lines"/> - <menu_item_check label="Linee di confini privati" name="Banlines"/> - <menu_item_check label="Proprietari dei terreni" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Suggerimenti" name="Hover Tips"> - <menu_item_check label="Mostra suggerimenti" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Suggerimenti sul terreno" name="Land Tips"/> - <menu_item_check label="Suggerimenti su tutti gli oggetti" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Evidenzia oggetti trasparenti" name="Highlight Transparent"/> - <menu_item_check label="Tracciatori" name="beacons"/> - <menu_item_check label="Nascondi le particelle" name="Hide Particles"/> - <menu_item_check label="Mostra dispositivi HUD indossati" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Zoom Avanti" name="Zoom In"/> - <menu_item_call label="Zoom Default" name="Zoom Default"/> - <menu_item_call label="Zoom Indietro" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Alterna schermo intero" name="Toggle Fullscreen"/> - <menu_item_call label="Reimposta la grandezza dell'interfaccia al default" name="Set UI Size to Default"/> + <menu label="Comunica" name="Communicate"> + <menu_item_call label="I Miei Amici" name="My Friends"/> + <menu_item_call label="I Miei Gruppi" name="My Groups"/> + <menu_item_check label="Chat Limitrofa" name="Nearby Chat"/> + <menu_item_call label="Persone Vicine" name="Active Speakers"/> + <menu_item_check label="MultiMedia Vicini" name="Nearby Media"/> </menu> <menu label="Mondo" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Corri sempre" name="Always Run"/> - <menu_item_check label="Vola" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Crea qui un landmark" name="Create Landmark Here"/> - <menu_item_call label="Imposta la tua casa qui" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleportati a casa" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Imposta come 'Assente'" name="Set Away"/> - <menu_item_call label="Imposta occupato" name="Set Busy"/> - <menu_item_call label="Ferma le animazioni sul mio avatar" name="Stop Animating My Avatar"/> - <menu_item_call label="Rilascia tutti i dispositivi" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Estratto conto..." name="Account History..."/> - <menu_item_call label="Gestisci il mio account..." name="Manage My Account..."/> - <menu_item_call label="Compra L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Il mio terreno..." name="My Land..."/> - <menu_item_call label="Informazioni sul terreno..." name="About Land..."/> - <menu_item_call label="Acquista il terreno..." name="Buy Land..."/> - <menu_item_call label="Regione/Proprietà Immobiliari..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Impostazioni dell'ambiente" name="Environment Settings"> + <menu_item_check label="Muovi" name="Movement Controls"/> + <menu_item_check label="Vista" name="Camera Controls"/> + <menu_item_call label="Info Terreno" name="About Land"/> + <menu_item_call label="Regione/Proprietà Immobiliari" name="Region/Estate"/> + <menu_item_call label="Compra Terreno" name="Buy Land"/> + <menu_item_call label="Il Mio Terreno" name="My Land"/> + <menu label="Mostra" name="Land"> + <menu_item_check label="Linee Non Accessibili" name="Ban Lines"/> + <menu_item_check label="Segnalatori" name="beacons"/> + <menu_item_check label="Linee di Confine" name="Property Lines"/> + <menu_item_check label="Proprietari della Terra" name="Land Owners"/> + </menu> + <menu label="Landmark" name="Landmarks"> + <menu_item_call label="Crea Landmark Qui" name="Create Landmark Here"/> + <menu_item_call label="Imposta Qui come Casa" name="Set Home to Here"/> + </menu> + <menu_item_call label="Teleport Casa" name="Teleport Home"/> + <menu_item_check label="Mini-Mappa" name="Mini-Map"/> + <menu_item_check label="Mappa del Mondo" name="World Map"/> + <menu_item_call label="Foto" name="Take Snapshot"/> + <menu label="Sole" name="Environment Settings"> <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="Reimposta al default della regione" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Usa l'ora della Proprietà " name="Revert to Region Default"/> <menu_item_call label="Editor dell'ambiente" name="Environment Editor"/> </menu> </menu> - <menu label="Strumenti" name="Tools"> - <menu label="Seleziona strumento" name="Select Tool"> - <menu_item_call label="Focalizza" name="Focus"/> - <menu_item_call label="Muovi" name="Move"/> - <menu_item_call label="Modifica" name="Edit"/> - <menu_item_call label="Crea" name="Create"/> - <menu_item_call label="Terra" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Seleziona solo i miei oggetti" name="Select Only My Objects"/> - <menu_item_check label="Seleziona solo gli oggetti mobili" name="Select Only Movable Objects"/> - <menu_item_check label="Seleziona solo se racchiuso" name="Select By Surrounding"/> - <menu_item_check label="Mostra selezione nascosta" name="Show Hidden Selection"/> - <menu_item_check label="Mostra raggio di luce per la selezione" name="Show Light Radius for Selection"/> - <menu_item_check label="Mostra raggio di selezione" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Allinea al righello" name="Snap to Grid"/> - <menu_item_call label="Allinea l'oggetto XY al righello" name="Snap Object XY to Grid"/> - <menu_item_call label="Usa la selezione come righello" name="Use Selection for Grid"/> - <menu_item_call label="Opzioni del righello..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Modifica parti di oggetti uniti" name="Edit Linked Parts"/> + <menu label="Build" name="BuildTools"> + <menu_item_check label="Build" name="Show Build Tools"/> + <menu label="Seleziona Strumento Build" name="Select Tool"> + <menu_item_call label="Strumento Focalizza" name="Focus"/> + <menu_item_call label="Strumento Movimento" name="Move"/> + <menu_item_call label="Strumento Modifica" name="Edit"/> + <menu_item_call label="Crea Strumento" name="Create"/> + <menu_item_call label="Strumento Terreno" name="Land"/> + </menu> + <menu label="Modifica" name="Edit"> + <menu_item_call label="Annulla" name="Undo"/> + <menu_item_call label="Rifai" name="Redo"/> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Duplica" name="Duplicate"/> + <menu_item_call label="Seleziona Tutto" name="Select All"/> + <menu_item_call label="Deseleziona" name="Deselect"/> + </menu> <menu_item_call label="Unisci" name="Link"/> - <menu_item_call label="Dividi" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Focalizza la selezione" name="Focus on Selection"/> - <menu_item_call label="Fai zoom sulla selezione" name="Zoom to Selection"/> - <menu_item_call label="Compra l'oggetto" name="Menu Object Take"> - <on_enable userdata="Compra,Prendi" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Prendi una copia" name="Take Copy"/> - <menu_item_call label="Salva nuovamente l'oggetto nel contenuto dell'oggetto" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Mostra avvisi script/finestra degli errori" name="Show Script Warning/Error Window"/> - <menu label="Ricompila gli script nella selezione" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Reimposta gli script nella selezione" name="Reset Scripts in Selection"/> - <menu_item_call label="Attiva gli script nella selezione" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Disattiva gli script nella selezione" name="Set Scripts to Not Running in Selection"/> + <menu_item_call label="Separa" name="Unlink"/> + <menu_item_call label="Focalizza su Selezione" name="Focus on Selection"/> + <menu_item_call label="Avvicina alla Selezione" name="Zoom to Selection"/> + <menu label="Oggetto" name="Object"> + <menu_item_call label="Compra" name="Menu Object Take"/> + <menu_item_call label="Prendi Copia" name="Take Copy"/> + <menu_item_call label="Salva Nuovamente nell'Inventory" name="Save Object Back to My Inventory"/> + <menu_item_call label="Salva Nuovamente Nel Contenuto Oggetto" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Script" name="Scripts"> + <menu_item_call label="Ricompila Script (Mono)" name="Mono"/> + <menu_item_call label="Ricompila gli Script(LSL)" name="LSL"/> + <menu_item_call label="Reimposta gli Script" name="Reset Scripts"/> + <menu_item_call label="Imposta gli Script in Esecuzione" name="Set Scripts to Running"/> + <menu_item_call label="Imposta gli Script Non In Esecuzione" name="Set Scripts to Not Running"/> + </menu> + <menu label="Opzioni" name="Options"> + <menu_item_check label="Modifica Parti Unite" name="Edit Linked Parts"/> + <menu_item_call label="Imposta Permessi di Upload predefiniti" name="perm prefs"/> + <menu_item_check label="Mostra Permessi Avanzati" name="DebugPermissions"/> + <menu label="Selezione" name="Selection"> + <menu_item_check label="Seleziona Solo i Miei Oggetti" name="Select Only My Objects"/> + <menu_item_check label="Seleziona Solo Oggetti Mobili" name="Select Only Movable Objects"/> + <menu_item_check label="Seleziona Se Racchiuso" name="Select By Surrounding"/> + </menu> + <menu label="Mostra" name="Show"> + <menu_item_check label="Mostra Selezione Nascosta" name="Show Hidden Selection"/> + <menu_item_check label="Mostra Raggio Luce per Selezione" name="Show Light Radius for Selection"/> + <menu_item_check label="Mostra Raggio Selezione" name="Show Selection Beam"/> + </menu> + <menu label="Griglia" name="Grid"> + <menu_item_check label="Allinea al Righello" name="Snap to Grid"/> + <menu_item_call label="Allinea Coordinate XY alla Griglia" name="Snap Object XY to Grid"/> + <menu_item_call label="Usa Selezione per la Griglia" name="Use Selection for Grid"/> + <menu_item_call label="Opzioni Griglia" name="Grid Options"/> + </menu> + </menu> + <menu label="Seleziona Parti Unite" name="Select Linked Parts"> + <menu_item_call label="Seleziona Prossima Parte" name="Select Next Part"/> + <menu_item_call label="Seleziona Parte Precedente" name="Select Previous Part"/> + <menu_item_call label="Includi Prossima Parte" name="Include Next Part"/> + <menu_item_call label="Includi Parte Precedente" name="Include Previous Part"/> + </menu> </menu> <menu label="Aiuto" name="Help"> - <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="[SECOND_LIFE] Aiuto" name="Second Life Help"/> <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Blog ufficiale Linden..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portale degli script..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Denuncia di abuso..." name="Report Abuse..."/> - <menu_item_call label="Collisioni, Spinte & Colpi..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Misuratore del lag" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Segnalazione di un bug" name="Bug Reporting"> - <menu_item_call label="Registro pubblico errori..." name="Public Issue Tracker..."/> - <menu_item_call label="Aiuto per il registro pubblico errori..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Come fare la segnalazione di un bug..." name="Bug Reporing 101..."/> - <menu_item_call label="Problematiche di sicurezza..." name="Security Issues..."/> - <menu_item_call label="Wiki QA - controllo qualità ..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Segnala un bug..." name="Report Bug..."/> - </menu> - <menu_item_call label="Informazioni su [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="Denuncia Abuso" name="Report Abuse"/> + <menu_item_call label="Segnala Bug" name="Report Bug"/> + </menu> + <menu label="Avanzato" name="Advanced"> + <menu_item_check label="Imposta non disponibile dopo 30 Minuti" name="Go Away/AFK When Idle"/> + <menu_item_call label="Ferma le Animazioni" name="Stop Animating My Avatar"/> + <menu_item_call label="Ridisegna le Texture" name="Rebake Texture"/> + <menu_item_call label="Riporta le Dimensioni dell'interfaccia ai Valori Predefiniti" name="Set UI Size to Default"/> + <menu_item_check label="Limita Distanza di Selezione" name="Limit Select Distance"/> + <menu_item_check label="Disabilita i Vincoli della Camera" name="Disable Camera Distance"/> + <menu_item_check label="Foto ad alta risoluzione" name="HighResSnapshot"/> + <menu_item_check label="Manda Foto su Disco Senza Avvisi" name="QuietSnapshotsToDisk"/> + <menu_item_check label="Comprimi le Foto su Disco" name="CompressSnapshotsToDisk"/> + <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_check label="Mostra Il Costo Visualizzazione Avatar (ARC)" name="Avatar Rendering Cost"/> + </menu> + <menu label="Evidenziazione e Visibilità " name="Highlighting and Visibility"> + <menu_item_check label="Effetto Lampeggiante Segnalatore" name="Cheesy Beacon"/> + <menu_item_check label="Nascondi Particelle" name="Hide Particles"/> + <menu_item_check label="Nascondi Selezionati" name="Hide Selected"/> + <menu_item_check label="Evidenzia Trasparente" name="Highlight Transparent"/> + <menu_item_check label="Mostra Attachment HUD" name="Show HUD Attachments"/> + <menu_item_check label="Mostra Mirino in Soggettiva" name="ShowCrosshairs"/> + <menu_item_check label="Mostra Tooltip sul Terreno" name="Land Tips"/> + </menu> + <menu label="Modalità di Rendering" name="Rendering Types"> + <menu_item_check label="Semplice" name="Simple"/> + <menu_item_check label="Alfa (Trasparenza)" name="Alpha"/> + <menu_item_check label="Albero" name="Tree"/> + <menu_item_check label="Avatar" name="Character"/> + <menu_item_check label="Superfici" name="SurfacePath"/> + <menu_item_check label="Cielo" name="Sky"/> + <menu_item_check label="Acqua" name="Water"/> + <menu_item_check label="Suolo" name="Ground"/> + <menu_item_check label="Volume" name="Volume"/> + <menu_item_check label="Erba" name="Grass"/> + <menu_item_check label="Nuvole" name="Clouds"/> + <menu_item_check label="Particelle" name="Particles"/> + <menu_item_check label="Urti" name="Bump"/> + </menu> + <menu label="Caratteristiche di Rendering" name="Rendering Features"> + <menu_item_check label="Interfaccia Utente" name="UI"/> + <menu_item_check label="Selezionati" name="Selected"/> + <menu_item_check label="Evidenziato" name="Highlighted"/> + <menu_item_check label="Texture Dinamiche" name="Dynamic Textures"/> + <menu_item_check label="Ombre dei Piedi" name="Foot Shadows"/> + <menu_item_check label="Nebbia" name="Fog"/> + <menu_item_check label="Oggetti Flessibili" name="Flexible Objects"/> + </menu> + <menu_item_check label="Esegui Thread Multipli" name="Run Multiple Threads"/> + <menu_item_call label="Pulisci la Cache di Gruppo" name="ClearGroupCache"/> + <menu_item_check label="Fluidità Mouse" name="Mouse Smoothing"/> + <menu_item_check label="Mostra IM nella Chat Limitrofa" name="IMInChat"/> + <menu label="Scorciatoie" name="Shortcuts"> + <menu_item_check label="Ricerca" name="Search"/> + <menu_item_call label="Rilascia Tasti" name="Release Keys"/> + <menu_item_call label="Imposta dimensioni Interfacca a Valori Predefiniti" name="Set UI Size to Default"/> + <menu_item_check label="Corri Sempre" name="Always Run"/> + <menu_item_check label="Vola" name="Fly"/> + <menu_item_call label="Chiudi Finestra" name="Close Window"/> + <menu_item_call label="Chiudi Tutte le Finestre" name="Close All Windows"/> + <menu_item_call label="Foto su Disco" name="Snapshot to Disk"/> + <menu_item_call label="Soggettiva" name="Mouselook"/> + <menu_item_check label="Joystick Flycam" name="Joystick Flycam"/> + <menu_item_call label="Reimposta Vista" name="Reset View"/> + <menu_item_call label="Guarda l'Ultimo che ha parlato" name="Look at Last Chatter"/> + <menu label="Seleziona Strumento Build" name="Select Tool"> + <menu_item_call label="Strumento Focalizza" name="Focus"/> + <menu_item_call label="Strumento Movimento" name="Move"/> + <menu_item_call label="Strumento Modifica" name="Edit"/> + <menu_item_call label="Crea Strumento" name="Create"/> + <menu_item_call label="Strumento Terreno" name="Land"/> + </menu> + <menu_item_call label="Avvicina" name="Zoom In"/> + <menu_item_call label="Zoom Predefinito" name="Zoom Default"/> + <menu_item_call label="Allontana" name="Zoom Out"/> + <menu_item_call label="Alterna Schermo Intero" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Mostra Impostazioni di Debug" name="Debug Settings"/> + <menu_item_check label="Mostra Menu Sviluppo" name="Debug Mode"/> + </menu> + <menu label="Sviluppo" name="Develop"> + <menu label="Console" name="Consoles"> + <menu_item_check label="Console Texture" name="Texture Console"/> + <menu_item_check label="Console di Debug" name="Debug Console"/> + <menu_item_call label="Console Notifiche" name="Notifications"/> + <menu_item_check label="Console Dimensioni Texture" name="Texture Size"/> + <menu_item_check label="Console Categoria Texture" name="Texture Category"/> + <menu_item_check label="Timer Veloci" name="Fast Timers"/> + <menu_item_check label="Memoria" name="Memory"/> + <menu_item_call label="Info Regione Sulla Console di Debug" name="Region Info to Debug Console"/> + <menu_item_check label="Camera" name="Camera"/> + <menu_item_check label="Vento" name="Wind"/> + </menu> + <menu label="Mostra Info" name="Display Info"> + <menu_item_check label="Mostra Tempo" name="Show Time"/> + <menu_item_check label="Mostra Info Rendering" name="Show Render Info"/> + <menu_item_check label="Mostra Colore sotto il Cursore" name="Show Color Under Cursor"/> + <menu_item_check label="Mostra Aggiornamenti agli Oggetti" name="Show Updates"/> + </menu> + <menu label="Forza Errori" name="Force Errors"> + <menu_item_call label="Forza Breakpoint" name="Force Breakpoint"/> + <menu_item_call label="Forza LLError e Crash" name="Force LLError And Crash"/> + <menu_item_call label="Forza Accesso Invalido alla Memoria" name="Force Bad Memory Access"/> + <menu_item_call label="Forza Ciclo Infinito" name="Force Infinite Loop"/> + <menu_item_call label="Forza il Crash del Driver" name="Force Driver Carsh"/> + <menu_item_call label="Forza Eccezione Software" name="Force Software Exception"/> + <menu_item_call label="Forza Disconnessione Viewer" name="Force Disconnect Viewer"/> + <menu_item_call label="Simula un Memory Leak" name="Memory Leaking Simulation"/> + </menu> + <menu label="Test di Rendering" name="Render Tests"> + <menu_item_check label="Spostamento Camera" name="Camera Offset"/> + <menu_item_check label="Framerate Casuale" name="Randomize Framerate"/> + <menu_item_check label="Test Frame" name="Frame Test"/> + </menu> + <menu label="Rendering" name="Rendering"> + <menu_item_check label="Assi" name="Axes"/> + <menu_item_check label="Wireframe" name="Wireframe"/> + <menu_item_check label="Illuminazione Globale" name="Global Illumination"/> + <menu_item_check label="Texture delle Animation" name="Animation Textures"/> + <menu_item_check label="Disabilita Textures" name="Disable Textures"/> + <menu_item_check label="Rendering Luci degli Attachment" name="Render Attached Lights"/> + <menu_item_check label="Visualizza Particelle dagli Attachment" name="Render Attached Particles"/> + <menu_item_check label="Gli Oggetti Brillano quando sono sotto il Cursore" name="Hover Glow Objects"/> + </menu> + <menu label="Rete" name="Network"> + <menu_item_check label="Metti in Pausa Avatar" name="AgentPause"/> + <menu_item_call label="Perdi un Pacchetto" name="Drop a Packet"/> + </menu> + <menu_item_call label="Urti, Spinte & Contatti" name="Bumps, Pushes &amp; Hits"/> + <menu label="Mondo" name="World"> + <menu_item_check label="Sostituisci al Sole della Regione" name="Sim Sun Override"/> + <menu_item_check label="Effetto Lampeggiante Indicatore" name="Cheesy Beacon"/> + <menu_item_check label="Fissa il Clima" name="Fixed Weather"/> + <menu_item_call label="Stampa la Cache degli Oggetti in Regione" name="Dump Region Object Cache"/> + </menu> + <menu label="Interfaccia Utente" name="UI"> + <menu_item_call label="Test Browser Web" name="Web Browser Test"/> + <menu_item_call label="Stampa Info per Oggetto Selezionato" name="Print Selected Object Info"/> + <menu_item_call label="Statistiche Memoria" name="Memory Stats"/> + <menu_item_check label="Doppio Click Pilota Automatico" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Debug Click" name="Debug Clicks"/> + <menu_item_check label="Debug Eventi del Mouse" name="Debug Mouse Events"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Ricarica Impostazioni Colori" name="Reload Color Settings"/> + <menu_item_call label="Test Mostra Font" name="Show Font Test"/> + <menu_item_call label="Carica da XML" name="Load from XML"/> + <menu_item_call label="Salva in XML" name="Save to XML"/> + <menu_item_check label="Mostra Nomi XUI" name="Show XUI Names"/> + <menu_item_call label="Manda IM di Test" name="Send Test IMs"/> + </menu> + <menu label="Avatar" name="Character"> + <menu label="Grab Baked Texture" name="Grab Baked Texture"> + <menu_item_call label="Iride" name="Iris"/> + <menu_item_call label="Testa" name="Head"/> + <menu_item_call label="Parte Superiore Corpo" name="Upper Body"/> + <menu_item_call label="Parte Inferiore del Corpo" name="Lower Body"/> + <menu_item_call label="Gonna" name="Skirt"/> + </menu> + <menu label="Test Personaggio" name="Character Tests"> + <menu_item_call label="Alterna la Geometria dei Personaggi" name="Toggle Character Geometry"/> + <menu_item_check label="Consenti Selezione Avatar" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Forza i Parametri ai Valori Predefiniti" name="Force Params to Default"/> + <menu_item_check label="Info delle Animation" name="Animation Info"/> + <menu_item_check label="Animazioni lente" name="Slow Motion Animations"/> + <menu_item_check label="Disabilita Livello di Dettaglio" name="Disable LOD"/> + <menu_item_check label="Mostra Schemi Collisione" name="Show Collision Skeleton"/> + <menu_item_check label="Mostra Agent Destinazione" name="Display Agent Target"/> + <menu_item_call label="Debug Texture dell'Avatar" name="Debug Avatar Textures"/> + </menu> + <menu_item_check label="Texture HTTP" name="HTTP Textures"/> + <menu_item_check label="Finestra Console al Prossimo Lancio" name="Console Window"/> + <menu_item_check label="Mostra Menu Admin" name="View Admin Options"/> + <menu_item_call label="Richiedi Status Amministrator" name="Request Admin Options"/> + <menu_item_call label="Lascia lo Stato di Admin" name="Leave Admin Options"/> + </menu> + <menu label="Amministratore" name="Admin"> + <menu label="Object"> + <menu_item_call label="Prendi Copia" name="Take Copy"/> + <menu_item_call label="Rendimi Proprietario" name="Force Owner To Me"/> + <menu_item_call label="Forza Proprietario Facoltativo?" name="Force Owner Permissive"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Blocca" name="Lock"/> + </menu> + <menu label="Appezzamento" name="Parcel"> + <menu_item_call label="Rendimi Proprietario" name="Owner To Me"/> + <menu_item_call label="Imposta al Contenuto Linden" name="Set to Linden Content"/> + <menu_item_call label="Prendi Terreno Pubblico" name="Claim Public Land"/> + </menu> + <menu label="Regione" name="Region"> + <menu_item_call label="Stampa i Dati Temporanei degli Asset" name="Dump Temp Asset Data"/> + <menu_item_call label="Salva Stato Regione" name="Save Region State"/> + </menu> + <menu_item_call label="Strumenti SuperUser" name="God Tools"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/it/mime_types_linux.xml b/indra/newview/skins/default/xui/it/mime_types_linux.xml new file mode 100644 index 00000000000..5db3eddca8f --- /dev/null +++ b/indra/newview/skins/default/xui/it/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Contenuto del Web + </label> + <tooltip name="web_tooltip"> + Questo luogo ha un contenuto Web + </tooltip> + <playtip name="web_playtip"> + Mostra il contenuto Web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + Qui c'è un video da riprodurre + </tooltip> + <playtip name="movie_playtip"> + Riproduci video + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Immagine + </label> + <tooltip name="image_tooltip"> + C'è un immagine in questo luogo + </tooltip> + <playtip name="image_playtip"> + Guarda l'immagine di questo luogo + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + In questo luogo c'è l'audio + </tooltip> + <playtip name="audio_playtip"> + Riproduci l'audio in questo luogo + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Vuoto - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Vuoto - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Immagine + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Audio/Video Ogg + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Documento PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Documento Postscript + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Pagina Web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Direttore Macromedia + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Immagine (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Immagine (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Immagine (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Immagine (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Immagine (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Immagine (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Pagina Web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Testo + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/it/mime_types_mac.xml b/indra/newview/skins/default/xui/it/mime_types_mac.xml new file mode 100644 index 00000000000..f91c9ce5bd8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Argomento nel Web + </label> + <tooltip name="web_tooltip"> + Questo luogo ha un argomento nel Web + </tooltip> + <playtip name="web_playtip"> + Mostra l'argomento del Web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Filmato + </label> + <tooltip name="movie_tooltip"> + C'è un filmato da vedere qui + </tooltip> + <playtip name="movie_playtip"> + Riproduci il filmato + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Immagine + </label> + <tooltip name="image_tooltip"> + C'è un'immagine in questo luogo + </tooltip> + <playtip name="image_playtip"> + Vedere l'immagine di questo luogo + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + C'è un audio in questo luogo + </tooltip> + <playtip name="audio_playtip"> + Riproduci l'audio di questo luogo + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Nessuno - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Nessuno - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Immagine + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Filmato (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF Document + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript Document + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Pagina Web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Immagine (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Immagine (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Immagine (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Immagine (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Immagine (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Immagine (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Pagina Web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Testo + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Filmato (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Filmato (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Filmato (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Filmato (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Filmato (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Filmato (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 26a64a49d39..2a370a2ed0f 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -9,74 +9,33 @@ <global name="implicitclosebutton"> Chiudi </global> - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - <notification functor="GenericAcknowledge" label="Messaggio di allerta sconosciuto" name="MissingAlert"> - La tua versione di [APP_NAME] non sa come visualizzare il messaggio di allerta appena ricevuto. - -Dettagli dell'errore: il messaggio di allerta '[_NAME]' non è stato trovato in notifications.xml. + <template name="okbutton"> + <form> + <button name="OK" text="$yestext"/> + </form> + </template> + <template name="okignore"/> + <template name="okcancelbuttons"> + <form> + <button name="Cancel" text="$notext"/> + </form> + </template> + <template name="okcancelignore"/> + <template name="okhelpbuttons"> + <form> + <button name="Help" text="$helptext"/> + </form> + </template> + <template name="yesnocancelbuttons"> + <form> + <button name="Yes" text="$yestext"/> + <button name="No" text="$notext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Messaggio di Notifica Sconosciuto" name="MissingAlert"> + La versione di [APP_NAME] non riesce a visualizzare la notifica che ha ricevuto. Verifica di avere l'ultima versione del Viewer installata. + +Dettaglio Errore: La notifica di nome '[_NAME]' non è stata trovata in notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -97,24 +56,18 @@ Dettagli dell'errore: il messaggio di allerta '[_NAME]' non è st <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> </notification> <notification name="BadInstallation"> - Si è verificato un errore durante l'aggiornamento di [APP_NAME]. Scarica l'ultima versione da secondlife.com. - <usetemplate - name="okbutton" - yestext="OK"/> + Errore mentre si aggiornava [APP_NAME]. [http://get.secondlife.com Scarica l'ultima versione] del Viewer. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> - Errore di rete: non è stato possibile stabilire una connessione. + Non è possibile connettersi a [SECOND_LIFE_GRID]. '[DIAGNOSTIC]' -Per favore controlla la tua connessione. - <usetemplate - name="okbutton" - yestext="OK"/> +Accertati che la tua connessione Internet stia funzionando correttamente. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MessageTemplateNotFound"> Il modello di messaggio [PATH] non è stato trovato. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="WearableSave"> Salva i cambiamenti all'attuale parte del corpo/abito? @@ -177,7 +130,7 @@ Vuoi davvero dare i diritti di modifica ai residenti selezionati? Non si possono rimuovere membri da quel ruolo. I membri devono dimettersi volontariamente dal ruolo. Confermi l'operazione? - <usetemplate ignoretext="Quando si aggiungono membri al ruolo di proprietario del gruppo." name="okcancelignore" notext="No" yestext="Si"/> + <usetemplate ignoretext="Conferma prima di aggiungere un nuovo Proprietario del Gruppo" name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="AssignDangerousActionWarning"> Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'. @@ -197,58 +150,8 @@ Aggiungi questo potere a '[ROLE_NAME]'? Aggiungi questo potere a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> - <notification name="ClickPublishHelpLand"> - Selezionare 'Pubblica in Ricerca' -Marcando questo campo si mostrerà : -- questo terreno nei risultati di ricerca -- gli oggetti pubblici di questo terreno -- questo terreno nella ricerca web - </notification> - <notification name="ClickSoundHelpLand"> - I media e la musica possono essere fruiti solo all'interno del terreno. Le opzioni dei suoni e del voice possono essere limitati al terreno o potranno essere sentiti dai residenti al di fuori del terreno, a seconda della loro categoria di accesso. Vuoi andare alla Knowledge Base per ulteriori informazioni su come impostare queste opzioni? - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Vai alla Knowledge Base" - notext="Chiudi" /> - </notification> - <notification name="ClickSearchHelpAll"> - I risultati della ricerca sono basati sul tipo di scheda nella quale ti trovi, la tua categoria di accesso, la categoria scelta e altri fattori. Per maggiori dettagli, vai alla Knowledge Base. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Vai alla Knowledge Base" - notext="Chiudi" /> - </notification> - <notification name="ClickPublishHelpLandDisabled"> - Non puoi rendere questo terreno visibile nella ricerca perchè è in una regione che non lo consente. - </notification> - <notification name="ClickPublishHelpAvatar"> - Scegliendo 'Mostra in Ricerca' verrà mostrato: -- il mio profilo nei risultati della ricerca -- un link al mio profilo nelle pagine pubbliche del gruppo - </notification> - <notification name="ClickPartnerHelpAvatar"> - Puoi proporre o cancellare una partnership con un altro/a residente attraverso il sito web [SECOND_LIFE]. - -Vai al sito web di [SECOND_LIFE] per ulteriori informazioni sulla partnership? - <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Vai alla pagina"/> - </notification> - <notification name="ClickUploadHelpPermissions"> - I tuoi permessi di base possono non funzionare nelle regioni più vecchie. - </notification> - <notification name="ClickWebProfileHelpAvatar"> - Se questo/a residente ha impostato una URL nel suo profilo puoi: - * Cliccare 'Carica' per vedere la pagina in questa finestra web. - * Cliccare Carica > 'nel browser esterno' per vedere la pagina nel vostro browser web preimpostato. - * Cliccare Carica > 'URL Principale' per ritornare alla pagina web del profile di questo/a Residente se hai cambiato pagina. - -Quando visiti il tuo profilo, puoi specificare qualunque URL come tuo profilo web e cliccare OK per impostarla. -Altri residenti possono visitare la URL che hai impostato cliccando sul tuo profilo. + <notification name="ClickUnimplemented"> + Mi dispiace, non è ancora stato implementato. </notification> <notification name="JoinGroupCanAfford"> Iscriversi a questo gruppo costa [COST]L$. @@ -259,6 +162,12 @@ Vuoi proseguire? Iscriversi a questo gruppo costa [COST]L$. Non hai abbastanza L$ per iscriverti a questo gruppo. </notification> + <notification name="CreateGroupCost"> + La Creazione di questo gruppo costerà L$100. +I Gruppi devono avere più di un membro, o saranno cancellati definitivamente. +Per favore invita altri membri entro le prossime 48 ore. + <usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Cancella" yestext="Crea un gruppo per L$100"/> + </notification> <notification name="LandBuyPass"> Pagando [COST]L$ puoi entrare in questa terra ('[PARCEL_NAME]') per [TIME] ore. Compri un pass? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -273,10 +182,10 @@ Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NA <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - ATTENZIONE: Cliccando 'vendi a tutti' rende il tuo terrono disponibile all'intera comunità di [SECOND_LIFE], anche non in questa regione. + ATTENZIONE: Cliccando 'vendi a tutti' rende questo terreno disponibile all'intera comunità [SECOND_LIFE], perfino a quelli che non sono in questa regione. -Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita. -Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME]. +Stai mettendo in vendita il terrendo selezionato di [LAND_SIZE] m². +Il prezzo di vendità è [SALE_PRICE]L$ e verrà autorizzato alla vendita a [NAME]. <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> @@ -336,6 +245,12 @@ Oggetti: [N] L'intera regione ha l'abilitazione danni. Gli script devono essere autorizzati all'esecuzione affinchè le armi funzionino. </notification> + <notification name="MultipleFacesSelected"> + Multiple facce multimediale sono attualmente selezionate. +Se prosegui con questa azione, esempi separati del media saranno impostati su facce multimediali dell'oggetto. ???!!! +Per impostare il media su una sola faccia multimediale, scegli Seleziona Faccia e clicca la faccia desiderata dell'oggetto e poi clicca Aggiungi. + <usetemplate ignoretext="Il Media sarà impostato su facce multimediali multiple" name="okcancelignore" notext="Cancella" yestext="OK"/> + </notification> <notification name="MustBeInParcel"> Devi essere dentro il terreno per impostare il suo Punto di Atterraggio. </notification> @@ -371,6 +286,10 @@ La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attach <notification name="CannotWearTrash"> Non puoi indossare abiti e parti del corpo che sono nel cestino </notification> + <notification name="MaxAttachmentsOnOutfit"> + L'oggetto non può essere attaccato. +Superato il limite di oggetti attaccati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto. + </notification> <notification name="CannotWearInfoNotComplete"> Non puoi indossare quell'elemento perchè non è ancora stato caricato. Riprova fra un minuto. </notification> @@ -385,17 +304,22 @@ Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adess <usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/> </notification> <notification name="AddClassified"> - Gli annunci appaiono nella sezione 'Annunci' della ricerca nel database e su [http://secondlife.com/community/classifieds/?lang=it-IT secondlife.com] per una settimana. -Compila il tuo annuncio e clicca 'Pubblica...' per aggiungerlo al database. -Ti verrà chiesto un prezzo da pagare quando clicchi su Pubblica. -Pagare un prezzo più alto fa sì che il tuo annuncio compaia più in alto nella lista, e che sia più facile da trovare quando la gente ricerca per parole chiavi. - <usetemplate ignoretext="Quando si aggiunge una inserzione." name="okcancelignore" notext="Annulla" yestext="OK"/> + L'inserzione apparirà nella sezione 'Annunci' della Ricerca e su [http://secondlife.com/community/classifieds secondlife.com] per una settimana. +Compila la tua inserzione, e quindi clicca 'Pubblica...' per aggiungerla all'elenco. +Ti sarà chiesto un prezzo da pagare quando clicchi Pubblica. +Pagando di più il tuo annuncio apparirà più in alto nella lista, e apparirà anche più in alto quando la gente cerca per Parole Chiavi. + <usetemplate ignoretext="Come Creare una nuova Inserzione" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="DeleteClassified"> Cancella annuncio '[NAME]'? Non ci sono rimborsi per la tariffa pagata. <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="DeleteMedia"> + Hai selezionato la cancellazione del media associato a questa faccia multimediale. +Sei sicuro di voler continuare? + <usetemplate ignoretext="Confemra la cancellazione del multimedia dall'oggetto" name="okcancelignore" notext="No" yestext="Si"/> + </notification> <notification name="ClassifiedSave"> Salva le modifiche all'annuncio [NAME]? <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> @@ -426,17 +350,17 @@ Non ci sono rimborsi per la tariffa pagata. <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="CacheWillClear"> - La Cache verrà pulita dopo il riavvio di [APP_NAME]. + La Cache verrà cancellata dopo la ripartenza di [APP_NAME]. </notification> <notification name="CacheWillBeMoved"> - La Cache verrà traslocata dopo il riavvio di [APP_NAME]. -Nota: Questo pulirà la cache. + La Cache verrà mossa dopo la ripartenza di [APP_NAME]. +Nota: Questo cancellerà anche la cache. </notification> <notification name="ChangeConnectionPort"> - Le impostazioni delle porte avranno effetto dopo il riavvio di [APP_NAME]. + Le importazioni di Porte avranno effetto dopo la ripartenza di [APP_NAME]. </notification> <notification name="ChangeSkin"> - La nuova pelle apparità dopo il riavvio di [APP_NAME]. + La nuova skin apparirà dopo la ripartenza di [APP_NAME]. </notification> <notification name="GoToAuctionPage"> Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell'asta oppure fai un'offerta? @@ -484,6 +408,11 @@ L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. <notification name="SaveBytecodeFailReason"> C'è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi. </notification> + <notification name="StartRegionEmpty"> + Oops, la tua Regione di Inizio non è stata impostata. +Per favore scrivi il nome della Regione nello spazio Regione di Inizio oppure scegli la mia ultima Ubicazione o Casa Mia come ultima ubicazione. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CouldNotStartStopScript"> Non è stato possibile lanciare o fermare lo script perchè l'oggetto che lo contiene non è stato trovato. L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. @@ -502,22 +431,21 @@ Vuoi visitare [_URL] per maggiori informazioni? <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=it </url> - <usetemplate ignoretext="Quando sto individuando hardware non supportato." name="okcancelignore" notext="No" yestext="Si"/> + <usetemplate ignoretext="L'hardware di questo computer non è supportato" name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="UnknownGPU"> - Il tuo sistema contiene una scheda grafica che attualmente non supportiamo. -Questo succede spesso con nuovi prodotti che non siamo riusciti a verificare. Probabilmente [APP_NAME] funzionerà correttamente ma forse dovrai modificare le impostazioni grafiche in modo appropriato. -(Modifica > Preferenze > Grafica). + Il tuo sistema contiene una scheda grafica ancora sconosciuta a [APP_NAME]. +Questo succede spesso con nuovo hardware che non è ancora stato verificato con [APP_NAME]. Probabilmente [APP_NAME] funzionerà correttamente, ma forse devi regolare le impostazioni grafiche a qualcosa di più appropriato. +(Io > Preferenze > Grafica). <form name="form"> - <ignore name="ignore" text="Quando sto valutando una scheda grafica sconosciuta"/> + <ignore name="ignore" text="La mia scheda grafica non è stata identificata"/> </form> </notification> <notification name="DisplaySettingsNoShaders"> - [APP_NAME] si è bloccata mentre stava inizializzando i driver grafici. -La qualità grafica verrà impostata al valore basso per evitare alcuni degli errori più comuni con i driver. -Questo però disabiliterà alcune funzioni grafiche. -Ti raccomandiamo di aggiornare i driver della tua scheda grafica. -La qualità grafica può essere aumentara in Preferenze > Grafica. + [APP_NAME] si è interrotta mentre stava inizializzando i driver grafici. +La Qualità Grafica verrà impostata a Basso per evitare alcuni errori comuni di driver. Questo disabiliterà alcune caratteristiche grafiche. +Si raccomanda di aggiornare i driver della scheda grafica. +La Qualità Grafica può essere aumentata in Preferenze > Grafica. </notification> <notification name="RegionNoTerraforming"> La regione [REGION] non consente di terraformare. @@ -570,6 +498,9 @@ Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il Espelli [AVATAR_NAME] dal tuo terreno? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/> </notification> + <notification name="EjectAvatarFromGroup"> + Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME] + </notification> <notification name="AcquireErrorTooManyObjects"> ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti. </notification> @@ -580,7 +511,7 @@ Sposta tutti gli oggetti che vuoi acquisire su una sola regione. <notification name="PromptGoToCurrencyPage"> [EXTRA] -Vuoi andare su [_URL] per maggiori informazioni su come acquistare L$? +Vai su [_URL] per informazioni sull'acquisto di L$? <url name="url"> http://secondlife.com/app/currency/?lang=it-IT </url> @@ -669,12 +600,15 @@ Attese [VALIDS] Impossibile creare il file in uscita: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Non supportiamo attualmente l'upload multiplo di file di animazione. + [APP_NAME] non supporta ancora l'upload in blocco di file di animazione. </notification> <notification name="CannotUploadReason"> Impossibile importare il file [FILE] a causa del seguente motivo: [REASON] Riprova più tardi. </notification> + <notification name="LandmarkCreated"> + Hai aggiunto "[LANDMARK_NAME]" alla tua [FOLDER_NAME] cartella. + </notification> <notification name="CannotCreateLandmarkNotOwner"> Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente. </notification> @@ -697,6 +631,9 @@ Seleziona oggetti con degli script. Seleziona oggetti con script su cui hai i permessi di modifica. </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Impossibile aprire la script dell'oggetto senza i permessi modify. + </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> Impossibile mettere 'in esecuzione' gli script. @@ -723,46 +660,44 @@ Ho cercato: [FINALQUERY] Impossibile eseguire il teleport. [REASON] </notification> - - <notification name="invalid_tport"> -C'è stato un problema nell'elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: -www.secondlife.com/support - </notification> - <notification name="invalid_region_handoff"> -C'è stato un problema nell'elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: -www.secondlife.com/support - </notification> - <notification name="blocked_tport"> -Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. - </notification> - <notification name="nolandmark_tport"> -Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark - </notification> - <notification name="timeout_tport"> -Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo. - </notification> - <notification name="noaccess_tport"> -Spiacenti, ma non hai accesso nel luogo di destinazione richiesto. - </notification> - <notification name="missing_attach_tport"> -Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti. - </notification> - <notification name="too_many_uploads_tport"> -Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata. - </notification> - <notification name="expired_tport"> -Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto. - </notification> - <notification name="expired_region_handoff"> -Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto. - </notification> - <notification name="no_host"> -Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto. - </notification> - <notification name="no_inventory_host"> -L'inventario è temporaneamente inaccessibile. - </notification> - + <notification name="invalid_tport"> + E' stato incontrato un problema eseguendo la tua richiesta di teleport. Potresti avere bisogno di riloggarti per ritentare il teleport. +Se continui a ricevere questo errore, controlla [SUPPORT_SITE]. + </notification> + <notification name="invalid_region_handoff"> + Ci sono stati problemi eseguendo il passaggio di regione. Potresti avere bisogno di riloggarti per ritentare il passaggio di regione. +Se continui a ricevere questo errore, controlla [SUPPORT_SITE]. + </notification> + <notification name="blocked_tport"> + Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. + </notification> + <notification name="nolandmark_tport"> + Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark + </notification> + <notification name="timeout_tport"> + Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo. + </notification> + <notification name="noaccess_tport"> + Spiacenti, ma non hai accesso nel luogo di destinazione richiesto. + </notification> + <notification name="missing_attach_tport"> + Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti. + </notification> + <notification name="too_many_uploads_tport"> + Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata. + </notification> + <notification name="expired_tport"> + Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto. + </notification> + <notification name="expired_region_handoff"> + Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto. + </notification> + <notification name="no_host"> + Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto. + </notification> + <notification name="no_inventory_host"> + L'inventario è temporaneamente inaccessibile. + </notification> <notification name="CannotSetLandOwnerNothingSelected"> Impossibile impostare il proprietario del terreno: Nessun terreno selezionato. @@ -800,7 +735,7 @@ Nessun terreno selezionato. Non riesco a trovare la regione dove è situato il terreno. </notification> <notification name="CannotCloseFloaterBuyLand"> - Non puoi chiudere la finestra di Acquisto Terreno finchè [APP_NAME] non stima il prezzo di questa transazione. + Non puoi chiudere la finestra di Acquisto Terreno finchè [APP_NAME] non finisce di stimare il prezzo di questa transazione. </notification> <notification name="CannotDeedLandNothingSelected"> Impossibile cedere il terreno: @@ -811,8 +746,8 @@ Nessun terreno selezionato. Nessun gruppo selezionato. </notification> <notification name="CannotDeedLandNoRegion"> - Impossibile cedere il terreno: -Non riesco a trovare la regione dove è situato il terreno. + Non è possibile donare il terreno: +Non riesco a trovare la regione in cui si trova. </notification> <notification name="CannotDeedLandMultipleSelected"> Impossibile cedere il terreno: @@ -821,11 +756,10 @@ Hai selezionato più di un terreno. Prova a selezionare un solo terreno. </notification> <notification name="ParcelCanPlayMedia"> - Questo posto offre contenuto multimediale in streaming. -Ricevere lo streaming multimediale richiede una connessione internet veloce. + Questo posto può mostrare contenuto multimediale in streaming. Questo richiede una connessione Internet veloce. -Vuoi vedere il contenuto multimediale quando è disponibile? -(Puoi cambiare questa opzione in seguito scegliendo Preferenze > Audio & Video.) +Mostra contenuto multimediale quando disponibile? +(Puoi cambiare questa opzione anche successivamente su Preferenze > Privacy.) <usetemplate name="okcancelbuttons" notext="Disabilita" yestext="Abilita MultiMedia"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -856,8 +790,8 @@ Non hai i permessi per rilasciare questo terreno. I terreni di tua proprietà vengono visualizzati in verde. </notification> <notification name="CannotReleaseLandRegionNotFound"> - Impossibile abbandonare il terreno: -Non riesco a trovare la regione dove è situato il terreno. + Non è possibile abbandonare il terreno: +Non riesco a trovare la regione in cui si trova. </notification> <notification name="CannotReleaseLandNoTransfer"> Impossibile abbandonare il terreno: @@ -894,12 +828,12 @@ Dividi il terreno? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="CannotDivideLandNoRegion"> - Impossibile dividere il terreno: -Non riesco a trovare la regione dove è situato. + Non è possibile suddividere il terreno: +Non riesco a trovare la regione in cui si trova. </notification> <notification name="CannotJoinLandNoRegion"> - Impossibile unire il terreno: -Non riesco a trovare la regione dove è situato. + Non è possibile unire il terreno: +Non riesco a trovare la regione in cui si trova. </notification> <notification name="CannotJoinLandNothingSelected"> Impossibile unire il terreno: @@ -924,17 +858,6 @@ Dovrai reimpostare il nome e le opzioni del nuovo terreno. Unisci il terreno? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> - <notification name="ShowOwnersHelp"> - Mostra i proprietari: -colora i terreni per mostrare i diversi tipi di proprietari. - -Verde = il tuo terreno -Acqua = la terra del tuo gruppo -Rosso = posseduta da altri -Giallo = in vendita -Viola = in asta -Grigia = pubblica - </notification> <notification name="ConfirmNotecardSave"> Questa notecard deve essere salvata prima che l'elemento possa essere copiato o visualizzato. Salva la notecard? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -956,13 +879,13 @@ Grigia = pubblica Impossibile salvare '[NAME]' nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo. </notification> <notification name="CannotSaveToAssetStore"> - Impossibile salvare [NAME] nel database centrale. -Normalmente questo problema è temporaneo. Riprova a generare la parte indossabile e a salvarla fra qualche minuto. + Non è possibile salvare [NAME] nel database centrale degli asset. +Questo normalmente è un problema temporaneo. Riadatta e salva i vestiti e riprova fra qualche minuto. </notification> <notification name="YouHaveBeenLoggedOut"> Sei stato sconnesso da [SECOND_LIFE]: [MESSAGE] -Puoi ancora vedere i tuoi IM e la chat cliccando 'Vedi IM & Chat'. Altrimenti, clicca 'Esci' per uscire immediatamente da [APP_NAME]. +Puoi ancora vedere gli IM e la chat cliccando 'Vedi IM & Chat'. Altrimenti clicca 'Esci' per uscire immediatamente da[APP_NAME]. <usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM & Chat"/> </notification> <notification name="OnlyOfficerCanBuyLand"> @@ -1121,29 +1044,36 @@ Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'? <notification name="ErrorMessage"> [ERROR_MESSAGE] </notification> - <notification name="AvatarMoved"> - La tua locazione [TYPE] non è al momento disponibile. -[HELP] -Il tuo avatar è stato spostato in una regione vicina. + <notification name="AvatarMovedDesired"> + L'ubicazione desiderata non è attualmente disponibile. Sei stato trasportato in una regione vicina. + </notification> + <notification name="AvatarMovedLast"> + La tua ultima ubicazione non è al momento disponibile. +Sei stato trasferito in una regione vicina . + </notification> + <notification name="AvatarMovedHome"> + L'ubicazione di casa tua non è al momento disponibile. +Sei stato trasferito in un'ubicazione vicina. +Potresti impostare una nuova ubicazione. </notification> <notification name="ClothingLoading"> - I tuoi vestiti stanno ancora scaricandosi. -Puoi usare [SECOND_LIFE] normalmente e gli altri utenti ti vedranno correttamente. + Sto ancora scaricando i tuoi abiti. +Puoi comunque usare [SECOND_LIFE] normalmente e gli altri ti vedranno correttamente. <form name="form"> - <ignore name="ignore" text="Qualora gli abiti impieghino troppo tempo a caricarsi."/> + <ignore name="ignore" text="Lo scarico degli abiti sta impiegando parecchio tempo"/> </form> </notification> <notification name="FirstRun"> - L'installazione di [APP_NAME] è completata. + L'installazione di [APP_NAME] è completa. -Se questa è la prima volta che usi [SECOND_LIFE], avari bisogno di creare un account prima di poterti collegare. -Vai su [https://join.secondlife.com/index.php?lang=it-IT secondlife.com] per creare un nuovo account? +Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa fare il log in. +Vuoi ritornare su [http://join.secondlife.com secondlife.com] per creare un nuovo account? <usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/> </notification> <notification name="LoginPacketNeverReceived"> - Ci sono stati problemi durante la connessione. Potrebbero esserci problemi con la tua connessione ad internet oppure con i server di [SECOND_LIFE]. + Ci sono problemi di connessione. Può darsi che siano nella tua connessione Internet oppure in [SECOND_LIFE_GRID]. -Puoi controllare la tua connessione internet e riprovare fra qualche minuto, oppure cliccare su Aiuto per collegarti al nostro sito di supporto, oppure cliccare teleporta per cercare di teleportarti a casa. +Puoi controllare la tua connessione Internet e riprovare fra qualche minuto, oppure cliccare Aiuto per vedere il [SUPPORT_SITE], oppure cliccare Teleport per tentare di teleportarti a casa. <url name="url"> http://it.secondlife.com/support/ </url> @@ -1165,10 +1095,10 @@ Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi. [NAME] [PRICE]L$ Non hai abbastanza L$ per farlo. </notification> <notification name="GrantedModifyRights"> - Ti sono stati accordati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. + [NAME] ti ha dato il permesso di editare i suoi oggetti. </notification> <notification name="RevokedModifyRights"> - Ti sono stati revocati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. + Ti è stato revocato il permesso di modificare gli oggetti di [NAME] </notification> <notification name="FlushMapVisibilityCaches"> Questo reinizializzerà la cache della mappa di questa regione. @@ -1249,91 +1179,105 @@ Imposta l'oggetto per la vendita e riprova. <notification name="DownloadWindowsMandatory"> E' disponibile una nuova versione di [APP_NAME]. [MESSAGE] -Devi scaricare questo aggiornamento per usare [APP_NAME]. +Devi scaricarla per usare [APP_NAME]. <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l'aggiornamento"/> </notification> <notification name="DownloadWindows"> E' disponibile una versione aggiornata di [APP_NAME]. [MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . +Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità . <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> E' disponibile una versione aggiornata di [APP_NAME]. [MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . +Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità . <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> </notification> + <notification name="DownloadLinuxMandatory"> + Una nuova versione di [APP_NAME] è disponibile. +[MESSAGE] +Devi scaricare questo aggiornamento per utilizzarlo [APP_NAME]. + <usetemplate name="okcancelbuttons" notext="Esci" yestext="Download"/> + </notification> + <notification name="DownloadLinux"> + E' disponibile una versione aggiornata di [APP_NAME]. +[MESSAGE] +Questo aggiornamento non è necessario, ti consigliamo di installarlo per migliorare il rendimento e la stabilità . + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/> + </notification> + <notification name="DownloadLinuxReleaseForDownload"> + E' disponibile una versione aggiornata di [APP_NAME]. +[MESSAGE] +Questo aggiornamento non è obbligatorio, ma è consigliata l'installazione per migliorare le prestazioni e l'affidabilità . + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/> + </notification> <notification name="DownloadMacMandatory"> E' disponibile una nuova versione di [APP_NAME]. [MESSAGE] -Devi scaricare questo aggiornamento per usare [APP_NAME]. +Devi scaricarla per usare [APP_NAME]. -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? +Scarico nella cartella Applicazioni? <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l'aggiornamento"/> </notification> <notification name="DownloadMac"> E' disponibile una versione aggiornata di [APP_NAME]. [MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . +Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità . -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? +Scarico nella cartella Applicazioni? <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> </notification> <notification name="DownloadMacReleaseForDownload"> E' disponibile una versione aggiornata di [APP_NAME]. [MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . +Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità . -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? +Scarico nella cartella Applicazioni? <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> </notification> <notification name="DeedObjectToGroup"> La cessione di questo oggetto farà in modo che il gruppo: * Riceva i L$ pagati all'oggetto - <usetemplate ignoretext="Quando cedi oggetti ai gruppi." name="okcancelignore" notext="Annulla" yestext="Cedi"/> + <usetemplate ignoretext="Conferma la donazione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/> </notification> <notification name="WebLaunchExternalTarget"> - Apri il tuo browser web per vedere questo contenuto? - <usetemplate ignoretext="Quando apri il browser di sistema per vedere una pagina web." name="okcancelignore" notext="Annulla" yestext="OK"/> + Vuoi aprire il browser per vedere questo contenuto? + <usetemplate ignoretext="Lancia il browser per vedere la pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - Vuoi andare su www.secondlife.com per gestire il tuo account? - <usetemplate ignoretext="Quando lanci il browser web per gestire il tuo account." name="okcancelignore" notext="Annulla" yestext="OK"/> + Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account? + <usetemplate ignoretext="Lancia il browser pe gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza. - <usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki sui problemi di sicurezza." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Lancia il browser per imparare a segnalare un Problema di Sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchQAWiki"> Visita il controllo di qualità Wiki [SECOND_LIFE]. - <usetemplate ignoretext="Quando lanci il browser web per vedere il controllo di qualità Wiki." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Lancia il browser per vedere il QA Wiki" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchPublicIssue"> Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi. - <usetemplate ignoretext="Quando lanci il browser web per vedere il registro pubblico dei problemi." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> - </notification> - <notification name="WebLaunchPublicIssueHelp"> - Visita la Wiki di [SECOND_LIFE] per le informazioni su come usare il registro pubblico dei problemi. - <usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki del registro pubblico dei problemi." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + <usetemplate ignoretext="Lancia il browser per vedere il Registro dei Problemi Pubblici" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> </notification> <notification name="WebLaunchSupportWiki"> Vai al blog ufficiale Linden, per le ultime notizie ed informazioni. - <usetemplate ignoretext="Quando lanci il browser web per vedere il blog." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchLSLGuide"> - Vai alla guida dello scripting per l'aiuto sullo scripting? - <usetemplate ignoretext="Quando lanci il browser web per vedere la guida dello scripting." name="okcancelignore" notext="Annulla" yestext="OK"/> + Vuoi aprire la Guida per lo Scripting per avere aiuto con lo scripting? + <usetemplate ignoretext="Lancia il browser per vedere la Guida per lo Scripting" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="WebLaunchLSLWiki"> - Vai al portale LSL per aiuto sullo scripting? - <usetemplate ignoretext="Quando lanci il browser web per vedere il portale LSL." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + Vuoi visitare il Portale LSL per avere aiuto con lo Scripting? + <usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> </notification> <notification name="ReturnToOwner"> Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti. *ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati! - <usetemplate ignoretext="Quando restituisci gli oggetti ai loro proprietari." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Conferma la restituzione degli oggetti ai loro proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="GroupLeaveConfirmMember"> Sei attualmente un membro del gruppo [GROUP]. @@ -1345,14 +1289,14 @@ Vuoi lasciare il gruppo? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti gli utenti"/> </notification> <notification name="MuteLinden"> - Mi dispiace, ma non puoi mutare un Linden. + Mi dispiace, non puoi bloccare un Linden. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CannotStartAuctionAlreadyForSale"> Non è possibile mettere in vendita all'asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all'asta. </notification> - <notification label="Non è stato possibile mutare l'oggetto per nome" name="MuteByNameFailed"> - Hai già mutato questo nome. + <notification label="E' fallito Il Blocco dell'Oggetto" name="MuteByNameFailed"> + Hai già bloccato questo nome. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> @@ -1369,16 +1313,13 @@ Vuoi cancellare quell'elemento? <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="BusyModeSet"> - Impostata la modalità 'Occupato'. -La chat e i messaggi verranno nascosti. I messaggi IM riceveranno la risposta impostata per la modalità 'Occupato'. Tutte le offerte di teleport verranno declinate. Tutte le offerte di inventario andranno nel cestino. - <usetemplate ignoretext="Quando imposti la modalità 'occupato'." name="okignore" yestext="OK"/> + E' stata impostata la modalità Non Disponibile. +La Chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non Disponibile. Tutte le offerte di teleport verranno declinate. Tutte le offerte di Inventory andranno nel Cestino. + <usetemplate ignoretext="Cambio il mio stato in Non Disponibile" name="okignore" yestext="OK"/> </notification> <notification name="JoinedTooManyGroupsMember"> - Sei membro di troppi gruppi per poterti unire ad uno nuovo. -Abbandona almeno un gruppo prima di unirti a questo, oppure declina l'offerta. -Per abbandonare un gruppo seleziona l'opzione 'Gruppi..' dal menu 'Modifica'. -[NAME] ti ha invitato ad unirti ad un gruppo come membro. - + Hai raggiunto il limite massimo di gruppi. Devi lasciare un gruppo prima di poterti unire a questo, oppure puoi declinare questa offerta. +[NAME] ti ha invitato ad unirti al gruppo come membro. [INVITE] <usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/> </notification> @@ -1444,7 +1385,15 @@ Per abbandonare un gruppo seleziona l'opzione 'Gruppi..' dal menu </notification> <notification name="TeleportFromLandmark"> Confermi di volerti teleportare? - <usetemplate ignoretext="Quando ti teleporti da un landmark dell'inventario." name="okcancelignore" notext="Annulla" yestext="Teleportati"/> + <usetemplate ignoretext="Conferma il teleport verso un Landmark" name="okcancelignore" notext="Annulla" yestext="Teleportati"/> + </notification> + <notification name="TeleportToPick"> + Teleport a [PICK]? + <usetemplate ignoretext="Conferma il teleport verso l'ubicazione nei Posti Consigliati" name="okcancelignore" notext="Annulla" yestext="Teleport"/> + </notification> + <notification name="TeleportToClassified"> + Teleport a [CLASSIFIED]? + <usetemplate ignoretext="Confermo il teleport verso questa ubicazione negli Annunci" name="okcancelignore" notext="Cancella" yestext="Teleport"/> </notification> <notification label="Manda un messaggio a tutti nella tua proprietà " name="MessageEstate"> Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà . @@ -1513,9 +1462,7 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età . Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked_KB"> Non sei ammesso in questa regione a causa della tua categoria d'accesso. @@ -1524,37 +1471,26 @@ Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di ac <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it </url> - <usetemplate - name="okcancelignore" - yestext="Vai alla Knowledge Base" - notext="Chiudi" - ignoretext="Quando l'entrata nella regione è bloccata a causa delle categorie di accesso."/> + <usetemplate ignoretext="Non posso entrare in questa Regione, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/> </notification> <notification name="RegionEntryAccessBlocked_Notify"> Non sei ammesso in questa regione a causa della tua categoria d'accesso. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Non puoi entrare in quella regione a causa delle tue preferenze sulle categorie di accesso. - -Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. - <form name="form"> - <button - name="OK" - text="Cambia le preferenze"/> - <button - default="true" - name="Cancel" - text="Chiudi"/> - <ignore name="ignore" text="Quando l'entrata in una regione è bloccata a causa delle preferenze delle categorie di accesso."/> - </form> + Non ti è consentito entrare in quella Regione a causa della tua Categoria di Accesso impostata nelle Preferenze. + +Puoi cliccare su 'Cambia Preferenze' per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me > Preferenze > Generali. + <form name="form"> + <button name="OK" text="Cambia Preferenza"/> + <button default="true" name="Cancel" text="Chiudi"/> + <ignore name="ignore" text="Le mie preferenze attivate nel Rating (Classificazione) prevengono il mio ingresso in una Regione"/> + </form> </notification> <notification name="LandClaimAccessBlocked"> Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età . Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandClaimAccessBlocked_KB"> Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso. @@ -1563,32 +1499,22 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it </url> - <usetemplate - name="okcancelignore" - yestext="Vai alla Knowledge Base" - notext="Chiudi" - ignoretext="Quando l'acquisizione della terra è bloccata a causa delle categorie di accesso."/> + <usetemplate ignoretext="Non posso richiedere questo Terreno, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/> </notification> <notification name="LandClaimAccessBlocked_Notify"> Non puoi prendere possesso di questa terra a causa della tua categoria di accesso. </notification> <notification name="LandClaimAccessBlocked_Change"> - Non puoi prendere possesso di questa terra a causa della tua categoria di accesso. + Non puoi richiedere questo Terreno a causa delle tue preferenze di Categoria di Accesso. -Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. - <usetemplate - name="okcancelignore" - yestext="Cambia le preferenze" - notext="Chiudi" - ignoretext="Quando l'acquisizione della terra è bloccata a causa delle preferenze delle categorie di accesso."/> +Puoi cliccare su 'Cambia Preferenze' per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me > Preferenze > Generali. + <usetemplate ignoretext="Le mie preferenze di Categoria di Accesso mi impediscono di chiedere questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/> </notification> <notification name="LandBuyAccessBlocked"> Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età . Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandBuyAccessBlocked_KB"> Non puoi acquistare questo terreno a causa della tua categoria di accesso. @@ -1597,27 +1523,19 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it </url> - <usetemplate - name="okcancelignore" - yestext="Vai alla Knowledge Base" - notext="Chiudi" - ignoretext="Quando un acquisto di terra è bloccato a causa delle categorie di accesso."/> + <usetemplate ignoretext="Non posso comprare questo Terreno , a causa delle restrizioni della Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/> </notification> <notification name="LandBuyAccessBlocked_Notify"> Non puoi acquistare questa land a causa della tua categoria di accesso. </notification> <notification name="LandBuyAccessBlocked_Change"> - Non puoi acquistare questa terra a causa delle tue preferenze sulle categorie di accesso . + Non puoi comprare questo Terreno a causa delle tue preferenze di Categoria di Accesso. -Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. - <usetemplate - name="okcancelignore" - yestext="Cambia le preferenze" - notext="Chiudi" - ignoretext="Quando un acquisto di terra è bloccato a causa delle preferenze sulle categorie di accesso."/> +Puoi cliccare su 'Cambia Preferenze' per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me > Preferenze > Generali. + <usetemplate ignoretext="Le mie Preferenze di Accesso mi impediscono l'acquisto di questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/> </notification> <notification name="TooManyPrimsSelected"> - "Hai selezionato troppi prims. Seleziona [MAX_PRIM_COUNT] o meno prims e riprova." + Hai selezionato troppi prim. Seleziona non più di [MAX_PRIM_COUNT] prim e riprova <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> @@ -1650,19 +1568,11 @@ Pubblica questo annuncio adesso per [AMOUNT]L$? </notification> <notification name="SetClassifiedMature"> Queste inserzioni includono contenuto Mature? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="No" - yestext="Si"/> + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/> </notification> <notification name="SetGroupMature"> Questo gruppo include contenuto Mature? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="No" - yestext="Si"/> + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/> </notification> <notification label="Conferma il riavvio" name="ConfirmRestart"> Vuoi veramente far ripartire la regione in 2 minuti? @@ -1676,231 +1586,12 @@ Pubblica questo annuncio adesso per [AMOUNT]L$? <button name="Cancel" text="Annulla"/> </form> </notification> - <notification label="Blocca il terraforming" name="HelpRegionBlockTerraform"> - Se questa casella è selezionata, i proprietari dei terreni non potranno terraformare il loro terreno indipendentemente dall'impostazione locale di 'Modifica Terreno'. - -Impostazione base: spenta - </notification> - <notification label="Blocca il volo" name="HelpRegionBlockFly"> - Se questa casella è selezionata, le persone non potranno volare in questa regione indipendentemente dall'impostazione locale di 'Volo'. - -Impostazione base: spenta - </notification> - <notification label="Cambiamento in massa delle autorizzazioni del contenuto" name="HelpBulkPermission"> - Lo strumento delle autorizzazioni in massa ti aiuta a modificare rapidamente i permessi su oggetti multipli nel contenuto dell'oggetto/i selezionato/i. Ma tieni presente che stai solo impostando autorizzazioni per gli oggetti presenti nel contenuto e non le autorizzazioni per l'oggetto/i che li contiene. - -Inoltre, le autorizzazioni non vengono applicate agli oggetti a loro volta contenuti all'interno degli oggetti di cui stiamo cambiando i permessi. Il cambiamento sarà operato solo ed esclusivamente alla profondità di un livello. - -È possibile scegliere selettivamente quali tipi di oggetti modificare usando questa lista di controllo dei 'Tipi di contenuto'. Le fotografie sono incluse quando si seleziona textures. - -* Questo strumento riuscirà solo a modificare le autorizzazioni degli oggetti che già tu puoi cambiare. -* Non è possibile impostare in aumento, per il successivo proprietario, alcuna autorizzazione che non sia già in essere. -* I permessi impostabili per il successivo proprietario sono solo richieste di cambiamento. Se un qualsiasi oggetto non può assumere tutte le nuove autorizzazioni impostate, nessuno dei suoi permessi cambierà . - -Quando si è pronti a cambiare i permessi in massa, fare clic su 'Applica' e attendere la visualizzazione dei risultati. - -Se si chiude la finestra dello strumento autorizzazioni, mentre le autorizzazioni si stanno modificando, l'operazione si arresterà . - </notification> - <notification label="Consenti Danni" name="HelpRegionAllowDamage"> - Se questa casella è selezionata, il sistema del livello vitale su tutti i terreni sarà abilitato indipendentemente dalle impostazioni locali. Se la casella è lasciata vuota i proprietari dei singoli terreni individuali potranno comunque essere in grado di attivare il sistema di livello vitale sulla loro terra. - -Impostazione base: spenta - </notification> - <notification label="Limite avatar" name="HelpRegionAgentLimit"> - Imposta il massimo numero di avatar consentito in questa regione. -Le prestazioni possono variare a seconda del numero totale di avatar presenti. - -Impostazione base: 40 - </notification> - <notification label="Coefficiente bonus oggetti" name="HelpRegionObjectBonus"> - Il coefficiente bonus oggetti è un moltiplicatore per i prim consentiti su ogni terreno. -Si può specificare da 1 a 10. Impostandolo ad 1, ogni terreno di 512m² consentià 117 oggetti. Impostandolo a 2, ogni terreno di 512m² ne consentirà 234 o il doppio, e così via. Il numero complessivo di oggetti consentiti per una regione rimane comunque 15.000 indipendentemente dal coefficiente di bonus. -Una volta impostato, fai attenzione che abbassare il bonus può causare la cancellazione o restituzione di oggetti. - -Impostazione base: 1.0 - </notification> - <notification label="Categoria di accesso" name="HelpRegionMaturity"> - Imposta la categoria di accesso della regione, come mostrato nella barra dei menu nella parte superiore dello schermo di qualsiasi residente e nelle tooltip sulla mappa di [SECOND_LIFE], quando il cursore si muove su questa regione. Questa impostazione influenza anche l'accesso a questa regione e i risultati della ricerca. Altri residenti possono entrare solo in regioni o visualizzare risultati della ricerca con la stessa categoria di accesso che hanno scelto nella loro preferenze. - -Può trascorrere un po' di tempo prima che questa modifica si rifletta sulla mappa. - </notification> - <notification label="Limita gli urti" name="HelpRegionRestrictPushObject"> - Questa casella limita per tutta la regione i permessi di urto (spinte). -Se abilitata, i residenti possono essere urtati/spinti solo da sè stessi o dal proprietario del terreno. -(La spinta si riferisce all'uso della funzione LSL llPushObject()) - -Impostazione base: spenta - </notification> - <notification label="Unisci/Dividi terreno" name="HelpParcelChanges"> - Questa casella imposta se i terreni non posseduti dal possessore della proprietà immobiliare possano essere unite o divise. -Se questa opzione è deselezionata: - * Soltanto i possessori o i manager della proprietà immobiliare possono unire o dividere i terreni. - * Possono solo unire o dividere terreni che appartengono al proprietario, o ad un gruppo dove hanno poteri appropriati. -Se questa opzione è selezionata: - * Tutti i proprietari del terreno possono unire o dividere i terreni che possiedono. - * Per i terreni di proprietà del gruppo, solo coloro con poteri appropriati possono unire o dividere il terreno. - -Impostazione base: Selezionata - </notification> - <notification label="Non mostrare in ricerca" name="HelpRegionSearch"> - Selezionare questa casella bloccherà i proprietari dei terreni dal mettere in lista i loro terreni nella ricerca - -Impostazione base: spenta - </notification> <notification label="Cambiato il contenuto Mature" name="RegionMaturityChange"> La classificazione del contenuto Mature di questa regione è stata aggiornata. Può essere necessario un po' di tempo prima che questo cambiamento sia visibile sulle mappe. - </notification> - <notification label="Rivendita dei Terreni" name="HelpRegionLandResell"> - I possessori e i manager della proprietà immobiliare possono vendere tutte le terre di cui sono proprietari. -Se questa opzione è lasciata deselezionata i compratori non potranno rivendere le proprie terre in questa regione. -Se questa opzione è selezionato i compratori possono rivendere i loro terreni in questa regione. - -Impostazione base: Non consentire - </notification> - <notification label="Disabilita gli script" name="HelpRegionDisableScripts"> - Se le prestazioni di una sim sono basse, probabilmente è colpa di uno script. Apri la 'Barra delle statistiche' (Ctrl+Shift+1). Controlla il FPS della fisica del simulatore. -Se è più basso di 45, apri il pannello 'Time' (Tempi) collocato ln fondo alla 'Barra delle statistiche' -Se il tempo per gli script è di 25 ms o più alto, clicca sul bottone 'Visualizza l'elenco degli script più pesanti...'. Ti verrà dato il nome e l'ubicazione degli script che probabilmente causano una cattiva prestazione. - -Selezionare la casella della disabilitazione script e, premendo il bottone applica, disabilitare temporaneamente tutti gli script in questa regione. Questo è necessario per poterti recare verso l'ubicazione dello script definito nell'elenco come 'script più pesante'. Una volta arrivato all'oggetto, studia lo script per capire se è quello che sta causando il problema. Potresti dover contattare il proprietario dello script oppure cancellare o restituire l'oggetto. -Disabilita la casella e quindi premere applica per riattivare gli script nella regione. - -Impostazione base: spento - </notification> - <notification label="Disabilita le collisioni" name="HelpRegionDisableCollisions"> - Quando le prestazioni della sim sono basse, può darsi che la colpa sia di oggetti fisici. -Apri la 'Barra delle statistiche' (Ctrl+Shift+1). -Controlla il FPS della fisica del simulatore. -Se è più basso di 45, apri il pannello 'Time' (Tempi) collocato in fondo alla 'Barra delle statistiche'. -Se il tempo della sim (fisica) risulta 20 ms o più, clicca sul bottone 'mostra gli oggetti che collidono di più'. -Ti verranno dati il nome e l'ubicazione degli oggetti fisici che possono causare una cattiva prestazione. - -Selezionare la casella disabilita collisioni e, premendo il bottone applica, disabilitare temporaneamente le collisioni oggetto-oggetto. Questo è necessario per poterti recare verso l'ubicazione dell'oggetto che sta collidendo eccessivamente. -Una volta arrivato sul posto, studia l'oggetto - sta collidendo costantemente con altri oggetti? Potresti dover contattare il proprietario dell'oggetto oppure cancellare o restituire l'oggetto. -Disabilitare la casella disabilita collisioni e quindi premere applica per riattivare le collisioni nella regione. - -Impostazione base: spento - </notification> - <notification label="Disabilita la fisica" name="HelpRegionDisablePhysics"> - Disabilitare la fisica è simile alla disabilitazione delle collisioni eccetto che tutte le simulazioni fisiche sono disabilitate. Questo significa che non solo gli oggetti cessano di collidere, ma anche gli avatar non riusciranno più a muoversi. - -Questo dovrebbe essere utilizzato solo se il 'disabilita collisioni' non restituisce abbastanza prestazioni alla regione dopo aver cercato un problema fisico o un oggetto che collide eccessivamente. - -Fai attenzione a riabilitare la fisica quando hai terminato, altrimenti nessun avatar riuscirà a muoversi. - -Impostazione base: spento - </notification> - <notification label="Oggetti con maggiori collisioni" name="HelpRegionTopColliders"> - Mostra una lista di oggetti che sperimentano la maggior quantità di potenziali collisioni oggetto-oggetto. Questi oggetti possono abbassare le prestazioni. -Seleziona Visualizza > Barra della statistiche e guarda sotto Simulator (Simulatore) > Time (Tempi) > Physics Time (Tempo Sim fisica) per controllare se un tempo di più di 20 ms è impiegato nella fisica. - </notification> - <notification label="Script pesanti" name="HelpRegionTopScripts"> - Mostra una lista degli oggetti che occupano la maggior parte del loro tempo eseguendo script LSL. Questi oggetti possono abbassare le prestazioni. -Seleziona Visualizza > Barra della statistiche e guarda sotto Simulator (Simulatore) > Time (Tempi) > Script Time (Tempo Script) per controllare se un tempo di più di 20 ms è impiegato per gli script. - </notification> - <notification label="Fai ripartire la regione" name="HelpRegionRestart"> - Fai ripartire i processi del server che gestisce questa regione dopo un avvertimento di due minuti. Tutti i residenti nella regione verranno scollegati. -La regione salverà i suoi dati e dovrebbe tornare attiva entro 90 secondi. - -Far ripartire la regione non risolverà i problemi maggiori delle prestazioni e dovrebbe essere fatta solo se necessario. - </notification> - <notification label="Altezza dell'acqua" name="HelpRegionWaterHeight"> - Questa è l'altezza in metri del mare dove deve apparire l'acqua. -Se questa impostazione è diversa da 20 e l'acqua circonda il confine di terra o acqua della tua sim, vedrai una discontinuità fra la sim e il mare. - -Impostazione base: 20 - </notification> - <notification label="Sollevamento terreno" name="HelpRegionTerrainRaise"> - Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono alzare il loro terreno partendo dall'altezza preimpostata. - -Impostazione base: 4 - </notification> - <notification label="Abbassamento terreno" name="HelpRegionTerrainLower"> - Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono abbassare il loro terreno partendo dall'altezza preimpostata. - -Impostazione base: -4 - </notification> - <notification label="Importa terreno RAW" name="HelpRegionUploadRaw"> - Questo bottone importa un file .RAW nella regione in cui sei. -Il file deve avere le corrette dimensioni (RGB, 256x256) e 13 canali. Il modo migliore per creare un file di terreno è di scaricare un file RAW esistente. Un buon primo passo è quello di modificare il canale del rosso (altezza della terra), ed importarlo. - -L'importazione può impiegare fino a 45 secondi. Nota che importare un file del terreno *non muoverà * gli oggetti che sono sulla sim, soltanto il terreno stesso e i permessi associati agli appezzamenti. -Questo potrebbe far sì che gli oggetti vadano sotto terra. - -Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. - </notification> - <notification label="Scarica il terreno RAW" name="HelpRegionDownloadRaw"> - Questo bottone scarica un file che contiene i dati dell'altezza, delle dimensioni, dello stato di vendita del terreno e di alcuni permessi degli appezzamenti di questa regione. -Aprendo questo file in un programma come Photoshop devi specificare le dimensioni che sono: RGB, 256x256 con 13 channels. Questo file del terreno non può essere aperto in nessun altro modo. - -Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. - </notification> - <notification label="Usa il sole della proprietà " name="HelpRegionUseEstateSun"> - Questa casella fa si che la posizione del sole in questa regione coincida con la posizione del sole nel resto della proprietà . - -Impostazione base: attivo - </notification> - <notification label="Sole fisso" name="HelpRegionFixedSun"> - Questa casella imposta la posizione del sole ad un valore definito nel cursore delle fasi e fa in modo che il sole non si muova. - -Impostazione base: spento - </notification> - <notification label="Crea il Terreno" name="HelpRegionBakeTerrain"> - Questo bottone salva l'attuale forma del terreno come impostazione base per la regione. Una volta creato, il terreno può riassumere la forma base ogni volta che che tu o altri dovessero usare l'opzione 'Reimposta' della modifica del terreno. -Il terreno creato è anche il punto intermedio dei limiti di sollevamento ed abbassamento terreno. - </notification> - <notification label="Manager della proprietà " name="HelpEstateEstateManager"> - Un manager della proprietà è un residente a cui avete delegato il controllo di una regione o di una proprietà . Un manager della proprietà può cambiare qualunque impostazione in queste finestre, eccezion fatta per l'importazione, l'esportazione e la creazione del terreno. In particolare, possono consentire o bloccare l'accesso ai residenti nella tua proprietà . - -I manager della proprietà possono essere soltanto aggiunti o rimossi dal possessore della proprietà e non possono farlo loro l'un l'altro. Scegli solo residenti di cui ti fidi come manager della proprietà , dato che tu sarai responsabile per le loro azioni. - </notification> - <notification label="Usa l'ora globale" name="HelpEstateUseGlobalTime"> - Questa casella fa si che il sole nella vostra proprietà segua la stessa posizione della mainland Linden. - -Impostazione base: on - </notification> - <notification label="Sole Fisso" name="HelpEstateFixedSun"> - Questa casella imposta la posizione del sole su una posizione del cursore di Fase del sole e lo blocca in quella posizione. - </notification> - <notification label="Accesso Pubblico" name="HelpEstateExternallyVisible"> - Questa casella permette ai residenti che sono su altre regioni, di entrare in questa proprietà anche se non sono nella lista di accesso. - -Impostazione base: attivo - </notification> - <notification label="Consenti teleport diretto" name="HelpEstateAllowDirectTeleport"> - Se selezionato, consente ai residenti di teleportarsi direttamente in qualunque punto di questa proprietà . -Se deselezionato, i residenti si teleporteranno al più vicino snodo. - -Impostazione base: spento - </notification> - <notification label="Consenti accesso" name="HelpEstateAllowResident"> - L'accesso a questa proprietà verrà limitata solo ai residenti ed ai gruppi elencati più sotto. Questa impostazione è disponibile solo se l'accesso pubblico è deselezionato. - </notification> - <notification label="Consenti Accesso di gruppo" name="HelpEstateAllowGroup"> - L'accesso a questa proprietà verrà limitata solo ai gruppi qui elencati e ai residenti loro appartenenti. Questa impostazione è disponibile soltanto se l'accesso pubblico è deselezionato. - </notification> - <notification label="Indirizzo di posta email per le segnalazioni di abuso" name="HelpEstateAbuseEmailAddress"> - Impostando qui un indirizzo di posta elettronica valido, farà si che le segnalazioni di abuso, fatte su questa proprietà , siano mandate a quell'indirizzo. -Lasciandolo vuoto causerà l'invio delle segnalazioni di abuso soltanto ai Linden Lab. - </notification> - <notification label="Rifiuta accesso" name="HelpEstateBanResident"> - I residenti su questa lista non saranno accettati nella tua proprietà , indipendentemente da qualunque altra impostazione. - </notification> - <notification label="Consenti la voice chat" name="HelpEstateVoiceChat"> - I terreni di questa proprietà potranno avere i loro canali voce nei quali i residenti potranno parlare con gli avatar vicini. - -Impostazione base: spento </notification> <notification label="Versione voice non compatibile" name="VoiceVersionMismatch"> - Questa versione di [APP_NAME] non è compatibile con le impostazioni di voice chat di questa regione. Per poter fare funzionare correttamente la chat voce devi aggiornare [APP_NAME]. - </notification> - <notification label="Regolamento della proprietà " name="HelpEstateCovenant"> - Impostare un regolamento della proprietà ti consente di vendere i terreni all'interno di quella proprietà . Se non imposti un regolamento, non puoi vendere i terreni. La notecard per il tuo regolamente può essere vuota se non desideri applicare nessuna regola o informare i compratori di cose inerenti la terra, prima dell'acquisto. - -Un regolamento può essere usato per comunicare regole, linee guida, informazioni culturali o semplicemente ciò che ti aspetti dal possibile compratore. Questo può includere impostazioni in zone, regolamenti architettonici, opzioni di pagamento o qualunque altra informazione che ritieni importante che il nuovo proprietario debba aver visto e accettato prima dell'acquisto. - -Il compratore deve accettare il regolamento selezionando la casella appropriata per poter completare l'acquisto. I regolamenti delle proprietà sono sempre visibili nella finestra 'Informazioni sul terreno' in tutti gli appezzamenti in cui è stato impostato. + Questa versione di [APP_NAME] non è compatibile con le capacità di Chat Voice in questa regione. Per poter far funzionare correttamente la Chat Voice devi aggiornare [APP_NAME]. </notification> <notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner"> Impossibile comprare oggetti da proprietari diversi nello stesso momento. @@ -1989,52 +1680,36 @@ Hai aggiornato l'ubicazione di questo preferito ma gli altri dettagli conse Questi elementi verranno trasferiti nel tuo inventario, ma non copiati. Trasferisci gli elementi nell'inventario? - <usetemplate ignoretext="Quando si trasferiscono elementi non copiabili, dagli oggetti all'inventario." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Avvertimi quando rimuovo gli elementi 'no-copy' da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="MoveInventoryFromScriptedObject"> Hai selezionato elementi dell'inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati. Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script. Trasferisci gli elementi nell'inventario? - <usetemplate ignoretext="Quando si trasferiscono oggetti scriptati non copiabili nell'inventario." name="okcancelignore" notext="Annulla" yestext="OK"/> + <usetemplate ignoretext="Avvertimi se la rimozione di elementi 'no-copy' possono danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="ClickActionNotPayable"> - Attenzione: L'azione 'Paga l'oggetto' al click è stata impostata, ma funzionerà solo se aggiungi uno script con un evento money(). + Attenzione: E' stata impostata l'azione 'Paga Oggetto', ma funzionerà soltanto se inserisci uno script con un evento money(). <form name="form"> - <ignore name="ignore" text="Quando imposti il 'Paga l'oggetto' senza l'evento money()"/> + <ignore name="ignore" text="Ho impostato l'azione 'Paga Oggetto' costruendo un oggetto senza uno script money()"/> </form> </notification> <notification name="OpenObjectCannotCopy"> Non ci sono elementi in questo oggetto che tu possa copiare. </notification> <notification name="WebLaunchAccountHistory"> - Vai nel sito web di [SECOND_LIFE] per vedere il tuo estratto conto? - <usetemplate ignoretext="Quando carichi la pagina web dell'estratto conto." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> - </notification> - <notification name="ClickOpenF1Help"> - Visita il sito di supporto di [SECOND_LIFE]? - <usetemplate ignoretext="Quando visiti il sito del supporto di [SECOND_LIFE]." name="okcancelignore" notext="Annulla" yestext="Vai"/> + Vai su [http://secondlife.com/account/ Dashboard] per vedere la storia delle tue Transazioni? + <usetemplate ignoretext="Lancia il browser per vedere la storia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> </notification> <notification name="ConfirmQuit"> Confermi di voler uscire? - <usetemplate ignoretext="Quando esci da [APP_NAME]." name="okcancelignore" notext="Continua" yestext="Esci"/> + <usetemplate ignoretext="Conferma Uscita" name="okcancelignore" notext="Non Uscire" yestext="Esci"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Usa questo strumento per segnalare violazioni ai [http://secondlife.com/corporate/tos.php?lang=it-IT Termini di Servizio] e agli [http://secondlife.com/corporate/cs.php?lang=it-IT standard della Comunità ]. - -Tutte gli abusi ai Termini di Servizio e agli Standard della Comunità segnalati, sono indagati e risolti. Puoi controllare la risoluzione degli abusi visitando la pagina delle Risoluzioni degli Incidenti: - -http://secondlife.com/support/incidentreport.php - </notification> - <notification name="HelpReportAbuseEmailEO"> - IMPORTANTE: questo rapporto verrà inviato al proprietario della regione dove sei in questo momento e non ai Linden Lab. + Usa questo strumento per segnalare violazioni del [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards]. -Come servizio ai residenti e ai visitatori, il proprietario della regione in cui ti trovi, ha scelto di ricevere e risolvere le segnalazioni di abuso che nascono in questa regione. Il Linden Lab non investiga sulle segnalazione inviate da qui. - -Il proprietario della regione risolverà le segnalazione basandosi sulle regole locali di questa regione così come sono indicate dal regolamento della proprietà . -(Puoi vedere il regolamento andando sul menu Mondo e selezionando Informazioni sul terreno.) - -La risoluzione di questa segnalazione verrà applicata solo in questa regione; L'accesso dei residenti ad altre aree di [SECOND_LIFE] non verrà influenzato dal risultato di questa segnalazione. Soltanto i Linden Lab possono restringere l'accesso alla totalità di [SECOND_LIFE]. +Tutti gli abusi segnalati verranno investigati e risolti. Puoi verificare lo stato delle segnalazione leggendo [http://secondlife.com/support/incidentreport.php Incident Report]. </notification> <notification name="HelpReportAbuseSelectCategory"> Scegli una categoria per questa segnalazione di abuso. @@ -2058,18 +1733,19 @@ Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apo Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso. </notification> <notification name="HelpReportAbuseContainsCopyright"> - Caro residente, + Gentile Residente, -Sembra che stai segnalando un problema di furto di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente: +Sembra che tu stia segnalando una violazione di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente: -(1) Il processo di abuso. Puoi sottomettere una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio, usando CopyBot oppure simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L'ufficio Abusi investigherà e deciderà delle azioni disciplinari adeguate per comportamenti che violano gli standard di comunità di [SECOND_LIFE] o i Termini di Servizio. Si tenga però presente che l'ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contenuto da [SECOND_LIFE]. +(1) Il processo di Abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L'Ufficio Abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini di Servizio] di [SECOND_LIFE] oppure i [http://secondlife.com/corporate/cs.php Standard di Comunità ]. Si tenga però presente che l'ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contentuo da [SECOND_LIFE]. -(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da [SECOND_LIFE], DEVI sottomettere una notifica valida di furto intellettuale come definito nella nostra politica DMCA che trovi a http://secondlife.com/corporate/dmca.php. +(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da [SECOND_LIFE], DEVI compilare una denuncia valid di furto come definito nella nostra [http://secondlife.com/corporate/dmca.php Policy DMCA]. -Se desideri egualmente continuare con il processo di abuso, chiudi questa finestra e termina di compilare la segnalazione. Potresti dover selezionare la categoria specifica 'CopyBot o Sfruttamento permessi'. +Se desideri egualmente continuare con il processo di Abuso, chiudi questa finestra e completa la compilazione della segnalazione. Puoi specificare la categoria specifica 'CopyBot o Sfruttamento Permessi'. Grazie, -La Linden Lab + +Linden Lab </notification> <notification name="FailedRequirementsCheck"> I seguenti componenti obbligatori sono mancanti da [FLOATER]: @@ -2079,9 +1755,9 @@ La Linden Lab C'è già un oggetto indossato in questo punto del corpo. Vuoi sostituirlo con l'oggetto selezionato? <form name="form"> - <ignore name="ignore" save_option="true" text="Quando avviene la sostituzione di un oggetto indossato già esistente."/> - <button name="Yes" text="OK"/> - <button name="No" text="Annulla"/> + <ignore name="ignore" save_option="true" text="Sostituisci un preesistente attachment con l'elemento selezionato"/> + <button ignore="Replace Automatically" name="Yes" text="OK"/> + <button ignore="Never Replace" name="No" text="Annulla"/> </form> </notification> <notification label="Avviso di 'Occupato'" name="BusyModePay"> @@ -2089,18 +1765,22 @@ Vuoi sostituirlo con l'oggetto selezionato? Desideri abbandonare la modalità 'Occupato' prima di completare questa transazione? <form name="form"> - <ignore name="ignore" save_option="true" text="Quando avviene il pagamento di una persona o di un oggetto in modalità 'Occupato'."/> - <button name="Yes" text="OK"/> - <button name="No" text="Abbandona"/> + <ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono Non Disponibile"/> + <button ignore="Always leave Busy Mode" name="Yes" text="OK"/> + <button ignore="Never leave Busy Mode" name="No" text="Abbandona"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + La cartella '[FOLDERNAME]' è una cartella di sistema. La cancellazione delle cartelle di sistema può creare instabilità . Sei sicuro di volerla cancellare? + <usetemplate ignoretext="Conferma prima di cancellare una cartella di sistema" name="okcancelignore" notext="Cancella" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> - Confermi di volere permanentemente rimuovere il contenuto del tuo cartella Cestino? - <usetemplate ignoretext="Quando svuoti la cartella cestino del tuo inventario." name="okcancelignore" notext="Annulla" yestext="OK"/> + Vuoi veramente cancellare permanentemente il contenuto del tuo Cestino? + <usetemplate ignoretext="Conferma lo svuotamento del contenuto del Cestino" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> - Confermi di voler pulire la cache del tuo browser? - <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> + Vuoi veramente cancellare la storia dei viaggi, web e delle ricerche fatte? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> Confermi di volere cancellare i tuoi cookie? @@ -2111,39 +1791,18 @@ Desideri abbandonare la modalità 'Occupato' prima di completare quest <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> </notification> <notification name="ConfirmEmptyLostAndFound"> - Confermi di volere rimuovere permanentemente il contenuto della tua cartalla Persi e ritrovati? - <usetemplate ignoretext="Quando cancelli la cartella degli oggetti perduti e ritrovati del tuo inventario." name="okcancelignore" notext="No" yestext="Si"/> + Vuoi veramente cancellare permanentemente il contenuto dei tuoi Persi e Ritrovati? + <usetemplate ignoretext="Conferma lo svuotamento della cartella Persi e Ritrovati" name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="CopySLURL"> - Lo SLurl seguente è stato copiato nei tuoi appunti: + Lo SLurl seguente è stato copiato negli Appunti: [SLURL] -Lo puoi inserire in una pagina web per dare ad altri modo di accedere a questo posto o puoi provare a copiarla nella barra indirizzi del tuo browser web. +Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra indirizzo di un browser web. <form name="form"> - <ignore name="ignore" text="Quando copi uno SLurl negli appunti."/> + <ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/> </form> </notification> - <notification name="GraphicsPreferencesHelp"> - Questo pannello controlla la dimensione delle finestre, la risoluzione e la qualità della grafica del tuo browser. Le Preferenze > Grafica consente di scegliere fra quattro livelli grafici: Basso, Medio, Alto, e Ultra. Puoi anche modificare le impostazioni grafiche selezionando la casella Personalizza e manipolando le seguenti impostazioni: - -Effetti grafici: Abilita o disabilita vari tipi di effetti grafici. - -Oggetti riflettenti: Imposta le tipologie di oggetti riflessi dall'acqua. - -Visualizzazione Avatar: Imposta le opzioni che influenzano come il client visualizza gli avatar. - -Campo visivo: Imposta quanto lontano dalla tua posizione gli oggetti vengono visualizzati nella scena. - -Massima quantità di particelle: Imposta il valore massimo di particelle che puoi vedere contemporaneamente sullo schermo. - -Qualità post elaborazione: Imposta la risoluzione con il quale il bagliore è visualizzato. - -Dettaglio della retinatura: Imposta il dettaglio o il numero di triangoli che sono usati per visualizzare determinati oggetti. Un valore più alto impiega più tempo ad essere visualizzato, ma rende questi oggetti più dettagliati. - -Dettagli dell'illuminazione: Seleziona quali tipi di luce vuoi visualizzare. - -Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le texture del terreno. - </notification> <notification name="WLSavePresetAlert"> Vuoi sovrascrivere le preimpostazioni salvate? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> @@ -2162,158 +1821,6 @@ Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le t Effetto di post elaborazione già presente. Vuoi sovrascrivere? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> - <notification name="HelpEditSky"> - Modifica i cursori di WindLight per creare e savare un insieme di cieli. - </notification> - <notification name="HelpEditDayCycle"> - Scegli quale cielo impostare per ciclo giornaliero. - </notification> - <notification name="EnvSettingsHelpButton"> - Queste impostazioni modificano il modo in cui l'ambiente viene visto localmente sul tuo computer. La tua scheda grafica deve supportare gli effetti atmosferici per poter accedere a tutte le impostazioni. - -Modifica il cursore 'Ora del Giorno' per cambiare la fase giornaliera locale sul client. - -Modifica il cursore 'Intensità delle nuvole' per controllare la quantità di nuvole che coprono il cielo. - -Scegli un colore nella tavolozza colori per il 'colore dell'acqua' per cambiare il colore dell'acqua. - -Modifica il cursore 'Nebbiosità dell'acqua' per controllare quanto densa è la nebbia sott'acqua. - -Clicca 'Usa l'ora della proprietà ' per sincronizzare il tempo del giorno con l'ora del giorno della regione e collegarle stabilmente. - -Clicca 'Cielo avanzato' per visualizzare un editor con le impostazioni avanzate per il cielo. - -Clicca 'Acqua Avanzata' per visualizzare un editor con le impostazini avanzate per l'acqua. - </notification> - <notification name="HelpDayCycle"> - L'editor del Ciclo Giorno/Notte permette di controllare il cielo durante il ciclo giornaliero di [SECOND_LIFE]. Questo è il ciclo che è usato dal cursore dell'editor base dell'ambiente. - -L'editor del ciclo giorno/notte funziona impostando i fotogrammi chiave. Questi sono nodi (rappresentati da tacche grige sul grafico temporale) che hanno delle preregolazioni associate del cielo. Man mano che l'ora del giorno procede, il cielo di WindLight'si anima' interpolando i valori fra questi fotogrammi chiave. - -La freccia gialla sopra la linea del tempo rappresenta la tua vista corrente, basata sull'ora del giorno. Cliccandola e spostandola vedrai come il giorno si animerebbe. Si può aggiungere o cancellare fotogrammi chiave cliccando sui tasti 'Aggiungi Fotogramma Chiave' e 'Cancella Fotogramma Chiave' alla destra della linea del tempo. - -Si possono impostare le posizioni temporali dei fotogrammi chiave spostandole lungo la linea del tempo o impostando il loro valore a mano nella finestra di impostazione dei fotogrammi chiave. All'interno della finestra di impostazione si può associare il fotogramma chiave con le impostazioni corrispondenti di Wind Light. - -La durata del ciclo definisce la durata complessiva di un 'giorno'. Impostando questo ad un valore basso (per esempio, 2 minuti) tutto il ciclo di 24 ore verrà completato in solo 2 minuti reali! Una volta soddisfatto dell tua linea del tempo e le impostazioni dei fotogrammi chiave, usa i bottoni Play e Stop per vederne in anteprima i risultati. Attenzione: si può sempre spostare la freccia gialla indicatrice del tempo sopra la linea del tempo per vedere il ciclo animarsi interattivamente. Scegliendo invece il pulsanto 'Usa il tempo della regione' ci si sincronizza con il le durate del ciclo definite per questa regione. - -Una volta soddisfatto del ciclo giornaliero, puoi salvarlo o ricaricarlo con i bottoni 'Salva test del giorno' e 'Carica il test del giorno'. Attualmente è possibile definire un solo ciclo giorno/notte - </notification> - <notification name="HelpBlueHorizon"> - Si usano i cursori RGB (Rosso/Verde/Blu) per modificare il colore del cielo. Si può usare il cursore I (Intensità ) per alterare i tre cursori all'unisono. - </notification> - <notification name="HelpHazeHorizon"> - Altezza della foschia all'orizzonte è uno dei parametri più utili per modificare l'esposizione di luce complessiva nella scena. -E' utile per simulare molte impostazioni di esposizione, come la sovraesposizione del sole e impostazioni più scure a diaframma chiuso. - </notification> - <notification name="HelpBlueDensity"> - La densità del blu influenza la saturazione complessiva del cielo e della nebbia. Se impostate il cursore (I) Intensità verso destra i colori diventeranno più brillanti e accesi. Se lo impostate tutto a sinistra, i colori diventeranno opachi e ultimamente si confonderanno con il bianco/nero. Se si vuole controllare in modo preciso l'equilibro di colori del cielo, si può agire sui singoli elementi di saturazione utilizzando i tre cursori RGB (Rosso, Verde, Blu). - </notification> - <notification name="HelpHazeDensity"> - La densità della foschia controlla il livello di foschia grigia generale nell'atmosfera. -E' utile per simulare scene con un livello alto di fumo e di inquinamento di origine umana. -E' anche utile per simulare la nebbia e la foschia al mattino. - </notification> - <notification name="HelpDensityMult"> - Il moltiplicatore di densità può essere usato per influenzare la densità atmosferica generale. Con valori bassi, crea la sensazione di 'aria sottile', con valori alti crea un effetto molto pesante, annebbiato. - </notification> - <notification name="HelpDistanceMult"> - Modifica la distanza percepita da WindLight. -Immettendo il valore zero si spegne l'influenza di WindLight sul terreno e gli oggetti. -Valori più grandi di 1 simulano distanze più grandi per effetti atmosferici più spessi. - </notification> - <notification name="HelpMaxAltitude"> - Altitudine Massima modifica i calcoli di altezza che fa WindLight quando calcola l'illuminazione atmosferica. -In periodi successivi del giorno, è utile per modificare quanto 'profondo' appaia il tramonto. - </notification> - <notification name="HelpSunlightColor"> - Modifica il colore e l'intensità della luce diretta nella scena. - </notification> - <notification name="HelpSunAmbient"> - Modifica il colore e l'intensità della luce atmosferica ambientale nella scena. - </notification> - <notification name="HelpSunGlow"> - Il cursore Grandezza controlla la dimensione del sole. -Il cursore Focus controlla quanto è offuscato il sole sopra il cielo. - </notification> - <notification name="HelpSceneGamma"> - Modifica la distribuzione di luci e ombre nello schermo. - </notification> - <notification name="HelpStarBrightness"> - Modifica la brillantezza delle stelle nel cielo. - </notification> - <notification name="HelpTimeOfDay"> - Controlla la posizione del sole nel cielo. -Simile all'elevazione. - </notification> - <notification name="HelpEastAngle"> - Controlla la posizione del sole nel cielo. -Simile all'azimuth. - </notification> - <notification name="HelpCloudColor"> - Modifica il colore delle nuvole. Normalmente si raccomanda di mantenere un colore verso il bianco, ma puoi sbizzarrirti. - </notification> - <notification name="HelpCloudDetail"> - Controlla l'immagine dei dettagli che è sovraimposta sopra l'immagine principale delle nuvole. -X e Y controllano la sua posizione. -D (Densità ) controlla quanto gonfie o spezzettate appaiono le nuvole. - </notification> - <notification name="HelpCloudDensity"> - Consente di controllare la posizione delle nuvole usando i cursori X e Y e quanto dense siano usando il cursore D. - </notification> - <notification name="HelpCloudCoverage"> - Controlla quanto le nuvole coprono il cielo. - </notification> - <notification name="HelpCloudScale"> - Controlla le dimensioni delle immagini delle nuvole sul cielo stellato. - </notification> - <notification name="HelpCloudScrollX"> - Controlla la velocità delle nuvole lungo la direzione X. - </notification> - <notification name="HelpCloudScrollY"> - Controlla la velocità delle nuvole lungo la direzione Y. - </notification> - <notification name="HelpClassicClouds"> - Seleziona questa casella per consentire la visualizzazione delle nuvole nello stile classico in aggiunta alle nuvole Windlight. - </notification> - <notification name="HelpWaterFogColor"> - Sceglie il Colore della nebbiosità dell'acqua. - </notification> - <notification name="HelpWaterFogDensity"> - Controlla la densità della foschia dell'acqua e quanto lontano si può vedere sott'acqua. - </notification> - <notification name="HelpUnderWaterFogMod"> - Modifica l'effetto dell'Esponente Densità Vapore Acqueo per controllare quanto lontano può vedere il vostro avatar quando è sott'acqua. - </notification> - <notification name="HelpWaterGlow"> - Controlla la quantità del bagliore dell'acqua. - </notification> - <notification name="HelpWaterNormalScale"> - Controlla le dimensioni delle tre wavelet che compongono l'acqua. - </notification> - <notification name="HelpWaterFresnelScale"> - Controlla quanta luce è riflessa ad angoli differenti. - </notification> - <notification name="HelpWaterFresnelOffset"> - Controlla quanta intensità di luce è riflessa. - </notification> - <notification name="HelpWaterScaleAbove"> - Controlla quanta luce è rifratta guardando dal di sopra della superficie dell'acqua. - </notification> - <notification name="HelpWaterScaleBelow"> - Controlla quanta luce è rifratta guardando dal di sotto della superficie dell'acqua. - </notification> - <notification name="HelpWaterBlurMultiplier"> - Controlla come le onde e le riflessioni vengono miscelate. - </notification> - <notification name="HelpWaterNormalMap"> - Controlla quale mappa normale è sovraimposta nell'acqua per determinare le riflessioni/rifrazioni. - </notification> - <notification name="HelpWaterWave1"> - Controlla dove e quanto velocemente la versione ingrandita della mappa normale si muove lungo le direzioni X e Y. - </notification> - <notification name="HelpWaterWave2"> - Controlla dove e quanto velocemente la versione ridotta della mappa normale si muove lungo le direzioni X e Y. - </notification> <notification name="NewSkyPreset"> Fornisci il nome per il nuovo cielo. <form name="form"> @@ -2359,35 +1866,33 @@ D (Densità ) controlla quanto gonfie o spezzettate appaiono le nuvole. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - Gli elementi non possono essere comprati mentre sono indossati. + Non puoi comprare un oggetto mentre è indossato. </notification> <notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails"> Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell'oggetto deve cancellare l'oggetto oppure reimpostare gli script nell'oggetto. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AutoWearNewClothing"> - Vuoi indossare automaticamente i vestiti che crei? - <usetemplate ignoretext="Quando Indossi automaticamente nuovi vestiti." name="okcancelignore" notext="No" yestext="Si"/> + Vuoi indossare automaticamente gli oggetti che stai per creare? + <usetemplate ignoretext="Indossa gli abiti che creo mentre modifico il Mio Aspetto" name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="NotAgeVerified"> - La tua età deve essere verificata per poter entrare in questo territorio. -Vuoi visitare il sito di [SECOND_LIFE] per verificare la tua eta? + Devi avere l'Età Verificata per visitare quest'area. Vuoi andare sul sito [SECOND_LIFE] per verificare la tua età ? [_URL] <url name="url" option="0"> https://secondlife.com/account/verification.php?lang=it </url> - <usetemplate ignoretext="Quando hai un avviso per mancanza della verifica dell'età ." name="okcancelignore" notext="No" yestext="Si"/> + <usetemplate ignoretext="Non ho verificato la mia età " name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> - Questo terreno richiede che tu abbia registrato le tue informazioni di pagamento prima che tu possa accedervi. -Vuoi visitare il sito di [SECOND_LIFE] per impostarle? + Devi avere le Informazioni di Pagamento registrate per poter visitare quest'area. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle? [_URL] <url name="url" option="0"> https://secondlife.com/account/index.php?lang=it </url> - <usetemplate ignoretext="Quando hai un avviso per mancanza di informazioni di pagamento registrate." name="okcancelignore" notext="No" yestext="Si"/> + <usetemplate ignoretext="Manca la registrazione delle Informazioni di Pagamento" name="okcancelignore" notext="No" yestext="Si"/> </notification> <notification name="MissingString"> La stringa [STRING_NAME] non è presente in strings.xml @@ -2417,7 +1922,7 @@ Vuoi visitare il sito di [SECOND_LIFE] per impostarle? [FIRST] [LAST] è Offline </notification> <notification name="AddSelfFriend"> - Non puoi aggiungere te stesso come amico. + Anche se sei molto piacevole, non puoi aggiungerti come amicizia. </notification> <notification name="UploadingAuctionSnapshot"> Sto importando le fotografie per l'uso inworld e per il web... @@ -2436,7 +1941,7 @@ Vuoi visitare il sito di [SECOND_LIFE] per impostarle? Terrain.raw caricato </notification> <notification name="GestureMissing"> - La gesture [NAME] non è stata trovata nel database. + Manca la Gesture [NAME] dal database. </notification> <notification name="UnableToLoadGesture"> Impossibile caricare la gesture [NAME]. @@ -2449,14 +1954,14 @@ Riprova. Impossibile caricare il Landmark di riferimento. Riprova. </notification> <notification name="CapsKeyOn"> - Il tasto BLOC MAIUSC è attivato. -Dato che questo tasto ha effetto su come scrivi la password, forse sarebbe preferibile disattivarlo. + Hai il Blocco delle Maiuscole attivato. +Questo potrebbe influenzare la tua password. </notification> <notification name="NotecardMissing"> Notecard non trovata nel database. </notification> <notification name="NotecardNoPermissions"> - Permessi insufficienti per visualizzare la notecard. + Non hai il permesso di vedere questa notecard. </notification> <notification name="RezItemNoPermissions"> Permessi insufficienti per creare un oggetto. @@ -2494,11 +1999,11 @@ Riprova. Riprova. </notification> <notification name="CannotBuyObjectsFromDifferentOwners"> - Non è possibile acquistare oggetti provenienti da diversi proprietari allo stesso tempo. -Seleziona un oggetto singolo per volta. + Puoi comprare oggetti solo da un proprietario per volta. +Seleziona solo un oggetto. </notification> <notification name="ObjectNotForSale"> - L'oggetto non sembra essere in vendita + Questo oggetto non è in vendita. </notification> <notification name="EnteringGodMode"> Entra in modalità divina, livello [LEVEL] @@ -2507,10 +2012,10 @@ Seleziona un oggetto singolo per volta. Esci dalla modalità divina, livello [LEVEL] </notification> <notification name="CopyFailed"> - La copia non è riuscita perche non hai il permesso di copiare. + Non hai i permessi per copiare. </notification> <notification name="InventoryAccepted"> - [NAME] ha accettato la tua offerta dall'inventario. + [NAME] ha ricevuto la tua offerta di Inventory. </notification> <notification name="InventoryDeclined"> [NAME] non ha accettato la tua offerta dall'inventario. @@ -2525,12 +2030,14 @@ Seleziona un oggetto singolo per volta. Il tuo biglietto da visita non è stato accettato. </notification> <notification name="TeleportToLandmark"> - Ora che hai raggiunto la mainland, puoi teleportarti in posti come '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei Landmarks. -Fai doppio click su un landmark e poi clicca su Teleport per andare là . + Puoi teleportarti alle ubicazioni come '[NAME]' aprendo il pannello Luoghi sul lato destro dello schermo, e quindi selezionare la linguetta Landmarks. +Clicca su un landmark per selezionarlo e quindi clicca 'Teleport' sul fondo del pannello. +(Puoi anche fare doppio-click sul landmark oppure cliccarlo con il tasto destro e scegliere 'Teleport'.) </notification> <notification name="TeleportToPerson"> - Ora che hai raggiunto la mainland, puoi contattare residenti con '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei biglietti da visita. -Fai doppio click sul biglietto, clicca su IM messaggio istantaneo, e scrivi il messaggio. + Puoi contattare residenti come '[NAME]' aprendo il pannello Persone sul lato destro dello schermo. +Seleziona il residente dalla lista, e clica 'IM' in fondo al pannello. +(Puoi anche fare doppio click sul loro nome nella lista, oppure cliccare con il tasto destro e scegliere 'IM'). </notification> <notification name="CantSelectLandFromMultipleRegions"> Non è possibile selezionare il terreno attraverso i confini del server. @@ -2553,6 +2060,9 @@ Prova a selezionare una parte di terreno più piccola. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Notifica eventi: @@ -2577,8 +2087,20 @@ Prova a selezionare una parte di terreno più piccola. [NAMES] </notification> <notification name="NoQuickTime"> - Il software Apple QuickTime sembra non essere installato nel tuo sistema. -Se desideri visualizzare il video streaming nei terreni supportati si consiglia di andare sul sito di QuickTime (http://www.apple.com/quicktime) e procedere con l'installazione di QuickTime Player. + Il Software QuickTime di Apple non sembra installato sul tuo computer. +Se vuoi vedere contenuto multimediale sugli appezzamenti che lo supportano devi andare su [http://www.apple.com/quicktime QuickTime site] e installare il Player QuickTime. + </notification> + <notification name="NoPlugin"> + Nessun Media Plugin è stato trovato per gestire "[MIME_TYPE]" il tipo mime. Il Media di questo tipo non è disponibile. + </notification> + <notification name="MediaPluginFailed"> + Questo Media Plugin non funziona: + [PLUGIN] + +Per favore re-installa il plugin o contatta il venditore se continui ad avere questi problemi. + <form name="form"> + <ignore name="ignore" text="Mancato funzionamento del Media Plugin"/> + </form> </notification> <notification name="OwnedObjectsReturned"> Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell'inventario. @@ -2597,24 +2119,26 @@ Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancell <notification name="UnOwnedObjectsReturned"> Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari. </notification> + <notification name="ServerObjectMessage"> + Messaggio da [NAME]: +[MSG] + </notification> <notification name="NotSafe"> - In questa terra il danno è abilitato ('non sicura'). -Puoi farti male qui. Se muori, sarai teleportato a casa. + Questo terreno è abilitato ai Danni da combattimento. +Qui potresti ricevere ferite. Se dovessi morire verrai teleportato a casa tua. </notification> <notification name="NoFly"> - Questa terra ha il volo disabilitato ('non puoi volare'). -Non è possibile volare qui. + Quest'are ha il volo disabilitato. +Qui non puoi volare. </notification> <notification name="PushRestricted"> - Questa terra è 'Senza spinte'. -Non si puo spingere gli altri a meno che tu non sia propietario del terreno. + Quest'area non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno. </notification> <notification name="NoVoice"> - Questa terra ha il voice disabilitato. + Quest'area ha la chat voice disabilitata. Non puoi sentire nessuno parlare. </notification> <notification name="NoBuild"> - Questo terreno ha la costruzione disabilitata ('non puoi costruire'). -Non puoi costruire qui. + Quest'area ha il building disabilitato. Qui non puoi costruire o rezzare oggetti. </notification> <notification name="ScriptsStopped"> Un amministratore ha temporaneamente disabilitato gli script in questa regione. @@ -2623,12 +2147,12 @@ Non puoi costruire qui. In questa terra nessuno script è attivo. </notification> <notification name="NoOutsideScripts"> - Questa land ha script esterni disabilitati. -('nessuno script esterno'). -Nessuno script esterno funzionerà tranne quelli del propietario del terreno. + Questo terreno non consente script esterni. + +Qui funzinano solo gli script del proprietario del terreno. </notification> <notification name="ClaimPublicLand"> - Puoi solo prendere possesso di terra pubblica nella regione dove sei attualmente. + Puoi solo chiedere terreni pubblici nella regione in cui sei posizionato. </notification> <notification name="RegionTPAccessBlocked"> Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l'età e/o installare l'ultima versione del programma. @@ -2641,16 +2165,9 @@ Visita la Knowledge Base per informazioni sull'accesso alle aree con queste <notification name="NoTeenGridAccess"> Il tuo account non può connettersi a questa regione della griglia per Teenager. </notification> - <notification name="NoHelpIslandTP"> - Non è possibile per te ritornare all'Help Island. -Vai alla 'Help Island Public' per ripetere il tutorial. - </notification> <notification name="ImproperPaymentStatus"> Non hai una impostazioni di pagamento corrette per entrare in questa regione. </notification> - <notification name="MustGetAgeRegion"> - Devi avere un'età verificata per entrare in questa regione. - </notification> <notification name="MustGetAgeParcel"> Devi essere di età verificata per entrare in questa terra. </notification> @@ -2713,31 +2230,35 @@ Riprova tra qualche istante. Non è stato trovato nessun territorio valido. </notification> <notification name="ObjectGiveItem"> - Un oggetto chiamato [OBJECTFROMNAME] di proprietà di [FIRST] [LAST] ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. + L'oggetto [OBJECTFROMNAME] posseduto da [NAME_SLURL] ti ha dato [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Prendi"/> <button name="Discard" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - Un oggetto chiamato [OBJECTFROMNAME] di proprietà di (un utente sconosciuto) ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. + Un oggetto di nome [OBJECTFROMNAME] posseduto da un residente sconosciuto ti ha dato [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Prendi"/> <button name="Discard" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="UserGiveItem"> - [NAME] ti ha dato un [OBJECTTYPE] chiamato '[OBJECTNAME]'. + [NAME_SLURL] ti ha dato [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Prendi"/> + <button name="Show" text="Mostra"/> <button name="Discard" text="Rifiuta"/> - <button name="Mute" text="Muta"/> </form> </notification> <notification name="GodMessage"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2749,7 +2270,7 @@ Riprova tra qualche istante. </form> </notification> <notification name="TeleportOffered"> - [NAME] ti ha offerto di teleportarti dove sta ora: + [NAME] ti ha offerto di teleportarti nella sua ubicazione: [MESSAGE] <form name="form"> @@ -2776,6 +2297,9 @@ Riprova tra qualche istante. <button name="Decline" text="Rifiuta"/> </form> </notification> + <notification name="FriendshipOffered"> + Hai offerto l'amicizia a [TO_NAME] + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] ti ha offerto la sua amicizia. @@ -2801,12 +2325,12 @@ in modo da poter rapidamente inviargli un IM al residente. </form> </notification> <notification name="RegionRestartMinutes"> - Il riavvio della regione avverrà tra [MINUTES] minuti. -Se rimani in questa regione sarai disconnesso. + Questa regione farà il restart fra [MINUTES] minuti. +Se rimani qui verrai disconnesso. </notification> <notification name="RegionRestartSeconds"> - Il riavvio della regione avverrà tra [SECONDS] secondi. -Se rimani in questa regione sarai disconnesso. + Questa regione farà il restart fra [SECONDS] secondi. +Se rimani qui verrai disconnesso. </notification> <notification name="LoadWebPage"> Caricare pagina web [URL]? @@ -2826,7 +2350,7 @@ Dall'oggetto: [OBJECTNAME], di: [NAME]? Impossibile trovare [TYPE] chiamato [DESC] nel database. </notification> <notification name="InvalidWearable"> - L'oggetto che si sta tentando di indossare utilizza una funzione che il programma non riesce a leggere. Aggiorna la tua versione di [APP_NAME] per riuscire a indossare l'oggetto. + L'elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare. </notification> <notification name="ScriptQuestion"> '[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: @@ -2836,16 +2360,16 @@ Va bene? <form name="form"> <button name="Yes" text="Si"/> <button name="No" text="No"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="ScriptQuestionCaution"> - '[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: + Un oggetto di nome '[OBJECTNAME]', posseduto da '[NAME]' vorrebbe: [QUESTIONS] -Se non ci si fida dell'oggetto e del suo creatore, si dovrebbe negare la richiesta. Per ulteriori informazioni, fai clic sul pulsante 'Dettagli'. +Se non ti fidi di questo oggetto e del suo creatore dovresti declinare la richiesta. -Accettare tale richiesta? +Consenti questa richiesta? <form name="form"> <button name="Grant" text="Accetta"/> <button name="Deny" text="Nega"/> @@ -2866,39 +2390,44 @@ Accettare tale richiesta? <button name="Ignore" text="Ignora"/> </form> </notification> + <notification name="ScriptToast"> + [FIRST] [LAST]'s '[TITLE]' richiede il contributo dell'utente. + <form name="form"> + <button name="Open" text="Apri il Dialog"/> + <button name="Ignore" text="Ignora"/> + <button name="Block" text="Blocca"/> + </form> + </notification> <notification name="FirstBalanceIncrease"> Hai appena ricevuto [AMOUNT]L$. -Gli oggetti e gli altri utenti possono darti L$. -Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. +Il tuo saldo in L$ è mostrato in alto a destra. </notification> <notification name="FirstBalanceDecrease"> Hai appena pagato [AMOUNT]L$. -Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. +Il tuo saldo in L$ è mostrato in alto a destra. + </notification> + <notification name="BuyLindenDollarSuccess"> + Grazie per il pagamento! + +Il tuo saldo in L$ sarà aggiornato al termine dell'elaborazione. Se l'elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l'ammontare dell'acquisto verrà rimborsato nel tuo saldo in US$. + +Lo stato del tuo pagamento potrà essere controllato nella pagina della Storia delle tue Transazioni su [http://secondlife.com/account/ Pannello di Controllo] </notification> <notification name="FirstSit"> Sei seduto. -Utilizza i tasti freccia (o AWSD) per cambiare visualizzazione. -Fai clic sul pulsante 'Alzati' per rialzarti. +Usa le frecce (oppure AWSD) per guardarti intorno. +Clicca il bottone 'Alzati' per alzarti. </notification> <notification name="FirstMap"> - Fai clic e trascina per scorrere la mappa. -Doppio click per teleportarti. -Utilizza i controlli sulla destra per trovare le cose e visualizzare sfondi differenti. + Clicca e trascina la mappa per guardare attorno. +Fai doppio click per teleportarti. +Usa i controlli sulla destra per trovare cose e visualizzare sfondi differenti. </notification> <notification name="FirstBuild"> - È possibile creare nuovi oggetti in alcune zone di [SECOND_LIFE]. -Utilizza gli strumenti in alto a sinistra per costruire, e prova a tenere premuto Ctrl o Alt per passare rapidamente tra uno strumento e l'altro. -Premi Esc per smettere di costruire. - </notification> - <notification name="FirstLeftClickNoHit"> - Cliccare con il tasto sinistro fa interagire con particolari oggetti. -Se il puntatore del mouse si trasforma in una mano, puoi interagire con l'oggetto. -Se fai clic col tasto destro ti verranno sempre mostrati menù con le cose che puoi fare. + Hai aperto gli Strumenti di Build. Ogni oggetto attorno a te è stato costruito con questi strumenti. </notification> <notification name="FirstTeleport"> - Questa regione non permette i teleport da punto a punto, cosi sei stato teletrasportato nel punto più vicino. -La tua destinazione originale è comunque segnata da un segnale luminoso. -Segui la freccia rossa per arrivare a destinazione, o fai clic sulla freccia per spegnerla. + Puoi teleportarti solo in certe aree di questa regione. La freccia indica la tua destinazione. Clicca sulla freccia per farla sparire. </notification> <notification name="FirstOverrideKeys"> I tuoi movimenti della tastiera vengono ora gestiti da un oggetto. @@ -2908,86 +2437,80 @@ Premi 'M' per farlo. </notification> <notification name="FirstAppearance"> Stai modificando il tuo aspetto. -Per ruotare e fare uno zoom, utilizza le frecce della tastiera. -Quando hai finito, premi 'Salva tutto' -per salvare il tuo look e uscire. -Puoi modificare il tuo aspetto ogni qualvolta vuoi. +Usa le frecce per guardarti attorno. +Quando hai finito premi 'Salva Tutto'. </notification> <notification name="FirstInventory"> - Questo è il tuo inventario, che contiene gli oggetti, notecard, abbigliamento, e altre cose che possiedi. -* Per indossare un oggetto o un outfit completo contenuto in una cartella, trascinali su te stesso. -* Per ricreare un oggetto inworld, trascinalo sul terreno. -* Per leggere una notecard, fai doppio clic su di essa. + Questo è il tuo Inventory, che contiene gli elementi che possiedi. + +* Per indossare qualcosa, trascinala su di te. +* Per rezzare qualcosa inworld, trascinala sul suolo. +* Per leggere una notecard, fai doppio click. </notification> <notification name="FirstSandbox"> - Questa è una regione sandbox. -Gli oggetti che costruisci qui, potrebbero essere cancellati dopo che lasci questa area, dato che le sandbox si autopuliscono regolarmente. Leggi le informazioni scritte al riguardo, vicino al nome della regione in alto sullo schermo. + Questa è una Sandbox, serve per aiutare i Residenti ad imparare a costruire. -Le regioni sandbox sono rare, e sono contrassegnate da segnali. +Gli oggetti che costruisci qui saranno cancellati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro e scegliere 'Prendi' per trasferirle nel tuo Inventory. </notification> <notification name="FirstFlexible"> - Questo oggetto è flessibile. -Gli oggetti flessibili non possono essere fisici e devano essere fantasma fino a quando la casella di controllo della flessibilità verrà deselezionata. + Questo oggetto è flessibile. Gli oggetti Flexy devono essere fantasma e non fisici. </notification> <notification name="FirstDebugMenus"> - Hai attivato il menu Avanzato. -Questo menu contiene funzioni utili per gli sviluppatori per il debug di [SECOND_LIFE]. -Per attivare o disattivare questo menu su Windows premere Ctrl+Alt+D. Su Mac premere ⌥⌘D. + Hai abilitato il menu Avanzato. + +Per abilitarlo/disabilitarlo, + Windows: Ctrl+Alt+D + Mac: ⌥⌘D </notification> <notification name="FirstSculptedPrim"> - Si sta modificando uno sculpted prim. -Gli sculpted prim richiedono una speciale texture che ne specifichi la forma. -Puoi trovare esempi di texture sculpted nella libreria dell'inventario. - </notification> - <notification name="FirstMedia"> - Hai iniziato la riproduzione dei media. I media possono essere impostati per essere riprodotti automaticamente nella finestra delle Preferenze sotto la voce Audio / Video. Questo può essere un rischio di sicurezza da media che non sono affidabili. + Stai modificando un prim Sculpted. Gli oggetti Sculpted hanno bisogno di una texture speciale per definire la loro forma. </notification> <notification name="MaxListSelectMessage"> È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista. </notification> <notification name="VoiceInviteP2P"> - [NAME] ti ha invitato a una chiamata Voice. -Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. fai clic sul pulsante Muta per mutare il chiamante. + [NAME] ti sta invitando ad una chiamata in Chat Voice. +Clicca Accetta per unirti alla chiamata oppure Declina per declinare l'invito. Clicca Blocca per bloccare questo chiamante. <form name="form"> <button name="Accept" text="Accetta"/> <button name="Decline" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="AutoUnmuteByIM"> - A [FIRST] [LAST] e' stato mandato un messaggio instantaneo ed è stato quindi automaticamente non mutato. + Hai appena inviato un IM a [FIRST] [LAST], che è stato automaticamente sbloccato. </notification> <notification name="AutoUnmuteByMoney"> - A [FIRST] [LAST] è stato dato del denaro ed è stato automaticamente non mutato. + Hai appena inviato del denaro a [FIRST] [LAST], che è stato automaticamente sbloccato. </notification> <notification name="AutoUnmuteByInventory"> - A [FIRST] [LAST] é stato passato qualcosa dall'inventario ed è stato automaticamente non mutato. + Hai appena offerto un elemento dell'Inventory a [FIRST] [LAST], che è stato automaticamente sbloccato. </notification> <notification name="VoiceInviteGroup"> - [NAME] ha iniziato una chiamata Voice-Chat con il gruppo [GROUP]. -Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + [NAME] si è aggiunto alla chiamata in Chat Voice con il gruppo [GROUP]. +Clicca Accetta per unirti alla chiamata oppure Declina per declinare l'invito. Clicca Blocca per bloccare questo chiamante. <form name="form"> <button name="Accept" text="Accetta"/> <button name="Decline" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="VoiceInviteAdHoc"> - [NAME] ha iniziato una chiamata Voice Chat mediante una conferenza chat.. -Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + [NAME] si è aggiunto alla chiamata in Chat Voice con una conferenza. +Clicca Accetta per unirti alla chiamata oppure Declina to declinare l'invito. Clicca Blocca per bloccare questo chiamante. <form name="form"> <button name="Accept" text="Accetta"/> <button name="Decline" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="InviteAdHoc"> - [NAME] ti ha invitato ad una conferenza chat. -Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + [NAME] ti sta invitando ad una conferenza in chat. +Clicca Accetta per unirti alla chat oppure Declina per declinare l'invito. Clicca Blocca per bloccare questo chiamante. <form name="form"> <button name="Accept" text="Accetta"/> <button name="Decline" text="Rifiuta"/> - <button name="Mute" text="Muta"/> + <button name="Mute" text="Blocca"/> </form> </notification> <notification name="VoiceChannelFull"> @@ -2997,25 +2520,25 @@ Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&a Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un'altra area. </notification> <notification name="VoiceChannelDisconnected"> - Sei stato disconnesso da [VOICE_CHANNEL_NAME]. Ora verrai riconnesso al canale voice chat pubblico. + Sei stato disconnesso da [VOICE_CHANNEL_NAME]. Verrai ora riconnesso alla Chat Voice Locale. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] ha chiuso la chiamata. Ora verrai riconnesso al canale voice chat pubblico. + [VOICE_CHANNEL_NAME] ha terminato la chiamata. Verrai ora riconnesso alla Chat Voice Locale. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] ha rifiutato la tua chiamata. Ora verrai riconnesso al canale voice chat pubblico. + [VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] non è disponibile per rispondere alla chiamata. Ora verrai riconnesso al canale voice chat pubblico. + [VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale. </notification> <notification name="VoiceChannelJoinFailed"> - Impossibile connettersi con [VOICE_CHANNEL_NAME], si prega di riprovare più tardi. Ora verrai riconnesso al canale voice chat pubblico. + Connessione a [VOICE_CHANNEL_NAME] fallita, riprova più tardi. Verrai ora riconnesso alla Chat Voice Locale. </notification> <notification name="VoiceLoginRetry"> Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto. </notification> <notification name="Cannot enter parcel: not a group member"> - Non puoi entrare nel terreno, non sei un membro del gruppo appropriato. + Soltanto i membri di uno specifico gruppo possono visitare quest'area. </notification> <notification name="Cannot enter parcel: banned"> Non puoi entrare nel terreno, sei stato bloccato. @@ -3030,18 +2553,58 @@ Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&a Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi. </notification> <notification name="ServerVersionChanged"> - La regione in cui sei entrato, gira su una versione di simulatore differente. Fai clic su questo messaggio per i dettagli. + Sei appena entrato in una regione che usa una versione differente del server, questo potrebbe influenzare le prestazioni. [[URL] Guarda le Release Notes.] + </notification> + <notification name="UnsupportedCommandSLURL"> + Lo SLurl che hai cliccato non è attivo. + </notification> + <notification name="BlockedSLURL"> + Uno SLurl è stato ricevuto da un browser sconosciuto e per la tua sicurezza è stato bloccato. </notification> - <notification name="UnableToOpenCommandURL"> - L'URL che hai selezionato non può essere aperto da questo browser. + <notification name="ThrottledSLURL"> + Multipli SLurls sono stati ricevuti da un browser sconosciuto in un breve periodo. +Per la tua sicurezza verranno bloccati per alcuni secondi. + </notification> + <notification name="IMToast"> + [MESSAGE] + <form name="form"> + <button name="respondbutton" text="Rispondi"/> + </form> + </notification> + <notification name="AttachmentSaved"> + L'Allegato (Attachment) è stato salvato. + </notification> + <notification name="UnableToFindHelpTopic"> + Impossibilitato a trovare il tema aiuto per questo elemento (nozione)???!!!!. + </notification> + <notification name="ObjectMediaFailure"> + Errore del Server: aggiornamento del Media o mancato funzionamento. +'[ERROR]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TextChatIsMutedByModerator"> + Il tuo testo nella chat è stato interrotto dal moderatore. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + La tua voce è stata interrotta dal moderatore. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmClearTeleportHistory"> + Sei sicuro di volere cancellare la cronologia dei tuoi teleport? + <usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + Il bottone selezionato non può essere mostrato in questo momento. +Il bottone verrà mostrato quando ci sarà abbastanza spazio. </notification> <global name="UnsupportedCPU"> - La velocità della tua CPU non soddisfa i requisiti minimi. </global> <global name="UnsupportedGLRequirements"> - Sembra che tu non abbia i requisiti appropriati hardware per [APP_NAME]. [APP_NAME] ha bisogno di una scheda grafica OpenGL che abbia il supporto multitexture. Se ritieni di avere l'hardware giusto verifica di avere installati i driver più aggiornati per la tua scheda grafica e gli aggiornamenti e service pack appropriati per il tuo sistema operativo. + Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se tu ce l'hai, dovresti accertarti di avere i driver, i service pack e le patch più recenti della scheda grafica e del tuo sistema operativo. -Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support +Se continui ad avere problemi, visita [SUPPORT_SITE]. </global> <global name="UnsupportedCPUAmount"> 796 @@ -3055,10 +2618,8 @@ Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support <global name="UnsupportedRAM"> - La memoria del tuo sistema non soddisfa i requisiti minimi. </global> - <global name="PermYes"> - Si - </global> - <global name="PermNo"> - No + <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> + Se possiedi una parte di terra, puoi creare qui la tua ubicazione di casa. +Altrimenti, puoi guardare sulla Mappa e trovare luoghi segnalati come "Infohub". </global> </notifications> diff --git a/indra/newview/skins/default/xui/it/panel_active_object_row.xml b/indra/newview/skins/default/xui/it/panel_active_object_row.xml new file mode 100644 index 00000000000..b8cca6f01ac --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + Oggetto sconosciuto + </string> + <text name="object_name"> + Oggetto senza nome + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml new file mode 100644 index 00000000000..4a7c9b11c74 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <panel name="panel_call_buttons"> + <button label="Chiama" name="call_btn"/> + <button label="Abbandona Chiamata" name="end_call_btn"/> + <button label="Voice Controls" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml new file mode 100644 index 00000000000..40f805774e7 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT]s + </string> + <string name="FormatMinutes"> + [COUNT]m + </string> + <string name="FormatHours"> + [COUNT]h + </string> + <string name="FormatDays"> + [COUNT]d + </string> + <string name="FormatWeeks"> + [COUNT]w + </string> + <string name="FormatMonths"> + [COUNT]mon + </string> + <string name="FormatYears"> + [COUNT]y + </string> + <text name="avatar_name" value="Sconosciuto"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml new file mode 100644 index 00000000000..cf833924aec --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="block_list_panel"> + <text name="title_text"> + Lista bloccata + </text> + <scroll_list name="blocked" tool_tip="Lista dei residenti bloccati"/> + <button label="Blocca il Residente..." label_selected="Blocca Residente..." name="Block resident..." tool_tip="Scegli un residente da bloccare"/> + <button label="Blocca l'oggetto per nome..." label_selected="Blocca l'oggetto per nome..." name="Block object by name..."/> + <button label="Sblocca" label_selected="Sblocca" name="Unblock" tool_tip="Rimuovi dalla lista il residente o l'oggetto bloccato"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray.xml b/indra/newview/skins/default/xui/it/panel_bottomtray.xml new file mode 100644 index 00000000000..f2aab63dce9 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_bottomtray.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Microfono on/off + </string> + <string name="VoiceControlBtnToolTip"> + Mostra/nascondi il pannello voice control + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="gesture_panel"> + <gesture_combo_box label="Gesture" name="Gesture" tool_tip="Mostra/nascondi gestures"/> + </layout_panel> + <layout_panel name="movement_panel"> + <button label="Sposta" name="movement_btn" tool_tip="Mostra/nascondi i controlli del movimento"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Visualizza" name="camera_btn" tool_tip="Mostra/nascondi i controlli della camera"/> + </layout_panel> + <layout_panel name="snapshot_panel"> + <button label="" name="snapshots" tool_tip="Scatta una foto"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_classified_info.xml b/indra/newview/skins/default/xui/it/panel_classified_info.xml new file mode 100644 index 00000000000..2ba127d34a5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_classified_info.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <text name="title" value="Info sugli Annunci"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="classified_name" value="[nome]"/> + <text name="classified_location" value="[caricando...]"/> + <text name="content_type" value="[tipo di contenuto]"/> + <text name="category" value="[categoria]"/> + <check_box label="Auto rinnovo settimanale" name="auto_renew"/> + <text name="price_for_listing" tool_tip="Prezzo di listino."> + L$[PREZZO] + </text> + <text name="classified_desc" value="[descrizione]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleport" name="teleport_btn"/> + <button label="Mappa" name="show_on_map_btn"/> + <button label="Modifica" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml new file mode 100644 index 00000000000..652bef04303 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_alpha_panel"> + <panel name="avatar_alpha_color_panel"> + <texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Click to choose a picture"/> + <texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha dell'occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegliere una fotografia"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_classified.xml b/indra/newview/skins/default/xui/it/panel_edit_classified.xml new file mode 100644 index 00000000000..81ef121dd81 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_classified.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Modifica gli Annunci" name="panel_edit_classified"> + <panel.string name="location_notice"> + (sarà aggiornato dopo il salvataggio) + </panel.string> + <text name="title"> + Modifica gli Annunci + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Clicca per selezionare un'immagine"/> + <text name="Name:"> + Titolo: + </text> + <text name="description_label"> + Descrizione: + </text> + <text name="location_label"> + Luogo: + </text> + <text name="classified_location"> + caricando... + </text> + <button label="Imposta sul luogo attuale" name="set_to_curr_location_btn"/> + <spinner label="L$" name="price_for_listing" tool_tip="Fissare il Prezzo." value="50"/> + <check_box label="Auto-rinnovo settimanale" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Salva" name="save_changes_btn"/> + <button label="Cancella" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_eyes.xml b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml new file mode 100644 index 00000000000..3b1e51e759d --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_eyes_panel"> + <panel name="avatar_eye_color_panel"> + <texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere una fotografia"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Occhi"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_gloves.xml b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml new file mode 100644 index 00000000000..2a80d6df3d3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_gloves_panel"> + <panel name="avatar_gloves_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Guanti"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_hair.xml b/indra/newview/skins/default/xui/it/panel_edit_hair.xml new file mode 100644 index 00000000000..137a5cabeb6 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_hair.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_hair_panel"> + <panel name="avatar_hair_color_panel"> + <texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere una fotografia"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Colore"/> + <accordion_tab name="hair_style_tab" title="Stile"/> + <accordion_tab name="hair_eyebrows_tab" title="Sopracciglia"/> + <accordion_tab name="hair_facial_tab" title="Facciale"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_jacket.xml b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml new file mode 100644 index 00000000000..43c825ff73e --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_jacket_panel"> + <panel name="avatar_jacket_color_panel"> + <texture_picker label="Tessuto superiore" name="Upper Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <texture_picker label="Tessuto inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="Giacca"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_pants.xml b/indra/newview/skins/default/xui/it/panel_edit_pants.xml new file mode 100644 index 00000000000..cbab711fb1e --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_pants.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_pants_panel"> + <panel name="avatar_pants_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Pantaloni"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_pick.xml b/indra/newview/skins/default/xui/it/panel_edit_pick.xml new file mode 100644 index 00000000000..7f2e82e4ffc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Modifica scelta ????" name="panel_edit_pick"> + <text name="title"> + Modifica scelta ???? + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Clicca per selezionare un'immagine"/> + <text name="Name:"> + Titolo: + </text> + <text name="description_label"> + Descrizione: + </text> + <text name="location_label"> + Luogo: + </text> + <text name="pick_location"> + caricando... + </text> + <button label="Imposta come luogo attuale" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Salva [WHAT]" name="save_changes_btn"/> + <button label="Cancella" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_profile.xml b/indra/newview/skins/default/xui/it/panel_edit_profile.xml index 33f3c367c2e..b9779c77b56 100644 --- a/indra/newview/skins/default/xui/it/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_profile.xml @@ -1,45 +1,48 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="edit_profile_panel"> - <string name="CaptionTextAcctInfo"> - [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] - </string> - <string name="AcctTypeResident" - value="Residente" /> - <string name="AcctTypeTrial" - value="Prova" /> - <string name="AcctTypeCharterMember" - value="Membro privilegiato" /> - <string name="AcctTypeEmployee" - value="Impiegato della Linden Lab" /> - <string name="PaymentInfoUsed" - value="Info. di pagamento usate" /> - <string name="PaymentInfoOnFile" - value="Info. di pagamento in archivio" /> - <string name="NoPaymentInfoOnFile" - value="Nessuna info. di pagamento" /> - <string name="AgeVerified" - value="Età verificata" /> - <string name="NotAgeVerified" - value="Età non verificata" /> - <string name="partner_edit_link_url"> - http://www.secondlife.com/account/partners.php?lang=it - </string> - <panel name="scroll_content_panel"> - <panel name="data_panel" > - <panel name="lifes_images_panel"> - <panel name="second_life_image_panel"> - <text name="second_life_photo_title_text"> - [SECOND_LIFE]: - </text> - </panel> - </panel> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="text_box3"> - Risposta agli IM quando sono in 'Occupato': - </text> - </panel> - </panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Modifica del profilo" name="edit_profile_panel"> + <string name="CaptionTextAcctInfo"> + [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([ETA']) + </string> + <string name="AcctTypeResident" value="Residente"/> + <string name="AcctTypeTrial" value="Prova"/> + <string name="AcctTypeCharterMember" value="Membro privilegiato"/> + <string name="AcctTypeEmployee" value="Impiegato della Linden Lab"/> + <string name="PaymentInfoUsed" value="Info. di pagamento usate"/> + <string name="PaymentInfoOnFile" value="Info. di pagamento in archivio"/> + <string name="NoPaymentInfoOnFile" value="Nessuna info. di pagamento"/> + <string name="AgeVerified" value="Età verificata"/> + <string name="NotAgeVerified" value="Età non verificata"/> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=it + </string> + <string name="no_partner_text" value="Nessuno"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="data_panel"> + <panel name="lifes_images_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Clicca per selezionare un'immagine"/> + </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Mondo Reale:"/> + </panel> + <icon label="" name="real_world_edit_icon" tool_tip="Clicca per selezionare un'immagine"/> + <text name="title_homepage_text"> + Homepage: + </text> + <check_box label="Mostrami nei risultati della ricerca" name="show_in_search_checkbox"/> + <text name="title_acc_status_text" value="Mio Account:"/> + <text name="my_account_link" value="[[URL] Vai al mio pannello personale]"/> + <text name="acc_status_text" value="Residente. No payment info on file."/> + <text name="title_partner_text" value="Mio Partner:"/> + <text name="partner_edit_link" value="[[URL] Modifica]"/> + </panel> + </panel> + </scroll_container> + <panel name="profile_me_buttons_panel"> + <button label="Salva le modifiche" name="save_btn"/> + <button label="Cancella" name="cancel_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml new file mode 100644 index 00000000000..f22b393ecd8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_shape.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_shape_panel"> + <panel name="avatar_sex_panel"> + <text name="gender_text"> + Sesso: + </text> + <radio_group name="sex_radio"> + <radio_item label="Femminile" name="radio"/> + <radio_item label="Maschile" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Corpo"/> + <accordion_tab name="shape_head_tab" title="Testa"/> + <accordion_tab name="shape_eyes_tab" title="Occhi"/> + <accordion_tab name="shape_ears_tab" title="Orecchie"/> + <accordion_tab name="shape_nose_tab" title="Naso"/> + <accordion_tab name="shape_mouth_tab" title="Bocca"/> + <accordion_tab name="shape_chin_tab" title="Mento"/> + <accordion_tab name="shape_torso_tab" title="Busto"/> + <accordion_tab name="shape_legs_tab" title="Gambe"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_shirt.xml b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml new file mode 100644 index 00000000000..5d902ae40b3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_shirt_panel"> + <panel name="avatar_shirt_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una foto"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Camicia"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_shoes.xml b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml new file mode 100644 index 00000000000..bd1fa5b16d2 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_shoes_panel"> + <panel name="avatar_shoes_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="Scarpe"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml new file mode 100644 index 00000000000..2fa76d4afc1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_skin.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_skin_panel"> + <panel name="avatar_skin_color_panel"> + <texture_picker label="Tatuaggi Testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Colore della pelle"/> + <accordion_tab name="skin_face_tab" title="Dettagli del Viso"/> + <accordion_tab name="skin_makeup_tab" title="Trucco"/> + <accordion_tab name="skin_body_tab" title="Dettagli del Corpo"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_skirt.xml b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml new file mode 100644 index 00000000000..e036fff67ef --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_skirt_panel"> + <panel name="avatar_skirt_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Gonna"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_socks.xml b/indra/newview/skins/default/xui/it/panel_edit_socks.xml new file mode 100644 index 00000000000..1d1eb4bd3a7 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_socks.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_socks_panel"> + <panel name="avatar_socks_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una foto"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="Calze"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml new file mode 100644 index 00000000000..5435a28ff91 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_tattoo_panel"> + <panel name="avatar_tattoo_color_panel"> + <texture_picker label="Tatuaggio sulla testa" name="Head Tattoo" tool_tip="Clicca per scegliere una foto"/> + <texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una foto"/> + <texture_picker label="Tatuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una foto"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_underpants.xml b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml new file mode 100644 index 00000000000..ca2ba3ca011 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_underpants_panel"> + <panel name="avatar_underpants_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Slip"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml new file mode 100644 index 00000000000..cf44dad464f --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_undershirt_panel"> + <panel name="avatar_undershirt_color_panel"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Maglietta intima"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml new file mode 100644 index 00000000000..baf585dad06 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Indossabile" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Modifica la Shape + </string> + <string name="edit_skin_title"> + Modifica la Skin + </string> + <string name="edit_hair_title"> + Modifica capelli + </string> + <string name="edit_eyes_title"> + Modifica occhi + </string> + <string name="edit_shirt_title"> + Modifica camicia + </string> + <string name="edit_pants_title"> + Modifica pantaloni + </string> + <string name="edit_shoes_title"> + Modifica scarpe + </string> + <string name="edit_socks_title"> + Modifica calze + </string> + <string name="edit_jacket_title"> + Modifica Giacca + </string> + <string name="edit_skirt_title"> + Modifica gonna + </string> + <string name="edit_gloves_title"> + Modifica guanti + </string> + <string name="edit_undershirt_title"> + Modifica maglietta intima + </string> + <string name="edit_underpants_title"> + Modifica slip + </string> + <string name="edit_alpha_title"> + Modifica Alpha Mask + </string> + <string name="edit_tattoo_title"> + Modifica tatuaggio + </string> + <string name="shape_desc_text"> + Shape: + </string> + <string name="skin_desc_text"> + Skin: + </string> + <string name="hair_desc_text"> + Capelli: + </string> + <string name="eyes_desc_text"> + Occhi: + </string> + <string name="shirt_desc_text"> + Camicia: + </string> + <string name="pants_desc_text"> + Pantaloni: + </string> + <string name="shoes_desc_text"> + Scarpe: + </string> + <string name="socks_desc_text"> + Calze: + </string> + <string name="jacket_desc_text"> + Giacca: + </string> + <string name="skirt_skirt_desc_text"> + Giacca: + </string> + <string name="gloves_desc_text"> + Guanti: + </string> + <string name="undershirt_desc_text"> + Maglietta intima: + </string> + <string name="underpants_desc_text"> + Slip: + </string> + <string name="alpha_desc_text"> + Alpha Mask + </string> + <string name="tattoo_desc_text"> + Tatuaggio: + </string> + <text name="edit_wearable_title" value="Modifica Shape"/> + <panel label="Camicia" name="wearable_type_panel"> + <text name="description_text" value="Shape:"/> + </panel> + <panel name="button_panel"> + <button label="Salva con nome" name="save_as_button"/> + <button label="Ripristina" name="revert_button"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_friends.xml b/indra/newview/skins/default/xui/it/panel_friends.xml index e2eb3dd6e76..a3a985f5aa6 100644 --- a/indra/newview/skins/default/xui/it/panel_friends.xml +++ b/indra/newview/skins/default/xui/it/panel_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Amici multipli... + Amici multipli </string> <scroll_list name="friend_list" tool_tip="Tieni premuto shift o control mentre clicchi per selezionare più di un amico"> <column name="icon_online_status" tool_tip="Stato Online"/> @@ -13,8 +13,8 @@ </scroll_list> <button label="IM/Chiama" name="im_btn" tool_tip="Apri una sessione di IM - Messaggio Privato"/> <button label="Profilo" name="profile_btn" tool_tip="Mostra foto, gruppi, ed altre informazioni"/> - <button label="Teleport..." name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/> - <button label="Paga..." name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/> - <button label="Rimuovi..." name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/> - <button label="Aggiungi..." name="add_btn" tool_tip="Offri amicizia ad un residente"/> + <button label="Teleport" name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/> + <button label="Paga" name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/> + <button label="Rimuovi" name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/> + <button label="Aggiungi" name="add_btn" tool_tip="Offri amicizia ad un residente"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_control_panel.xml b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml new file mode 100644 index 00000000000..c2bceaeef60 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <button label="Profilo del Gruppo" name="group_info_btn"/> + <panel name="panel_call_buttons"> + <button label="Chiama Gruppo" name="call_btn"/> + <button label="Chiudi Chiamata" name="end_call_btn"/> + <button label="Apri Controlli Voice" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml index 2bc4d820828..0ca1ce20642 100644 --- a/indra/newview/skins/default/xui/it/panel_group_general.xml +++ b/indra/newview/skins/default/xui/it/panel_group_general.xml @@ -1,72 +1,37 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Generale" name="general_tab"> - <string name="help_text"> - Il pannello 'Generale' contiene informazioni generali riguardanti il gruppo, un elenco dei proprietari e i membri visibili, le preferenze generali di gruppo e le opzioni dei membri. + <panel.string name="help_text"> + La tabella generale contiene informazioni generali su questo gruppo, lista dei membri, preferenze generali del gruppo e opzioni dei membri. -Passa il mouse sulle opzioni per un aiuto aggiuntivo. - </string> - <string name="group_info_unchanged"> - Le informazioni generali del gruppo sono cambiate. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Scrivi il nome del nuovo gruppo qui" name="group_name_editor"/> - <text name="group_name"> - Scrivi il nome del nuovo gruppo qui - </text> - <text name="prepend_founded_by"> - Fondato da - </text> - <text name="founder_name"> - (attendi) - </text> - <text name="group_charter_label"> - Statuto del gruppo - </text> - <texture_picker label="Immagine del gruppo" name="insignia" tool_tip="Clicca per scegliere una immagine"/> +Muovi il tuo mouse sopra le opzioni per maggior aiuto. + </panel.string> + <panel.string name="group_info_unchanged"> + Le informazioni generali sul gruppo sono cambiate + </panel.string> + <panel.string name="incomplete_member_data_str"> + Rilevando i dati dei membri + </panel.string> <text_editor name="charter"> Statuto del gruppo </text_editor> - <button label="Unisciti (0 L$)" label_selected="Unisciti (0 L$)" name="join_button"/> - <button label="Visualizza dettagli" label_selected="Visualizza dettagli" name="info_button"/> - <text name="text_owners_and_visible_members"> - Proprietari & Membri visibili - </text> - <text name="text_owners_are_shown_in_bold"> - (I proprietari sono scritti in neretto) - </text> <name_list name="visible_members"> - <name_list.columns label="Nome del membro" name="name"/> + <name_list.columns label="Membro" name="name"/> <name_list.columns label="Titolo" name="title"/> - <name_list.columns label="Ultimo login" name="online"/> </name_list> - <text name="text_group_preferences"> - Preferenze di gruppo + <text name="active_title_label"> + Mio Titolo </text> + <combo_box name="active_title" tool_tip="Imposta il titolo nella tag del tuo avatar quando questo gruppo è attivo."/> + <check_box label="Ricevi notice dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere Notice da questo. De-seleziona questa casella se il gruppo ti manda spam."/> + <check_box label="Mostra nel mio Profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi mostrare questo gruppo nel tuo profilo"/> <panel name="preferences_container"> - <check_box label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Lascia che i residenti vedano questo gruppo nella ricerca."/> - <check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di unirsi senza essere invitati."/> - <check_box label="Tassa di iscrizione:" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa di iscrizione per unirsi al gruppo."/> - <spinner width="60" left_delta="136" name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa per unirsi al gruppo. La tassa di iscrizione è selezionata."/> + <check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di aderire senza essere invitati."/> + <check_box label="Tassa d'iscrizione" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa d'iscrizione per aderire al gruppo"/> + <spinner label="L$" left_delta="136" name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa d'iscrizione quando tassa d'iscrizione è selezionata." width="60"/> <combo_box name="group_mature_check" tool_tip="Imposta se le informazioni sul tuo gruppo sono da considerarsi Mature."> - <combo_box.item name="select_mature" label="- Seleziona -"/> - <combo_box.item name="mature" label="Contenuto Mature"/> - <combo_box.item name="pg" label="Contenuto PG"/> + <combo_box.item label="Contenuto PG" name="pg"/> + <combo_box.item label="Contenuto Mature" name="mature"/> </combo_box> - <panel name="title_container"> - <text name="active_title_label"> - Il mio titolo attivo - </text> - <combo_box name="active_title" tool_tip="Imposta il titolo che appare sulla testa del tuo avatar quando il gruppo è attivo."/> - </panel> - <check_box label="Ricevi avvisi dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere avvisi da questo gruppo. Togli la spunta da questa casella se questo gruppo ti sta spammando."/> - <check_box label="Elenca il gruppo nel mio profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi elencare questo gruppo nel tuo profilo"/> + <check_box initial_value="true" label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Permetti alle persone di vedere questo gruppo nei risultati del Cerca"/> </panel> - <string name="incomplete_member_data_str"> - Rilevando i dati dei membri - </string> - <string name="confirm_group_create_str"> - Creare questo gruppo ti costerà 100 L$. -Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 100 L$ per creare questo gruppo? -Fai attenzione che se nessun altro viene unito al gruppo entro 48 ore, questo gruppo verrà dismesso e il nome del gruppo non sarà più disponibile in futuro. - </string> </panel> 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 new file mode 100644 index 00000000000..26255943ed6 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Informazioni sul gruppo" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + Ci sono variazioni non salvate nella tabella attuale + </panel.string> + <panel.string name="want_apply_text"> + Vuoi salvare queste variazioni? + </panel.string> + <panel.string name="group_join_btn"> + Aderisci (L$[AMOUNT]) + </panel.string> + <panel.string name="group_join_free"> + Gratis + </panel.string> + <text name="group_name" value="(Caricando...)"/> + <line_editor label="Scrivi qui il nuovo nome del tuo gruppo" name="group_name_editor"/> + <texture_picker label="" name="insignia" tool_tip="Clicca per scegliere uan fotografia"/> + <text name="prepend_founded_by"> + Fondatore: + </text> + <name_box initial_value="(recuperando)" name="founder_name"/> + <text name="join_cost_text"> + Gratis + </text> + <button label="ADERISCI ORA!" name="btn_join"/> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="Generale"/> + <accordion_tab name="group_roles_tab" title="Ruoli"/> + <accordion_tab name="group_notices_tab" title="Notice"/> + <accordion_tab name="group_land_tab" title="Terra/Beni ?????"/> + </accordion> + <panel name="button_row"> + <button label="Crea" label_selected="Nuovo gruppo" name="btn_create"/> + <button label="Salva" label_selected="Salva" name="btn_apply"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml index cc426f7cd24..643d6b05fd5 100644 --- a/indra/newview/skins/default/xui/it/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml @@ -1,23 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Invita una persona" name="invite_panel"> + <panel.string name="confirm_invite_owner_str"> + Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile! + </panel.string> + <panel.string name="loading"> + (Attendi...) + </panel.string> + <panel.string name="already_in_group"> + Alcuni avatars sono già nel gruppo e non erano stati invitati. + </panel.string> <text name="help_text"> Puoi selezionare più di un residente da invitare nel tuo gruppo. Clicca su 'Scelta residenti' per iniziare. </text> <button label="Scelta residenti" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Tieni premuto il tasto ctrl e clicca i nomi dei residenti per avere una selezione multipla."/> - <button label="Rimuovi i selezionati dall'elenco" name="remove_button" tool_tip="Rimuove i residenti qui sopra selezionati, dall'elenco degli inviti."/> + <name_list name="invitee_list" tool_tip="Tieni premuto il tasto Ctrl e clicca il nome dei residenti per una multi-selezione"/> + <button label="Rimuovi i selezionati dall'elenco" name="remove_button" tool_tip="Rimuovi i residenti selezionati dalla lista invito"/> <text name="role_text"> Scegli che ruolo assegnare loro: </text> - <combo_box name="role_name" tool_tip="Scegli dall'elenco dei ruoli che tu sei abilitato ad assegnare."/> + <combo_box name="role_name" tool_tip="Choose from the list of Roles you are allowed to assign members to"/> <button label="Manda gli inviti" name="ok_button"/> <button label="Annulla" name="cancel_button"/> - <string name="confirm_invite_owner_str"> - Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile! - </string> - <string name="loading"> - (Attendi...) + <string name="GroupInvitation"> + Invito del Gruppo </string> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml index 3e6684ed062..a532e7a5757 100644 --- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terra & L$" name="land_money_tab"> <string name="help_text"> - I terreni di proprietà del gruppo sono elencati insieme ai dettagli delle contribuzioni. Un avviso viene visualizzato se la superficie totale in uso è inferiore o pari al totale delle contribuzioni. Le schede: Pianificazione, Dettagli e Vendite forniscono informazioni sulle finanze del gruppo. + Appare un avviso fino a quando la Terra Totale in Uso è meno o = alla Contribuzione Totale. </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> - Non hai i permessi necessari per visualizzare la terra posseduta dal gruppo. + Non hai i permessi per vedere la terra posseduta dal gruppo </string> <string name="cant_view_group_accounting_text"> - Non hai i permessi necessari per visualizzare i movimenti finanziari del gruppo. + Non hai i permessi per vedere le informazioni sulla contabilità del gruppo. </string> <string name="loading_txt"> Attendi... @@ -17,14 +17,14 @@ Terra posseduta dal gruppo </text> <scroll_list name="group_parcel_list"> - <column label="Nome dell'appezzamento" name="name"/> + <column label="Parcel" name="name"/> <column label="Regione" name="location"/> <column label="Tipo" name="type"/> <column label="Area" name="area"/> </scroll_list> - <button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="map_button" left="282" width="130"/> + <button label="Mappa" label_selected="Mappa" left="282" name="map_button" width="130"/> <text name="total_contributed_land_label"> - Total Contribution: + Contribuzione Totale: </text> <text name="total_contributed_land_value"> [AREA] m² @@ -36,49 +36,48 @@ [AREA] m² </text> <text name="land_available_label"> - Terra disponibile: + Terreno disponibile: </text> <text name="land_available_value"> [AREA] m² </text> <text name="your_contribution_label"> - Il tuo contributo: + La tua contribuzione: </text> <string name="land_contrib_error"> - Non è possibile impostare i tuoi contributi in terra. + Incapace di impostare la tua contribuzione di terreno </string> <text name="your_contribution_units"> - ( m² ) + m² </text> <text name="your_contribution_max_value"> - ([AMOUNT] massimo) + ([IMPORTO] max) </text> <text name="group_over_limit_text"> - I membri del gruppo devono contribuire con più crediti per mantenere -la quantità  di terra in uso. + Sono necessari maggiori crediti di terreno per mantenere la terra in uso </text> <text name="group_money_heading"> L$ del gruppo </text> <tab_container name="group_money_tab_container"> - <panel label="Pianificazione" name="group_money_planning_tab"> + <panel label="PIANIFICAZIONE" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Conteggio... + Caricando... </text_editor> </panel> - <panel label="Dettagli" name="group_money_details_tab"> + <panel label="DETTAGLI" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Calcolo... + Caricando... </text_editor> - <button width="90" label="< Precedente" label_selected="< Precedente" name="earlier_details_button" tool_tip="Vai ai dettagli precedenti"/> - <button left_delta="260" width="90" label="Successivo >" label_selected="Successivo >" name="later_details_button" tool_tip="Vai ai dettagli successivi"/> + <button label="< Precedente" label_selected="< Precedente" name="earlier_details_button" tool_tip="Indietro" width="90"/> + <button label="Successivo >" label_selected="Successivo >" left_delta="260" name="later_details_button" tool_tip="Prossimo" width="90"/> </panel> - <panel label="Vendite" name="group_money_sales_tab"> + <panel label="VENDITE" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Calcolo... + Caricando... </text_editor> - <button width="90" label="< Precedente" label_selected="< Precedente" name="earlier_sales_button" tool_tip="Vai ai dettagli precedenti"/> - <button left_delta="260" width="90" label="Successivo >" label_selected="Successivo >" name="later_sales_button" tool_tip="Vai ai dettagli successivi"/> + <button label="< Precedente" label_selected="< Precedente" name="earlier_sales_button" tool_tip="Indietro" width="90"/> + <button label="Successivo >" label_selected="Successivo >" left_delta="260" name="later_sales_button" tool_tip="Prossimo" width="90"/> </panel> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml new file mode 100644 index 00000000000..3e5419d1bbe --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="group_list_item"> + <text name="group_name" value="Sconosciuto"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml index c6ef84e220d..dbeb9d56ffc 100644 --- a/indra/newview/skins/default/xui/it/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml @@ -1,58 +1,55 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notice" name="notices_tab"> - <string name="help_text"> + <panel.string name="help_text"> Le notice sono un modo veloce per comunicare in un gruppo diffondendo un messaggio e recapitando un eventuale oggetto allegato. Le notice arrivano solo ai membri del gruppo il cui ruolo è abilitato a riceverli. Puoi disattivare la ricezione delle notice nella finestra principale. - </string> - <string name="no_notices_text"> - Non ci sono vecchie notice. - </string> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Archivio delle notice del gruppo - </text> + </panel.string> + <panel.string name="no_notices_text"> + Non ci sono vecchie Notice + </panel.string> <text name="lbl2"> - Le notice sono conservate per 14 giorni. Il numero delle notice è limitato a 200 notice per gruppo al giorno. + Le Notice sono conservate per 14 giorni. +Massimo 200 per gruppo al giorno </text> <scroll_list name="notice_list"> - <column label="Oggetto" name="subject"/> - <column label="Da" name="from"/> - <column label="Data" name="date"/> + <scroll_list.columns label="Oggetto" name="subject"/> + <scroll_list.columns label="Da" name="from"/> + <scroll_list.columns label="Data" name="date"/> </scroll_list> <text name="notice_list_none_found"> - Nessuna notice trovata. + Nessuna trovata </text> - <button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice"/> - <button label="Aggiorna" label_selected="Aggiorna l'elenco" name="refresh_notices"/> + <button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea una nuova notice"/> + <button label="Aggiorna" label_selected="Aggiorna l'elenco" name="refresh_notices" tool_tip="Aggiorna la lista delle notice"/> <panel label="Crea una nuova notice" name="panel_create_new_notice"> <text name="lbl"> Crea una notice </text> - <text name="lbl2"> - Puoi aggiungere un solo allegato alla notice trascinandolo dal tuo inventario in questa finestra. L'allegato deve essere copiabile e cedibile, e non puoi allegare una cartella. - </text> - <text name="lbl3" left="20"> + <text left="20" name="lbl3"> Oggetto: </text> - <line_editor name="create_subject" width="251" left_delta="61"/> - <text name="lbl4" left="15" width="60"> + <line_editor left_delta="61" name="create_subject" width="251"/> + <text left="15" name="lbl4" width="60"> Messaggio: </text> - <text_editor name="create_message" left_delta="66" width="330"/> + <text_editor left_delta="66" name="create_message" width="330"/> <text name="lbl5" width="68"> Allega: </text> - <line_editor name="create_inventory_name" width="190" left_delta="74"/> - <button label="Rimuovi allegato" label_selected="Rimuovi allegato" name="remove_attachment"/> - <button label="Invia" label_selected="Invia" name="send_notice"/> - <panel name="drop_target" tool_tip="Trascina un oggetto dall'inventario sulla casella del messaggio per inviarlo con la notice. Devi avere il permesso di copia e trasferimento dell'oggetto per poterlo inviare con la notice."/> + <line_editor left_delta="74" name="create_inventory_name" width="190"/> + <text name="string"> + Trascina e rilascia qui l'oggetto da allegare: + </text> + <button label="Rimuovi" label_selected="Rimuovi allegato" name="remove_attachment"/> + <button label="Spedisci" label_selected="Spedisci" name="send_notice"/> + <group_drop_target name="drop_target" tool_tip="Trascina un oggetto dall'inventario nello spazio ALLEGA per spedirlo con la notice. Devi avere i permessi copy e transfer relativi all'oggetto da allegare."/> </panel> <panel label="Vedi le notice precedenti" name="panel_view_past_notice"> <text name="lbl"> Notice archiviate </text> <text name="lbl2"> - Per mandare una nuova notice, clicca 'Crea una nuova notice' qui sopra. + Per spedire una nuova notice, clicca il bottone + </text> <text name="lbl3"> Oggetto: @@ -60,6 +57,6 @@ Puoi disattivare la ricezione delle notice nella finestra principale. <text name="lbl4"> Messaggio: </text> - <button label="Apri l'allegato" label_selected="Apri l'allegato" name="open_attachment"/> + <button label="Apri allegato" label_selected="Apri l'allegato" name="open_attachment"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_notify.xml b/indra/newview/skins/default/xui/it/panel_group_notify.xml new file mode 100644 index 00000000000..de6b139793e --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_group_notify.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="instant_message" name="panel_group_notify"> + <panel label="header" name="header"> + <text name="title" value="Nome di chi spedisce / Nome del Gruppo"/> + </panel> + <text name="attachment" value="Attachment"/> + <button label="Ok" name="btn_ok"/> +</panel> 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 8dfdd5a46eb..bc98fdacaf9 100644 --- a/indra/newview/skins/default/xui/it/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml @@ -1,103 +1,60 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Membri & Ruoli" name="roles_tab"> - <string name="default_needs_apply_text"> - Ci sono modifiche non applicate nella scheda attuale. - </string> - <string name="want_apply_text"> - Vuoi applicare questi cambiamenti? - </string> - <button label="?" name="help_button"/> - <panel name="members_header"> - <text name="static"> - Membri & Ruoli - </text> - <text name="static2"> - I membri del Gruppo hanno ricevuto ruoli con delle abilità . Queste -impostazioni possono essere facilmente personalizzate, permettendo -una maggiore organizzazione e flessibilità . - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Ruoli - </text> - <text name="role_properties_modifiable"> - Seleziona un ruolo qui sotto. È possibile modificarne il nome, -la descrizione e il titolo. - </text> - <text name="role_properties_not_modifiable"> - Seleziona un ruolo qui sotto per vederne le proprietà , i membri -e i permessi abilitati. - </text> - <text bottom_delta="-28" name="role_actions_modifiable"> - Puoi anche assegnare abilità al ruolo. - </text> - <text name="role_actions_not_modifiable"> - Puoi vedere, ma non modificare, le abilità assegnate. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Abilità - </text> - <text name="static2"> - Puoi vedere la descrizione delle abilità e quali ruoli e membri possono -eseguire tali abilità . - </text> - </panel> + <panel.string name="default_needs_apply_text"> + Ci sono modifiche non salvate nella scheda attuale + </panel.string> + <panel.string name="want_apply_text"> + Vuoi salvare queste modifiche? + </panel.string> <tab_container height="164" name="roles_tab_container"> - <panel height="148" label="Membri" name="members_sub_tab" tool_tip="Membri"> - <line_editor bottom="127" name="search_text"/> - <button label="Cerca" name="search_button" width="75"/> - <button label="Mostra tutti" name="show_all_button" left_delta="80"/> - <name_list name="member_list" bottom_delta="-105" height="104" > - <column label="Nome del membro" name="name"/> - <column label="Contributo donato" name="donated"/> - <column label="Ultimo accesso" name="online"/> - </name_list> - <button label="Invita un nuovo membro..." name="member_invite" width="165"/> - <button label="Espellere dal gruppo" name="member_eject"/> - <string name="help_text"> + <panel height="148" label="MEMBRI" name="members_sub_tab" tool_tip="Membri"> + <panel.string name="help_text"> Puoi aggiungere o rimuovere i ruoli assegnati ai membri. Seleziona più membri tenendo premuto il tasto Ctrl e cliccando sui loro nomi. - </string> + </panel.string> + <filter_editor label="Filtra Membri" name="filter_input"/> + <name_list bottom_delta="-105" height="104" name="member_list"> + <name_list.columns label="Nome del Membro" name="name"/> + <name_list.columns label="Donazioni" name="donated"/> + <name_list.columns label="Status" name="online"/> + </name_list> + <button label="Invita" name="member_invite" width="165"/> + <button label="Espelli" name="member_eject"/> </panel> - <panel height="148" label="Ruoli" name="roles_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Cerca" name="search_button" width="75"/> - <button label="Mostra tutti" name="show_all_button" left_delta="80"/> - <scroll_list name="role_list" bottom_delta="-104" height="104"> - <column label="Nome del ruolo" name="name"/> - <column label="Titolo" name="title"/> - <column label="Membri" name="members"/> + <panel height="148" label="RUOLI" name="roles_sub_tab"> + <panel.string name="help_text"> + I ruoli hanno un titolo con un elenco di abilità permesse che i membri possono eseguire. + I membri possono avere uno o più ruoli. Un gruppo può avere fino a 10 ruoli, inclusi il ruolo base o "Membro" e + il ruolo del Capogruppo. + </panel.string> + <panel.string name="cant_delete_role"> + I Ruoli 'Everyone' e 'Owners' sono speciali e non possono essere cancellati. + </panel.string> + <panel.string name="power_folder_icon"> + Cartella Inventario chiusa + </panel.string> + <filter_editor label="Filtra i ruoli" name="filter_input"/> + <scroll_list bottom_delta="-104" height="104" name="role_list"> + <scroll_list.columns label="Ruolo" name="name"/> + <scroll_list.columns label="Titolo" name="title"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="Crea un nuovo ruolo..." name="role_create"/> + <button label="Crea nuovo ruolo" name="role_create"/> <button label="Elimina ruolo" name="role_delete"/> - <string name="help_text"> - I ruoli hanno un titolo e un elenco di abilità permesse -che i membri possono eseguire. I membri possono appartenere a -uno o più ruoli. Un gruppo può avere fino a 10 ruoli, -compresi il ruolo base o 'Membro' e il ruolo del Capogruppo. - </string> - <string name="cant_delete_role"> - I ruoli 'Membro' e 'Capogruppo' sono ruoli speciali e non possono essere eliminati. - </string> </panel> - <panel height="148" label="Abilità " name="actions_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Cerca" name="search_button" width="75"/> - <button label="Visualizza tutto" name="show_all_button" left_delta="80"/> - <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Seleziona una abilità per vederne maggiori dettagli."/> - <string name="help_text"> + <panel height="148" label="ABILITA'" name="actions_sub_tab" tool_tip="Puoi vedere la descrizione dell'abilità e quali Ruoli o Membri possono eseguirla."> + <panel.string name="help_text"> Le abilità permettono ai membri nei ruoli di fare cose specifiche in questo gruppo. C'è una vasta gamma di abilità . - </string> + </panel.string> + <filter_editor label="Filtra Abilità " name="filter_input"/> + <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Seleziona un'abilità per vedere maggiori dettagli."/> </panel> </tab_container> <panel name="members_footer"> <text name="static"> - Ruoli assegnati + Membri assegnati </text> <text name="static2"> Abilità permesse @@ -106,44 +63,44 @@ in questo gruppo. C'è una vasta gamma di abilità . </panel> <panel name="roles_footer"> <text name="static"> - Nome - </text> - <text name="static2"> - Descrizione + Nome del Ruolo </text> <line_editor name="role_name"> Addetti </line_editor> <text name="static3"> - Titolo + Titolo del Ruolo </text> <line_editor name="role_title"> (attendi) </line_editor> + <text name="static2"> + Descrizione + </text> <text_editor name="role_description"> (attendi) </text_editor> <text name="static4"> - Membri assegnati + Ruoli assegnati </text> + <check_box label="Mostrare i membri" name="role_visible_in_list" tool_tip="Imposta nella tabella Generale per i membri con questo ruolo di poter essere visti dalle persone esterne a questo gruppo."/> <text name="static5" tool_tip="Una lista delle abilità che il ruolo ora selezionato può eseguire."> Abilità permesse </text> - <check_box label="I membri sono visibili" name="role_visible_in_list" tool_tip="Serve ad impostare se i membri di questo ruolo sono visibili nel pannello generale ai residenti al di fuori del gruppo."/> <scroll_list name="role_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità ."/> </panel> <panel name="actions_footer"> <text name="static"> - Descrizione + Descrizione abilità </text> <text_editor name="action_description"> Questa abilità è 'Espelli i membri dal gruppo'. Solo un Capogruppo puo espellere un'altro Capogruppo. </text_editor> <text name="static2"> - Ruoli con abilità + Ruoli con questa abilità </text> <text name="static3"> - Membri con abilità + Membri con questa abilità </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_im_control_panel.xml b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml new file mode 100644 index 00000000000..f6c3fa9288a --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <text name="avatar_name" value="Sconosciuto"/> + <button label="Profilo" name="view_profile_btn"/> + <button label="Aggiungi Amico" name="add_friend_btn"/> + <button label="Teleport" name="teleport_btn"/> + <button label="Condividi" name="share_btn"/> + <panel name="panel_call_buttons"> + <button label="Chiama" name="call_btn"/> + <button label="Abbandona chiamata" name="end_call_btn"/> + <button label="Controllo Voice" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_landmark_info.xml b/indra/newview/skins/default/xui/it/panel_landmark_info.xml new file mode 100644 index 00000000000..5908a873ccc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_landmark_info.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="Crea Landmark"/> + <string name="title_edit_landmark" value="Modifica Landmark"/> + <string name="title_landmark" value="Landmark"/> + <string name="not_available" value="(N\A)"/> + <string name="unknown" value="(sconosciuto)"/> + <string name="public" value="(pubblico)"/> + <string name="server_update_text"> + Info sul luogo non disponibili senza l'aggiornamento del server. + </string> + <string name="server_error_text"> + Info su questo luogo non disponibili ora, prova più tardi. + </string> + <string name="server_forbidden_text"> + Info su questo luogo non disponibili a causa delle restrizioni di accesso. Controlla i tuoi permessi con il proprietario del terreno . + </string> + <string name="acquired_date"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </string> + <text name="title" value="Colloca Profilo"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="maturity_value" value="sconosciuto"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Proprietario:"/> + <text name="creator_label" value="Creatore:"/> + <text name="created_label" value="Creato:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Titolo:"/> + <text name="notes_label" value="Mie note:"/> + <text name="folder_label" value="Landmark del luogo:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_landmarks.xml b/indra/newview/skins/default/xui/it/panel_landmarks.xml new file mode 100644 index 00000000000..0efeaac97db --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_landmarks.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Landmarks"> + <accordion name="landmarks_accordion"> + <accordion_tab name="tab_favorites" title="Barra dei Preferiti"/> + <accordion_tab name="tab_landmarks" title="Landmarks"/> + <accordion_tab name="tab_inventory" title="Mio Inventario"/> + <accordion_tab name="tab_library" title="Libreria"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/> + <button name="add_btn" tool_tip="Aggiungi nuovo landmark"/> + <dnd_button name="trash_btn" tool_tip="Rimuovi landmark selezionato"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml index e3cb7473fc4..7706a044faa 100644 --- a/indra/newview/skins/default/xui/it/panel_login.xml +++ b/indra/newview/skins/default/xui/it/panel_login.xml @@ -1,41 +1,34 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_login"> <panel.string name="create_account_url"> - http://join.secondlife.com/index.php?lang=it-IT + http://join.secondlife.com/ </panel.string> <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=it </panel.string> -<panel name="login_widgets"> - <text name="first_name_text" left="20"> - Nome: - </text> - <line_editor left="20" name="first_name_edit" width="126" /> - <text name="last_name_text" left="158"> - Cognome: - </text> - <line_editor left="158" name="last_name_edit" width="126" /> - <text name="password_text"> - Password: - </text> - <text name="start_location_text" left="20" width="105"> - Punto di partenza: - </text> - <combo_box name="start_location_combo" left_delta="105" width="160"> - <combo_box.item name="MyHome" label="Casa Mia" /> - <combo_box.item name="MyLastLocation" label="Ultimo luogo visitato" /> - <combo_box.item name="Typeregionname" label="<Scrivi la regione>" /> - </combo_box> - <check_box label="Ricorda password" name="remember_check" left_delta="168"/> - <button label="Log In" label_selected="Log In" name="connect_btn"/> - <text name="create_new_account_text"> - Registra un account - </text> - <text name="forgot_password_text" left="-240" width="230"> - Hai dimenticato il tuo nome o la password? - </text> - <text name="channel_text"> - [VERSION] - </text> -</panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Nome: + </text> + <line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/> + <line_editor label="Cognome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/> + <check_box label="Ricordare" name="remember_check"/> + <text name="start_location_text"> + Iniziare presso: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Casa mia" name="MyHome"/> + </combo_box> + <button label="Log In" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Aderire + </text> + <text name="login_help"> + Aiuto quando log in? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_main_inventory.xml b/indra/newview/skins/default/xui/it/panel_main_inventory.xml new file mode 100644 index 00000000000..edaab6e60ca --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Cose" name="main inventory panel"> + <panel.string name="Title"> + Cose + </panel.string> + <filter_editor label="Filtro" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Tutti gli elementi" name="All Items"/> + <inventory_panel label="Elementi recenti" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/> + <button name="add_btn" tool_tip="Aggiungi nuovo elemento"/> + <dnd_button name="trash_btn" tool_tip="Rimuovi l'elemento selezionato"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="File" name="File"> + <menu_item_call label="Apri" name="Open"/> + <menu label="Carica nel server" name="upload"> + <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/> + <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/> + <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/> + <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nuova Finestra" name="New Window"/> + <menu_item_call label="Mostra Filtri" name="Show Filters"/> + <menu_item_call label="Cancella Filtri" name="Reset Current"/> + <menu_item_call label="Chiudi tutte le Cartelle" name="Close All Folders"/> + <menu_item_call label="Svuota Cestino" name="Empty Trash"/> + <menu_item_call label="Svuota Oggetti Smarriti" name="Empty Lost And Found"/> + </menu> + <menu label="Crea" name="Create"> + <menu_item_call label="Nuova Cartella" name="New Folder"/> + <menu_item_call label="Nuovo Script" name="New Script"/> + <menu_item_call label="Nuova Notecard" name="New Note"/> + <menu_item_call label="Nuova Gesture" name="New Gesture"/> + <menu label="Nuovi Abiti" name="New Clothes"> + <menu_item_call label="Nuova Camicia" name="New Shirt"/> + <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> + <menu_item_call label="Nuove Scarpe" name="New Shoes"/> + <menu_item_call label="Nuove Calze" name="New Socks"/> + <menu_item_call label="Nuova Giacca" name="New Jacket"/> + <menu_item_call label="Nuova Gonna" name="New Skirt"/> + <menu_item_call label="Nuovi Guanti" name="New Gloves"/> + <menu_item_call label="Nuova Maglietta Intima" name="New Undershirt"/> + <menu_item_call label="Nuovi Slip" name="New Underpants"/> + <menu_item_call label="Nuovo Alfa (Trasparenza)" name="New Alpha"/> + <menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/> + </menu> + <menu label="Nuove Parti del Corpo" name="New Body Parts"> + <menu_item_call label="Nuova Shape" name="New Shape"/> + <menu_item_call label="Nuova Pelle" name="New Skin"/> + <menu_item_call label="Nuovi Capelli" name="New Hair"/> + <menu_item_call label="Nuovi Occhi" name="New Eyes"/> + </menu> + </menu> + <menu label="Ordina" name="Sort"> + <menu_item_check label="Per Nome" name="By Name"/> + <menu_item_check label="Per Data" name="By Date"/> + <menu_item_check label="Cartelle sempre per Nome" name="Folders Always By Name"/> + <menu_item_check label="Cartelle di sistema all'inizio" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml new file mode 100644 index 00000000000..03678ecad50 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_me.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Mio Profilo" name="panel_me"> + <tab_container name="tabs"> + <panel label="PROFILO" name="panel_profile"/> + <panel label="PREFERITI" name="panel_picks"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_general.xml b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml new file mode 100644 index 00000000000..cb629e5cfb4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Generale" name="Media Settings General"> + <text name="home_label"> + Home Page: + </text> + <text name="home_fails_whitelist_label"> + (Questa pagina non passa la lista bianca specifica) + </text> + <line_editor name="home_url" tool_tip="La home page per questa fonte media"/> + <text name="preview_label"> + Anteprima + </text> + <text name="current_url_label"> + Pagina attuale: + </text> + <text name="current_url" tool_tip="La pagina attuale per questa fonte media" value=""/> + <button label="Resetta" name="current_url_reset_btn"/> + <check_box initial_value="false" label="Auto Loop" name="auto_loop"/> + <check_box initial_value="false" label="Primo Click Interagisce" name="first_click_interact"/> + <check_box initial_value="false" label="Auto Zoom" name="auto_zoom"/> + <check_box initial_value="false" label="Auto Play Media" name="auto_play"/> + <text name="media_setting_note"> + Nota: I Residenti possono annullare questa impostazione + </text> + <check_box initial_value="false" label="Auto Scale Media on Face of Object" name="auto_scale"/> + <text name="size_label"> + Misura: + </text> + <text name="X_label"> + X + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml new file mode 100644 index 00000000000..551d86864d9 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Personalizza" name="Media settings for controls"> + <text name="controls_label"> + Controlli: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Standard + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Permetti Navigazione & Interattività " name="perms_owner_interact"/> + <check_box initial_value="false" label="Mostra la barra di controllo" name="perms_owner_control"/> + <check_box initial_value="false" label="Permetti Navigazione & Interattività " name="perms_group_interact"/> + <check_box initial_value="false" label="Mostra la barra di controllo" name="perms_group_control"/> + <check_box initial_value="false" label="Permetti Navigazione & Interattività " name="perms_anyone_interact"/> + <check_box initial_value="false" label="Mostra la barra di controllo" name="perms_anyone_control"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml new file mode 100644 index 00000000000..0df0331198c --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sicurezza" name="Media Settings Security"> + <check_box initial_value="false" label="Accesso permesso solo a URLs specificati (by prefix)" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + Annota che le home page mancate sono segnate: + </text> + <button label="Aggiungi" name="whitelist_add"/> + <button label="Cancella" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + Attenzione: la home page specificata nella Tabella General non ha passato questa lista bianca. E' stata disattivata fino a quando non sarà aggiunta un entrata valid. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_my_profile.xml b/indra/newview/skins/default/xui/it/panel_my_profile.xml new file mode 100644 index 00000000000..60faf4e7c59 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_my_profile.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Profilo" name="panel_profile"> + <string name="no_partner_text" value="Nessuno"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Clicca il pulsante inferiore Modifica Profilo per cambiare immagine"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Clicca il pulsante inferiore Modifica Profilo per cambiare immagine"/> + <text name="title_rw_descr_text" value="Mondo Reale:"/> + </panel> + <text name="me_homepage_text"> + Homepage: + </text> + <text name="title_member_text" value="Membro dal:"/> + <text name="title_acc_status_text" value="Stato dell'account:"/> + <text name="acc_status_text" value="Residente. Nessuna info di pagamento."/> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppi:"/> + </panel> + </scroll_container> + <panel name="profile_buttons_panel"> + <button label="Aggiungi amico" name="add_friend"/> + <button label="IM" name="im"/> + <button label="Chiama" name="call"/> + <button label="Mappa" name="show_on_map_btn"/> + <button label="Teleport" name="teleport"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Modifica Profilo" name="edit_profile_btn" tool_tip="Modifica le tue informazioni personali"/> + <button label="Modifica aspetto" name="edit_appearance_btn" tool_tip="Crea/modifica la tua apparenza: aspetto fisico, vestiti, etc."/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml new file mode 100644 index 00000000000..2e057c29836 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <button name="back_btn" tool_tip="Ritorna al luogo precedente"/> + <button name="forward_btn" tool_tip="Vai ad un luogo"/> + <button name="home_btn" tool_tip="Teleport a casa mia"/> + <location_input label="Luogo" name="location_combo"/> + <search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca"> + <combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="Mostra più dei miei Preferiti"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml new file mode 100644 index 00000000000..7ffe972181b --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> +<panel name="nearby_chat"> + <panel name="chat_caption"> + <text name="sender_name"> + CHAT NEI DINTORNI + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml new file mode 100644 index 00000000000..0361eb49ed8 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="chat_bar"> + <string name="min_width"> + 192 + </string> + <string name="max_width"> + 320 + </string> + <line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per dire, Ctrl+Invio per gridare"/> + <button name="show_nearby_chat" tool_tip="Mostra/Nasconde la chat log nei dintorni"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml new file mode 100644 index 00000000000..ff843c16845 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Note & Privacy" name="panel_notes"> + <layout_stack name="layout"> + <panel name="notes_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <text name="status_message" value="Le mie note private:"/> + <text name="status_message2" value="Permetti a questa persona di:"/> + <check_box label="Vedermi On-line" name="status_check"/> + <check_box label="Vedermi sull mappa" name="map_check"/> + <check_box label="Modificare, cancellare o prendere i miei oggetti" name="objects_check"/> + </panel> + </scroll_container> + </panel> + <panel name="notes_buttons_panel"> + <button label="Aggiungi" name="add_friend" tool_tip="Offrire amicizia ad un residente"/> + <button label="IM" name="im" tool_tip="Apri una sessione di messaggio istantaneo"/> + <button label="Chiama" name="call" tool_tip="Chiama questo residente"/> + <button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/> + <button label="Teleport" name="teleport" tool_tip="Offri teleport"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml new file mode 100644 index 00000000000..9332a3ef361 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Outfits"> + <accordion name="outfits_accordion"> + <accordion_tab name="tab_cof" title="Vestiario attuale"/> + <accordion_tab name="tab_outfits" title="Mio Vestiario"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml new file mode 100644 index 00000000000..c6be9423129 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <menu_item_call label="Sostituisci il Vestiario attuale" name="wear"/> + <menu_item_call label="Aggiungi al Vestiario attuale" name="add"/> + <menu_item_call label="Rimuovi dal Vestiario attuale" name="remove"/> + <menu_item_call label="Rinomina" name="rename"/> + <menu_item_call label="Rimuovi" name="remove_link"/> + <menu_item_call label="Cancella" name="delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml new file mode 100644 index 00000000000..b20db0d565c --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_people.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Persona" name="people_panel"> + <string name="no_people" value="Nessuna persona"/> + <string name="no_one_near" value="Nessuno vicino"/> + <string name="no_friends_online" value="Nessun amico online"/> + <string name="no_friends" value="Nessun amico"/> + <string name="no_groups" value="Nessun gruppo"/> + <string name="people_filter_label" value="Filtro Persone"/> + <string name="groups_filter_label" value="Filtro Gruppi"/> + <filter_editor label="Filtro" name="filter_input"/> + <tab_container name="tabs"> + <panel label="NELLE VICINANZE" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Opzioni"/> + <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista di amici"/> + </panel> + </panel> + <panel label="AMICI" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Online"/> + <accordion_tab name="tab_all" title="Tutti"/> + </accordion> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Opzioni"/> + <button name="add_btn" tool_tip="Offri amicizia ad un residente"/> + <button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla tua lista di amici"/> + </panel> + </panel> + <panel label="GRUPPI" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Opzioni"/> + <button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/> + <button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/> + </panel> + </panel> + <panel label="RECENTE" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Opzioni"/> + <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista di amici"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Profilo" name="view_profile_btn" tool_tip="Mostra foto, gruppi, e info di altri residenti"/> + <button label="IM" name="im_btn" tool_tip="Apri sessione instant message"/> + <button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/> + <button label="Condividi" name="share_btn"/> + <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/> + <button label="Profilo del Gruppo" name="group_info_btn" tool_tip="Mostra info del gruppo"/> + <button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_pick_info.xml b/indra/newview/skins/default/xui/it/panel_pick_info.xml new file mode 100644 index 00000000000..4771457825c --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_pick_info.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_pick_info"> + <text name="title" value="Scegli Info ????"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="pick_name" value="[nome]"/> + <text name="pick_location" value="[Caricando...]"/> + <text name="pick_desc" value="[descrizione]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleport" name="teleport_btn"/> + <button label="Mappa" name="show_on_map_btn"/> + <button label="Modifica" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_picks.xml b/indra/newview/skins/default/xui/it/panel_picks.xml new file mode 100644 index 00000000000..bcc433708d3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_picks.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Foto" name="panel_picks"> + <string name="no_picks" value="Nessuna Foto"/> + <string name="no_classifieds" value="Nessun Annuncio"/> + <text name="empty_picks_panel_text"> + Nessuna foto/annuncio qui + </text> + <accordion name="accordion"> + <accordion_tab name="tab_picks" title="Foto"/> + <accordion_tab name="tab_classifieds" title="Annunci"/> + </accordion> + <panel label="bottom_panel" name="edit_panel"> + <button name="new_btn" tool_tip="Crea una nuova foto o annuncio in questo luogo"/> + </panel> + <panel name="buttons_cucks"> + <button label="Info" name="info_btn" tool_tip="Mostra info sulla foto"/> + <button label="Teleport" name="teleport_btn" tool_tip="Teleport all'area corrispondente"/> + <button label="Mappa" name="show_on_map_btn" tool_tip="Mostra l'area corrispondente nella Mappa del Mondo"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml new file mode 100644 index 00000000000..70e15771999 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="place_profile"> + <string name="on" value="On"/> + <string name="off" value="Off"/> + <string name="anyone" value="Chiunque"/> + <string name="available" value="disponibile"/> + <string name="allocated" value="assegnato"/> + <string name="title_place" value="Profilo del luogo"/> + <string name="title_teleport_history" value="Cronologia dei Teleport"/> + <string name="not_available" value="(N\D)"/> + <string name="unknown" value="(sconosciuto)"/> + <string name="public" value="(publico)"/> + <string name="none_text" value="(nessuno)"/> + <string name="sale_pending_text" value="(Vendita in attesa di)"/> + <string name="group_owned_text" value="(Gruppo posseduto)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Tutti i Residenti"/> + <string name="group_text" value="Gruppo"/> + <string name="can_resell"> + La terra acquistata in questa regione può essere rivenduta. + </string> + <string name="can_not_resell"> + La terra acquistata in questa regione non può essere rivenduta. + </string> + <string name="can_change"> + La terra acquistata in questa regione può essere unita o suddivisa. + </string> + <string name="can_not_change"> + La terra acquistata in questa regione non può essere unita o suddivisa. + </string> + <string name="server_update_text"> + Informazioni su questo luogo non disponibili senza l'aggiornamento del server. + </string> + <string name="server_error_text"> + Informazioni su questo luogo non sono disponibili ora, per favore riprova più tardi. + </string> + <string name="server_forbidden_text"> + Informazioni su questo luogo non sono disponibili a cause delle restrizioni sull'accesso. Per favore verifica i tuoi permessi con il proprietario del parcel. + </string> + <string name="acquired_date"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </string> + <text name="title" value="Profilo del luogo"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="owner_label" value="Proprietario:"/> + <text name="maturity_value" value="sconosciuto"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Parcel"> + <panel> + <text name="rating_label" value="Valutazione:"/> + <text name="rating_value" value="sconosciuto"/> + <text name="voice_label" value="Voice:"/> + <text name="voice_value" value="On"/> + <text name="fly_label" value="Vola:"/> + <text name="fly_value" value="On"/> + <text name="push_label" value="Spingi:"/> + <text name="push_value" value="Off"/> + <text name="build_label" value="Costruisci:"/> + <text name="build_value" value="On"/> + <text name="scripts_label" value="Scripts:"/> + <text name="scripts_value" value="On"/> + <text name="damage_label" value="Danno:"/> + <text name="damage_value" value="Off"/> + <button label="Info sul terreno" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Regione"> + <panel> + <text name="region_name_label" value="Regione:"/> + <text name="region_type_label" value="Scrivi:"/> + <text name="region_rating_label" value="Valutazione:"/> + <text name="region_owner_label" value="Proprietario:"/> + <text name="region_group_label" value="Gruppo:"/> + <button label="Regione/Proprietà immobiliare" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Proprietà immobiliare"> + <panel> + <text name="estate_name_label" value="Proprietà immobiliare:"/> + <text name="estate_rating_label" value="Valutazione:"/> + <text name="estate_owner_label" value="Proprietà :"/> + <text name="covenant_label" value="Regolamento:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="In vendita"> + <panel> + <text name="sales_price_label" value="Prezzo:"/> + <text name="area_label" value="Area:"/> + <text name="traffic_label" value="Traffico:"/> + <text name="primitives_label" value="Primitive:"/> + <text name="parcel_scripts_label" value="Scripts:"/> + <text name="terraform_limits_label" value="Limiti per Terraform:"/> + <text name="subdivide_label" value="Suddividi/Unisci abilità :"/> + <text name="resale_label" value="Rivendi abilità :"/> + <text name="sale_to_label" value="In vendita a:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml new file mode 100644 index 00000000000..8e50a8b9d96 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_places.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Luoghi" name="places panel"> + <string name="landmarks_tab_title" value="MIEI LANDMARKS"/> + <string name="teleport_history_tab_title" value="TELEPORT PRECEDENTI"/> + <filter_editor label="Filtro Luoghi" name="Filter"/> + <panel name="button_panel"> + <button label="Teleport" name="teleport_btn"/> + <button label="Mappa" name="map_btn"/> + <button label="Modifica" name="edit_btn"/> + <button label="Chiudi" name="close_btn"/> + <button label="Cancella" name="cancel_btn"/> + <button label="Salva" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml index 2355dc7f0a4..13ffabbebf7 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml @@ -1,7 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="advanced"> + <panel.string name="resolution_format"> + [RES_X] x [RES_Y] + </panel.string> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <check_box label="Chat a Bolle" name="bubble_text_chat"/> + <color_swatch name="background" tool_tip="Scegli il colore delle vignette della Chat"/> + <slider label="Opacità " name="bubble_chat_opacity"/> <text name="AspectRatioLabel1" tool_tip="larghezza/altezza"> - Rapporto di visualizzazione: + Rapporto di visualizzazione </text> <combo_box name="aspect_ratio" tool_tip="larghezza/altezza"> <combo_box.item label="4:3 (Monitor Standard)" name="item1"/> @@ -9,4 +18,31 @@ <combo_box.item label="8:5 (Widescreen)" name="item3"/> <combo_box.item label="16:9 (Widescreen)" name="item4"/> </combo_box> + <check_box label="Rilevamento automatico" name="aspect_auto_detect"/> + <text name="heading1"> + Camera: + </text> + <slider label="Angolazione della visuale" name="camera_fov"/> + <slider label="Distanza" name="camera_offset_scale"/> + <text name="heading2"> + Posizionamento Automatico per: + </text> + <check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera entrando e uscendo dalla modalità modifica"/> + <check_box label="Aspetto Fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/> + <text name="heading3"> + Avatar: + </text> + <check_box label="Mostra in modalità Mouselook" name="first_person_avatar_visible"/> + <check_box label="Cammino sempre con le frecce di movimento" name="arrow_keys_move_avatar_check"/> + <check_box label="Doppio Click-Tieni Premuto per correre" name="tap_tap_hold_to_run"/> + <check_box label="Consente il movimento delle labbra dell'Avatar quando parla" name="enable_lip_sync"/> + <check_box label="Mostra errori degli script" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="In chat" name="0"/> + <radio_item label="In una finestra" name="1"/> + </radio_group> + <check_box label="Modalità del microfono "interruttore ON/OFF" quando premo l'interruttore PARLA:" name="push_to_talk_toggle_check" tool_tip="In modalità "interruttore ON/OFF" premi il tasto per attivare o disattivare il microfono. Quando non usi questa modalità , il microfono è attivo solo se tieni premuto il tasto."/> + <line_editor label="Premi il pulsante per parlare" name="modifier_combo"/> + <button label="Imposta" name="set_voice_hotkey_button"/> + <button label="Pulsante centrale del Mouse" name="set_voice_middlemouse_button"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml index 54517635fd5..02da9de4a47 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml @@ -1,18 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Pop-up" name="popups" title="Pop-up"> - <text name="dont_show_label"> - Non mostrare questi pop-up: + <text name="tell_me_label"> + Dimmi: </text> - <button label="Abilita questo pop-up" name="enable_popup"/> - <button width="200" label="Abilita tutti i pop-up..." name="reset_dialogs_btn" tool_tip="Abilita tutti i pop-up opzionali e le notifiche da 'utilizzo per la prima volta'."/> + <check_box label="Quando spendo o ottengo L$" name="notify_money_change_checkbox"/> + <check_box label="Quando i miei amici entrano o escono da SL" name="friends_online_notify_checkbox"/> <text name="show_label"> - Mostra questi pop-up: + Mostra sempre questi allarmi: </text> - <button width="200" label="Disabilita tutti questi pop-up..." name="skip_dialogs_btn" tool_tip="Disabilita tutti i pop-up opzionali e le notifiche da 'utilizzo per la prima volta'."/> - <text name="text_box2"> - Offerte di notecard, texture e landmark: + <text name="dont_show_label"> + Non mostrare mai questi allarmi: </text> - <check_box label="Accetta automaticamente" name="accept_new_inventory"/> - <check_box label="Apri automaticamente dopo aver accettato" name="show_new_inventory"/> - <check_box label="Mostra automaticamente nell'inventario, gli oggetti appena accettati" name="show_in_inventory"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml index 7125832c7b6..9c064c27165 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Text Chat" name="chat"> - <text name="text_box"> - Grandezza carattere -chat: - </text> <radio_group name="chat_font_size"> - <radio_item name="radio" label="Piccolo" /> - <radio_item name="radio2" label="Medio" /> - <radio_item name="radio3" label="Grande" /> + <radio_item label="Piccolo" name="radio"/> + <radio_item label="Medio" name="radio2"/> + <radio_item label="Grande" name="radio3"/> </radio_group> <color_swatch label="Tuo" name="user"/> <text name="text_box1"> - Tuo + Io </text> <color_swatch label="Altri" name="agent"/> <text name="text_box2"> @@ -37,22 +33,14 @@ chat: <text name="text_box7"> Proprietario </text> - <color_swatch label="Vignetta" name="background"/> - <text name="text_box8"> - Vignetta - </text> <color_swatch label="URLs" name="links"/> <text name="text_box9"> URLs </text> - <check_box label="Mostra errori script ed avvertimenti nella chat principale" name="script_errors_as_chat"/> - <spinner label="Dissolvi la chat dopo" name="fade_chat_time" label_width="112" width="162"/> - <slider label="Opacità " name="console_opacity"/> - <check_box label="Utilzza la larghezza intera dello schermo (Richiede riavvio)" name="chat_full_width_check"/> - <check_box label="Chiudi la barra chat dopo aver premuto invio" name="close_chat_on_return_check"/> - <check_box label="Le frecce muovono comunque l'avatar quando si sta scrivendo" name="arrow_keys_move_avatar_check"/> - <check_box label="Mostra orario nella chat principale" name="show_timestamps_check"/> - <check_box label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/> - <check_box label="Mostra vignette chat" name="bubble_text_chat"/> - <slider label="Opacità " name="bubble_chat_opacity"/> + <check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/> + <check_box label="Spediscimi nella email gli IM quando sono OFF-LINE" name="send_im_to_email"/> + <radio_group name="chat_window" tool_tip="Mostra i tuoi Instant Messages in finestre separate, o in una finestra con diverse tabelle (Requires restart)"> + <radio_item label="Finestre multiple" name="radio"/> + <radio_item label="Una finestra" name="radio2"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml index e6cd6e67b2d..80b152752b3 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml @@ -1,90 +1,64 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Generale" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Vai a casa di default quando fai login" label="Casa mia"/> - <combo_box.item name="MyLastLocation" tool_tip="Vai nell'ultimo posto visitato di default quando fai login." label="Ultimo posto visitato"/> - </combo_box> - <check_box label="Mostra il punto di partenza nella schermata d'inizio" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Mai"/> - <combo_box.item name="Show Temporarily" label="Mostra temporanemente"/> - <combo_box.item name="Always" label="Sempre"/> - </combo_box> - <check_box label="Nomi avatar in piccolo" name="small_avatar_names_checkbox"/> - <check_box label="Nascondi il mio nome sul mio schermo" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Titoli di gruppo: - </text> - <check_box label="Nascondi i titoli di gruppo" name="show_all_title_checkbox"/> - <check_box label="Nascondi il mio titolo di gruppo" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <text name="UI Size:"> - Dimensione interfaccia: + <text name="language_textbox"> + Lingua: </text> - <check_box label="Usa ridimensionamento indipendente dalla risoluzione" name="ui_auto_scale"/> - <spinner label="Assente dopo:" name="afk_timeout_spinner"/> - <check_box label="Avvisami quando spendo o ricevo Linden Dollars (L$)" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Categoria di accesso: + <combo_box name="language_combobox"> + <combo_box.item label="System default" name="System Default Language"/> + <combo_box.item label="English" name="English"/> + <combo_box.item label="Dansk (Danese) - Beta" name="Danish"/> + <combo_box.item label="Deutsch (Tedesco) - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español (Spagnolo) - Beta" name="Spanish"/> + <combo_box.item label="Français (Francese) - Beta" name="French"/> + <combo_box.item label="Italiano - Beta" name="Italian"/> + <combo_box.item label="Nederlands (Olandese) - Beta" name="Dutch"/> + <combo_box.item label="Polski (Polacco) - Beta" name="Polish"/> + <combo_box.item label="Portugués (Portoghese) - Beta" name="Portugese"/> + <combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/> + </combo_box> + <text name="language_textbox2"> + (Richiede restart) </text> <text name="maturity_desired_prompt"> Voglio accedere al contenuto di tipo: </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="PG, Mature e Adult"/> - <combo_box.item name="Desired_Mature" label="PG e Mature"/> - <combo_box.item name="Desired_PG" label="PG"/> + <combo_box.item label="PG, Mature e Adult" name="Desired_Adult"/> + <combo_box.item label="PG e Mature" name="Desired_Mature"/> + <combo_box.item label="PG" name="Desired_PG"/> </combo_box> - <text name="maturity_desired_textbox"> - PG - </text> <text name="start_location_textbox"> - Punto di partenza: + Luogo d'inizio: </text> - <text name="show_names_textbox"> - Mostra Nomi: + <combo_box name="start_location_combo"> + <combo_box.item label="Ultimo posto visitato" name="MyLastLocation" tool_tip="Vai nell'ultimo posto visitato di default quando fai login."/> + <combo_box.item label="Casa mia" name="MyHome" tool_tip="Vai a casa di default quando fai login"/> + </combo_box> + <check_box initial_value="true" label="Mostra su login" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Nome sulle tags: </text> + <radio_group name="Name_Tag_Preference"> + <radio_item label="Off" name="radio"/> + <radio_item label="On" name="radio2"/> + <radio_item label="Mostra brevemente" name="radio3"/> + </radio_group> + <check_box label="Mostra il mio nome" name="show_my_name_checkbox1"/> + <check_box initial_value="true" label="Nome piccolo sulle tags" name="small_avatar_names_checkbox"/> + <check_box label="Mostra titoli del gruppo" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - Colore per i miei effetti: + Miei effetti: + </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <text name="title_afk_text"> + Pausa di Away: </text> + <spinner label="Assente dopo:" name="afk_timeout_spinner"/> <text name="seconds_textbox"> secondi </text> - <text name="crash_report_textbox"> - Rapporti crash: - </text> - <text name="language_textbox"> - Lingua: - </text> - <text name="language_textbox2"> - (Richiede il riavvio) + <text name="text_box3"> + Risposta in modalità occupato: </text> - <string name="region_name_prompt"> - <Scrivi il nome della regione> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Chiedi prima di inviare"/> - <combo_box.item name="Alwayssend" label="Invia sempre"/> - <combo_box.item name="Neversend" label="Non inviare mai"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="Default di sistema"/> - <combo_box.item name="English" label="English"/> - <combo_box.item name="Danish" label="Dansk (Danese) - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Tedesco) - Beta"/> - <combo_box.item name="Spanish" label="Español (Spagnolo) - Beta"/> - <combo_box.item name="French" label="Français (Francese) - Beta"/> - <combo_box.item name="Italian" label="Italiano - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Ungherese) - Beta"/> - <combo_box.item name="Dutch" label="Nederlands (Olandese) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polacco) - Beta"/> - <combo_box.item name="Portugese" label="Portugués (Portoghese) - Beta"/> - <combo_box.item name="Russian" label="РуÑÑкий (Russo) - Beta"/> - <combo_box.item name="Turkish" label="Türkçe (Turco) - Beta"/> - <combo_box.item name="Ukrainian" label="УкраїнÑька (Ukraino) - Beta"/> - <combo_box.item name="Chinese" label="䏿–‡ (简体) (Cinese) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Giapponese) - Beta"/> - <combo_box.item name="(Korean)" label="한êµì–´ (Coreano) - Beta"/> - </combo_box> - <check_box label="Condividi la tua lingua con gli oggetti" name="language_is_public" tool_tip="Questo fa in modo che gli oggetti inworld riconoscano la tua lingua."/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml index 6e1640334f8..647df276337 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml @@ -1,42 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Grafica" name="Display panel"> - <button label="?" name="GraphicsPreferencesHelpButton"/> - <check_box label="Esegui Second Life in una finestra" name="windowed mode"/> - <text_editor name="FullScreenInfo" width="480"> - Se deselezionato, all'avvio il programma partirà a schermo intero. - </text_editor> - <text name="WindowSizeLabel"> - Dimensione della finestra: + <text name="UI Size:"> + misura UI: </text> - <combo_box name="windowsize combo"> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="720x480" label="720x480 (NTSC)"/> - <combo_box.item name="768x576" label="768x576 (PAL)"/> - <combo_box.item name="1024x768" label="1024x768"/> - </combo_box> - <text name="DisplayResLabel"> - Risoluzione del monitor: - </text> - <text name="AspectRatioLabel1" tool_tip="larghezza/altezza"> - Rapporto di visualizzazione: - </text> - <combo_box name="aspect_ratio" tool_tip="larghezza/altezza"> - <combo_box.item name="4:3(StandardCRT)" label="4:3 (Monitor Standard)"/> - <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/> - <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/> - <combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)"/> - </combo_box> - <check_box label="Autoconfigurazione" name="aspect_auto_detect"/> - <text name="HigherText"> - Qualità e - </text> - <text name="QualityText"> - Performance: + <text name="QualitySpeed"> + Qualità e velocità : </text> <text name="FasterText"> Più veloce </text> + <text name="BetterText"> + Migliore + </text> <text name="ShadersPrefText"> Basso </text> @@ -49,96 +24,82 @@ <text name="ShadersPrefText4"> Ultra </text> - <text name="HigherText2"> - Più alto - </text> - <text name="QualityText2"> - Qualità - </text> - <check_box label="Personalizzate" name="CustomSettings"/> - <panel name="CustomGraphics Panel"> - <text name="ShadersText"> - Effetti grafici: - </text> - <check_box label="Piccoli rilievi e scintillii" name="BumpShiny"/> - <check_box label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/> - <check_box label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/> - <check_box label="Riflessi dell'acqua" name="Reflections"/> - <text name="ReflectionDetailText"> - Dettaglio dei riflessi - </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item name="0" label="Terreno ed alberi" /> - <radio_item name="1" label="Tutti gli aggetti statici" /> - <radio_item name="2" label="Tutti gli avatar e gli oggetti" /> - <radio_item name="3" label="Tutto" /> - </radio_group> - <text name="AvatarRenderingText"> - Rendering dell'avatar: - </text> - <check_box label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/> - <check_box label="Hardware Skinning" name="AvatarVertexProgram"/> - <check_box label="Abiti dell'avatar" name="AvatarCloth"/> - <text name="DrawDistanceMeterText1"> - m - </text> - <text name="DrawDistanceMeterText2"> - m - </text> - <slider label="Distanza di disegno:" name="DrawDistance" label_width="158" width="255"/> - <slider label="Conteggio massimo particelle:" name="MaxParticleCount" label_width="158" width="262" /> - <slider label="Qualità in post-produzione:" name="RenderPostProcess" label_width="158" width="223"/> - <text name="MeshDetailText"> - Dettagli reticolo: - </text> - <slider label=" Oggetti:" name="ObjectMeshDetail"/> - <slider label=" Prims flessibili:" name="FlexibleMeshDetail"/> - <slider label=" Alberi:" name="TreeMeshDetail"/> - <slider label=" Avatar:" name="AvatarMeshDetail"/> - <slider label=" Terreno:" name="TerrainMeshDetail"/> - <slider label=" Cielo:" name="SkyMeshDetail"/> - <text name="PostProcessText"> - Basso - </text> - <text name="ObjectMeshDetailText"> - Basso - </text> - <text name="FlexibleMeshDetailText"> - Basso - </text> - <text name="TreeMeshDetailText"> - Basso - </text> - <text name="AvatarMeshDetailText"> - Basso - </text> - <text name="TerrainMeshDetailText"> - Basso - </text> - <text name="SkyMeshDetailText"> - Basso - </text> - <text name="LightingDetailText"> - Dettagli illuminazione: - </text> - <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon" label="Solo il sole e la luna" /> - <radio_item name="LocalLights" label="Luci locali" /> - </radio_group> - <text name="TerrainDetailText"> - Dettagli terreno: - </text> - <radio_group name="TerrainDetailRadio"> - <radio_item name="0" label="Bassi" /> - <radio_item name="2" label="Alti" /> - </radio_group> + <panel label="CustomGraphics" name="CustomGraphics Panel"> + <text name="ShadersText"> + Effetti grafici: + </text> + <check_box initial_value="true" label="Piccoli rilievi e scintillii" name="BumpShiny"/> + <check_box initial_value="true" label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/> + <check_box initial_value="true" label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/> + <check_box initial_value="true" label="Riflessi dell'acqua" name="Reflections"/> + <text name="ReflectionDetailText"> + Dettaglio dei riflessi + </text> + <radio_group name="ReflectionDetailRadio"> + <radio_item label="Terreno e alberi" name="0"/> + <radio_item label="Tutti gli aggetti statici" name="1"/> + <radio_item label="Tutti gli avatar e gli oggetti" name="2"/> + <radio_item label="Tutto" name="3"/> + </radio_group> + <text name="AvatarRenderingText"> + Rendering dell'avatar: + </text> + <check_box initial_value="true" label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/> + <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Abiti dell'avatar" name="AvatarCloth"/> + <slider label="Distanza di disegno:" label_width="158" name="DrawDistance" width="255"/> + <text name="DrawDistanceMeterText2"> + m + </text> + <slider label="Conteggio massimo particelle:" label_width="158" name="MaxParticleCount" width="262"/> + <slider label="Qualità in post-produzione:" label_width="158" name="RenderPostProcess" width="223"/> + <text name="MeshDetailText"> + Dettagli reticolo: + </text> + <slider label=" Oggetti:" name="ObjectMeshDetail"/> + <slider label=" Prims flessibili:" name="FlexibleMeshDetail"/> + <slider label=" Alberi:" name="TreeMeshDetail"/> + <slider label=" Avatar:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Cielo:" name="SkyMeshDetail"/> + <text name="PostProcessText"> + Basso + </text> + <text name="ObjectMeshDetailText"> + Basso + </text> + <text name="FlexibleMeshDetailText"> + Basso + </text> + <text name="TreeMeshDetailText"> + Basso + </text> + <text name="AvatarMeshDetailText"> + Basso + </text> + <text name="TerrainMeshDetailText"> + Basso + </text> + <text name="SkyMeshDetailText"> + Basso + </text> + <text name="LightingDetailText"> + Dettagli illuminazione: + </text> + <radio_group name="LightingDetailRadio"> + <radio_item label="Solo il sole e la luna" name="SunMoon"/> + <radio_item label="Luci locali" name="LocalLights"/> + </radio_group> + <text name="TerrainDetailText"> + Dettagli terreno: + </text> + <radio_group name="TerrainDetailRadio"> + <radio_item label="Basso" name="0"/> + <radio_item label="Alto" name="2"/> + </radio_group> </panel> - <button label="Configurazione raccomandata" name="Defaults" left="110" width="190" /> - <button label="Opzioni hardware" label_selected="Opzioni hardware" name="GraphicsHardwareButton"/> - <panel.string name="resolution_format"> - [RES_X] x [RES_Y] - </panel.string> - <panel.string name="aspect_ratio_text"> - [NUM]:[DEN] - </panel.string> + <button label="Applica" label_selected="Applica" name="Apply"/> + <button label="Resetta" left="110" name="Defaults" width="190"/> + <button label="Avanzato" name="Advanced"/> + <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml index 2249d946880..c84edbb47eb 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml @@ -1,33 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Comunicazioni" name="im"> - <text name="text_box"> - Il mio stato online: +<panel label="Comunicazione" name="im"> + <panel.string name="log_in_to_change"> + log in per cambiare + </panel.string> + <button label="Pulisci la cronologia" name="clear_cache"/> + <text name="cache_size_label_l"> + (Luoghi, immagini, web, cronologia del search) </text> - <check_box label="Solo i miei amici e i miei gruppi possono vedermi online" name="online_visibility"/> - <text name="text_box2"> - Opzioni IM: + <check_box label="Solo amici e gruppi mi vedono online" name="online_visibility"/> + <check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/> + <check_box label="Spegnere il microfono quando chiudi le chiamate" name="auto_disengage_mic_check"/> + <check_box label="Accetta cookies" name="cookies_enabled"/> + <check_box label="Permettere Media Autoplay" name="autoplay_enabled"/> + <text name="Logs:"> + Logs: </text> - <string name="log_in_to_change"> - Effettua login per cambiare - </string> - <check_box label="Invia gli IM alla mia email ([EMAIL])" name="send_im_to_email"/> - <check_box label="Inserisci gli IM nella console della chat" name="include_im_in_chat_console"/> - <check_box label="Mostra l'orario negli IM" name="show_timestamps_check"/> - <check_box label="Mostrami le notifiche degli amici online" name="friends_online_notify_checkbox"/> - <text name="text_box3"> - Risposta agli IM quando -sono in 'Occupato': - </text> - <text name="text_box4" width="136"> - Opzioni salvataggio chat: - </text> - <check_box label="Salva una copia degli IM sul mio computer" name="log_instant_messages"/> - <check_box label="Mostra l'orario nei registri IM" name="log_instant_messages_timestamp"/> - <check_box label="Mostra la parte finale della precedente conversazione IM" name="log_show_history"/> - <check_box label="Salva un registro della chat locale sul mio computer" name="log_chat"/> - <check_box label="Mostra l'orario nei registri della chat locale" name="log_chat_timestamp"/> - <check_box label="Mostra gli IM entranti nel registro della chat locale" name="log_chat_IM"/> - <check_box label="Includi la data nell'orario" name="log_date_timestamp"/> - <button label="Cambia percorso" label_selected="Cambia percorso" name="log_path_button" width="130"/> + <check_box label="Salvare le ultime chat logs nel mio computer" name="log_nearby_chat"/> + <check_box label="Salvare gli IM logs nel mio computer" name="log_instant_messages"/> + <check_box label="Aggiungere orario" name="show_timestamps_check_im"/> <line_editor left="288" name="log_path_string" right="-20"/> + <text name="log_path_desc"> + Luoghi delle logs + </text> + <button label="Browse" label_selected="Browse" name="log_path_button" width="130"/> + <button label="Bloccare lista" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml index e1239d58202..17257a7cb8c 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml @@ -1,36 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Controlli & Telecamera" name="Input panel"> - <text name=" Mouselook Options:"> - Opzioni visualizzazione -in soggettiva: - </text> - <text name=" Mouse Sensitivity:"> - Sensibilità del mouse: - </text> - <check_box label="Inverti i controlli del mouse" name="invert_mouse"/> - <text name=" Auto Fly Options:"> - Opzioni di volo -automatico: - </text> - <check_box label="Vola/atterra premendo su/giù" name="automatic_fly"/> - <text name=" Camera Options:"> - Opzioni della -telecamera: - </text> - <text name="camera_fov_label" width="218"> - Angolo di visualizzazione della telecamera: - </text> - <slider bottom_delta="-6" width="128" left="366" name="camera_fov" /> - <text name="Camera Follow Distance:" width="218"> - Distanza della telecamera dall'avatar: - </text> - <slider bottom_delta="-6" width="128" left="366" name="camera_offset_scale" /> - <check_box label="Movimenti automatici della telecamera in modalità modifica oggetti" name="edit_camera_movement" tool_tip="Usa il posizionamento automatico della telecamera entrando e uscendo dalla modalità modifica oggetti"/> - <check_box bottom_delta="-34" label="Movimenti automatici della telecamera in modalità aspetto fisico" name="appearance_camera_movement" tool_tip="Usa il posizionamento automatico della telecamera durante la modalità modifica oggetti"/> - <text name="text2" bottom_delta="-42"> - Opzione di visualizzazione -dell'avatar: - </text> - <check_box label="Mostra l'avatar in prima persona" name="first_person_avatar_visible"/> - <button bottom_delta="-40" label="Installazione del joystick" name="joystick_setup_button" width="165"/> +<panel label="Input & Camera" name="Input panel"> + <button bottom_delta="-40" label="Altri Dispositivi" name="joystick_setup_button" width="165"/> + <text name="Mouselook:"> + Mouselook: + </text> + <text name=" Mouse Sensitivity"> + Sensibilità del Mouse + </text> + <check_box label="Inverti" name="invert_mouse"/> + <text name="Network:"> + Network: + </text> + <text name="Maximum bandwidth"> + Banda Massima + </text> + <text name="text_box2"> + kbps + </text> + <check_box label="Custom port" name="connection_port_enabled"/> + <spinner label="Port number:" name="web_proxy_port"/> + <text name="cache_size_label_l"> + Cache size + </text> + <text name="text_box5"> + MB + </text> + <button label="Browse" label_selected="Browse" name="set_cache"/> + <button label="Resetta" label_selected="Imposta" name="reset_cache"/> + <text name="Cache location"> + Cache location + </text> + <text name="Web:"> + Web: + </text> + <radio_group name="use_external_browser"> + <radio_item label="Usa il built-in browser" name="internal" tool_tip="Usa il built-in web browser per aiuto, web links, etc. Questo browser apre come una nuova finestra all'interno [APP_NAME]."/> + <radio_item label="Usa il mio browser (IE, Firefox)" name="external" tool_tip="Usa il default system web browser per aiuto, web links, etc. Non raccomandato se utilizzi lo schermo pieno(full screen)."/> + </radio_group> + <check_box initial_value="false" label="Web proxy" name="web_proxy_enabled"/> + <line_editor name="web_proxy_editor" tool_tip="Nome o indirizzo IP del proxy che vorresti usare"/> + <button label="Browse" label_selected="Browse" name="set_proxy"/> + <text name="Proxy location"> + Proxy location + </text> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index 41f67951c2a..c4d46291dd5 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml @@ -1,38 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Audio & Video" name="Preference Media panel"> - <slider label="Master" name="System Volume"/> +<panel label="Suoni" name="Preference Media panel"> + <slider label="Principale" name="System Volume"/> + <check_box initial_value="true" label="Spegni suono se minimizzato" name="mute_when_minimized"/> <slider label="Ambiente" name="Wind Volume"/> - <slider label="Suoni" name="SFX Volume"/> - <slider label="Media" name="Media Volume"/> - <slider label="Interfaccia utente" name="UI Volume"/> + <slider label="Pulsanti" name="UI Volume"/> + <slider label="MultiMedia" name="Media Volume"/> + <slider label="Effetto Suoni" name="SFX Volume"/> <slider label="Musica" name="Music Volume"/> + <check_box label="Voce" name="enable_voice_check"/> <slider label="Voice" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - Voice chat non disponibile - </text_editor> - <check_box label="Abilita voice chat" name="enable_voice_check"/> + <text name="Listen from"> + Ascolta da: + </text> <radio_group name="ear_location"> - <radio_item name="0" label="Ascolta voice chat dalla posizione della telecamera" /> - <radio_item name="1" label="Ascolta voice chat dalla posizione dell'avatar" /> + <radio_item label="Posizione della Camera" name="0"/> + <radio_item label="Posizione dell'Avatar" name="1"/> </radio_group> - <button label="Configurazione periferica" name="device_settings_btn" width="165"/> - <text name="muting_text"> - Volume: - </text> - <text name="streaming_prefs_text" bottom="-195" > - Preferenze Streaming: - </text> - <text name="audio_prefs_text"> - Preferenze Audio: - </text> - <panel label="Volume" name="Volume Panel"/> - <check_box label="Ascolta il canale della musica" name="streaming_music"/> - <check_box height="32" label="Guarda i video" name="streaming_video"/> - <check_box label="Attiva automaticamente i video" name="auto_streaming_video"/> - <check_box label="Muta l'audio quando minimizzi la finestra" name="mute_when_minimized"/> - <slider label="Effetto Doppler" name="Doppler Effect" label_width="140" width="270" /> - <slider label="Fattore di Distanza" name="Distance Factor" label_width="140" width="270"/> - <slider label="Fattore di Allontanamento" name="Rolloff Factor" label_width="140" width="270"/> - <spinner label="Suono di Avviso Transazioni ≥ a L$" name="L$ Change Threshold" label_width="195" width="259"/> - <spinner label="Livello vitale dell'avatar" name="Health Change Threshold" label_width="195" width="259"/> + <button label="Dispositivi di Input/Output" name="device_settings_btn" width="165"/> + <panel label="Impostazioni del dispositivo" name="device_settings_panel"> + <panel.string name="default_text"> + Predefinito + </panel.string> + <text name="Input"> + Input + </text> + <text name="My volume label"> + Mio volume: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia il volume utilizzando questa barra"/> + <text name="wait_text"> + Attendi + </text> + <text name="Output"> + Output + </text> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml new file mode 100644 index 00000000000..dc7d59084e3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="MediaControls"> + <layout_stack name="media_controls"> + <layout_panel name="media_address"> + <line_editor name="media_address_url" tool_tip="Media URL"/> + <layout_stack name="media_address_url_icons"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="Lista Bianca attivata"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Secured Browsing"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="media_play_position"> + <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Avanzamento riproduzione Movie"/> + </layout_panel> + <layout_panel name="media_volume"> + <button name="media_mute_button" tool_tip="Silenzia questo Media ????"/> + <slider name="volume_slider" tool_tip="Volume Media"/> + </layout_panel> + </layout_stack> + <layout_stack> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Media stà caricando"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_profile.xml b/indra/newview/skins/default/xui/it/panel_profile.xml index 2aa8b7d0e4a..837aa4ac654 100644 --- a/indra/newview/skins/default/xui/it/panel_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_profile"> +<panel label="Profilo" name="panel_profile"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -11,4 +11,38 @@ http://www.secondlife.com/account/partners.php?lang=it </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=it-IT"/> + <string name="no_partner_text" value="Nessuno"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="Mondo Reale:"/> + </panel> + <text name="me_homepage_text"> + Homepage: + </text> + <text name="title_member_text" value="Membro dal:"/> + <text name="title_acc_status_text" value="Stato dell'Account:"/> + <text name="acc_status_text" value="Resident. No payment info on file."/> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppi:"/> + </panel> + </scroll_container> + <panel name="profile_buttons_panel"> + <button label="Aggiungi Amico" name="add_friend" tool_tip="Offri amicizia ad un residente"/> + <button label="IM" name="im" tool_tip="Apri una sessione instant message"/> + <button label="Chiama" name="call" tool_tip="Chiama questo residente"/> + <button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/> + <button label="Teleport" name="teleport" tool_tip="Offri teleport"/> + <button label="â–¼" name="overflow_btn" tool_tip="Paga o condividi l'inventario con il residente"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Modifica Profilo" name="edit_profile_btn"/> + <button label="Modifica Aspetto" name="edit_appearance_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml new file mode 100644 index 00000000000..bf89a3e6f6b --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_profile_view.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_target_profile"> + <string name="status_online"> + Online + </string> + <string name="status_offline"> + Offline + </string> + <text_editor name="user_name" value="(Caricando...)"/> + <text name="status" value="Online"/> + <tab_container name="tabs"> + <panel label="PROFILO" name="panel_profile"/> + <panel label="PREFERITI" name="panel_picks"/> + <panel label="NOTE & PRIVACY" name="panel_notes"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_covenant.xml b/indra/newview/skins/default/xui/it/panel_region_covenant.xml index 9dfecde317c..f35b451ac1f 100644 --- a/indra/newview/skins/default/xui/it/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/it/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Regolamento" name="Covenant"> <text name="estate_section_lbl"> - Proprietà : + Proprietà immobiliare </text> <text name="estate_name_lbl"> Nome: @@ -22,49 +22,48 @@ Ultima modifica Merc 31 Dic 1969 16:00:00 </text> <button label="?" name="covenant_help"/> - <text_editor name="covenant_editor" bottom="-247" height="162" > + <text_editor bottom="-247" height="162" name="covenant_editor"> Per questa proprietà non è stato emesso alcun regolamento. </text_editor> <button label="Ripristina" name="reset_covenant"/> - <text bottom="-25" name="covenant_help_text"> + <text bottom="-25" name="covenant_help_text"> Le modifiche nel regolamento saranno visibili su tutti i terreni della proprietà . </text> - <text bottom_delta="-36" name="covenant_instructions"> - Trascina e rilascia una notecard per cambiare il regolamento di - questa proprietà . + <text bottom_delta="-36" name="covenant_instructions"> + Trascina ed inserisci una notecard per cambiare i Covenant di questa proprietà immobiliare. </text> <text name="region_section_lbl"> - Regione: + Regione </text> <text name="region_name_lbl"> Nome: </text> - <text name="region_name_text" left="126"> + <text left="126" name="region_name_text"> leyla </text> <text name="region_landtype_lbl"> Tipo: </text> - <text name="region_landtype_text" left="126"> + <text left="126" name="region_landtype_text"> Mainland / Homestead </text> <text name="region_maturity_lbl" width="115"> Categoria di accesso: </text> - <text name="region_maturity_text" left="126"> + <text left="126" name="region_maturity_text"> Adult </text> <text name="resellable_lbl"> Rivendita: </text> - <text name="resellable_clause" left="126"> + <text left="126" name="resellable_clause"> La terra in questa regione non può essere rivenduta. </text> <text name="changeable_lbl"> Suddividi: </text> - <text name="changeable_clause" left="126"> + <text left="126" name="changeable_clause"> La terra in questa regione non può essere unita/suddivisa. </text> <string name="can_resell"> 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 85fb968ab46..9e81d42410e 100644 --- a/indra/newview/skins/default/xui/it/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/it/panel_region_debug.xml @@ -22,18 +22,18 @@ <line_editor name="target_avatar_name"> (nessuno) </line_editor> - <button label="Scegli..." name="choose_avatar_btn"/> + <button label="Scegli" name="choose_avatar_btn"/> <text name="options_text_lbl"> Opzioni: </text> - <check_box label="Restituisci gli oggetti con script" name="return_scripts" tool_tip="Restituisci solo gli oggetti contenenti script."/> - <check_box label="Restituisci solo gli oggetti che sono sulle terre altrui" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/> - <check_box label="Restituisci gli oggetti in ogni regione di questi possedimenti" name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l'insieme dei possedimenti terrieri"/> + <check_box label="Con scripts" name="return_scripts" tool_tip="Ritorna solo gli oggetti che hanno scripts"/> + <check_box label="Sulla terra di qualcun'altro" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/> + <check_box label="In ogni regione 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 width="280" label="Visualizza l'elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni"/> - <button label="?" name="top_colliders_help" left="297"/> - <button width="280" 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"/> - <button label="?" name="top_scripts_help" left="297"/> + <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="Ritarda il riavvio" name="cancel_restart_btn" tool_tip="Ritarda il riavvio della regione di un'ora"/> diff --git a/indra/newview/skins/default/xui/it/panel_region_estate.xml b/indra/newview/skins/default/xui/it/panel_region_estate.xml index 5b95b7378be..b6dc60a9c27 100644 --- a/indra/newview/skins/default/xui/it/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/it/panel_region_estate.xml @@ -11,7 +11,7 @@ avranno effetto su tutte le regioni della proprietà . (sconosciuto) </text> <text name="owner_text"> - Proprietario: + Proprietario immobiliare: </text> <text name="estate_owner"> (sconosciuto) @@ -24,10 +24,10 @@ avranno effetto su tutte le regioni della proprietà . <check_box label="Permetti accesso pubblico" name="externally_visible_check"/> <button label="?" name="externally_visible_help"/> <text name="Only Allow"> - Limita l'accesso a residenti... + Accesso ristretto ai Residenti verificati con: </text> - <check_box label="che hanno dato info. di pagamento" name="limit_payment" tool_tip="Blocca residenti non identificati."/> - <check_box label="Adulti con età verificata" name="limit_age_verified" tool_tip="Blocca residenti che non hanno verificato la loro età . Per maggiori informazioni vai a support.secondlife.com."/> + <check_box label="Informazioni di pagamento on File" name="limit_payment" tool_tip="Espelli residenti non identificati"/> + <check_box label="Verifica dell'età " name="limit_age_verified" tool_tip="Espelli i residenti che non hanno verificato l'età . Vedi [SUPPORT_SITE] per maggiori informazioni."/> <check_box label="Permetti la chat voice" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <check_box label="Permetti teleport diretto" name="allow_direct_teleport"/> diff --git a/indra/newview/skins/default/xui/it/panel_region_texture.xml b/indra/newview/skins/default/xui/it/panel_region_texture.xml index 254700e9f1f..23d6915a2fd 100644 --- a/indra/newview/skins/default/xui/it/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/it/panel_region_texture.xml @@ -45,13 +45,13 @@ <spinner label="Alta" name="height_range_spin_2"/> <spinner label="Alta" name="height_range_spin_3"/> <text name="height_text_lbl10"> - Questi valori rappresentano l'intervallo di miscelazione delle texture qui sopra. + Questi valori riproducono l'insieme della gamma delle textures superiori. </text> <text name="height_text_lbl11"> - Misurato in metri, il valore più BASSO corrisponde all'altezza MASSIMA della + Misurato in metri, il valore MINIMO è l'altezza MASSIMA della Texture n°1, e il valore MASSIMO è l'altezza MINIMA della Texture n°4. </text> <text name="height_text_lbl12"> -   Texture #1, e il valore più ALTO all'altezza MINIMA della Texture #4. + Texture #1, e il valore più ALTO all'altezza MINIMA della Texture #4. </text> <button label="Applica" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_script_ed.xml b/indra/newview/skins/default/xui/it/panel_script_ed.xml new file mode 100644 index 00000000000..a98a88950c9 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_script_ed.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="script panel"> + <panel.string name="loading"> + Caricando... + </panel.string> + <panel.string name="can_not_view"> + Non puoi vedere o modificare questo script, perchè è impostato come "no copy". Necesiti tutti i permessi per vedere o modificare lo script dentro un oggetto.. + </panel.string> + <panel.string name="public_objects_can_not_run"> + Oggetti Pubblici non possono attivare scripts + </panel.string> + <panel.string name="script_running"> + Attivando + </panel.string> + <panel.string name="Title"> + Script: [NAME] + </panel.string> + <text_editor name="Script Editor"> + Caricando... + </text_editor> + <button label="Salva" label_selected="Salva" name="Save_btn"/> + <combo_box label="Inserire..." name="Insert..."/> + <menu_bar name="script_menu"> + <menu label="File" name="File"> + <menu_item_call label="Salva" name="Save"/> + <menu_item_call label="Annulla tutti i cambiamenti" name="Revert All Changes"/> + </menu> + <menu label="Modifica" name="Edit"> + <menu_item_call label="Slaccia" name="Undo"/> + <menu_item_call label="Rifai" name="Redo"/> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Seleziona Tutto" name="Select All"/> + <menu_item_call label="Deseleziona" name="Deselect"/> + <menu_item_call label="Cerca / Sostituisci..." name="Search / Replace..."/> + </menu> + <menu label="Aiuto" name="Help"> + <menu_item_call label="Aiuto..." name="Help..."/> + <menu_item_call label="Aiuto nella tastiera..." name="Keyword Help..."/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_side_tray.xml b/indra/newview/skins/default/xui/it/panel_side_tray.xml new file mode 100644 index 00000000000..06bc51f5db3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_side_tray.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray cannot show background because it is always + partially on screen to hold tab buttons. --> +<side_tray name="sidebar"> + <sidetray_tab description="Casa." name="sidebar_home"> + <panel label="casa" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Trova i tuoi amici, contatti e persone nelle vicinanze." name="sidebar_people"> + <panel_container name="panel_container"> + <panel label="Info di Gruppo" name="panel_group_info_sidetray"/> + <panel label="Residenti bloccati & Oggetti" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Trova luoghi dove andare e luoghi già visitati." label="Luoghi" name="sidebar_places"> + <panel label="Luoghi" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Modifica il tuo profilo pubblico e le foto." name="sidebar_me"> + <panel label="Io" name="panel_me"/> + </sidetray_tab> + <sidetray_tab description="Cambia il tuo aspetto ed il tuo look attuale." name="sidebar_appearance"> + <panel label="Modifica Aspetto" name="sidepanel_appearance"/> + </sidetray_tab> + <sidetray_tab description="Curiosa nel tuo inventario." name="sidebar_inventory"> + <panel label="Modifica Inventario" name="sidepanel_inventory"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml new file mode 100644 index 00000000000..5e5f229ce45 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="sidetray_tab_panel"> + <text name="sidetray_tab_title" value="Vaschetta laterale"/> + <button name="show_help" tool_tip="Mostra Aiuto"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml new file mode 100644 index 00000000000..2fafc38ba17 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml--> +<panel name="panel_stand_stop_flying"> + <button label="Stare in piedi" name="stand_btn" tool_tip="Clicca qui per alzarti."/> + <button label="Ferma il volo" name="stop_fly_btn" tool_tip="Ferma il volo"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index dfaacb659e3..9acbb34c790 100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -1,38 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <text name="ParcelNameText" tool_tip="Nome dell'appezzamento di terreno su cui sei. Clicca 'Informazioni sul terreno'."> - indica qui il nome del terreno - </text> - <text name="BalanceText" tool_tip="Saldo dell'Account"> - In caricamento ... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Acquista valuta"/> - <text name="TimeText" tool_tip="Ora corrente (Pacifico)"> - 12:00 AM - </text> - <string name="StatBarDaysOfWeek"> + <panel.string name="StatBarDaysOfWeek"> Domenica:Lunedì:Martedì:Mercoledì:Giovedì:Venerdì:Sabato - </string> - <string name="StatBarMonthsOfYear"> + </panel.string> + <panel.string name="StatBarMonthsOfYear"> Gennaio:Febbraio:Marzo:Aprile:Maggio:Giugno:Luglio:Agosto:Settembre:Ottobre:Novembre:Dicembre - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Avvisi ed Errori degli script"/> - <button label="" label_selected="" name="health" tool_tip="Salute"/> - <text name="HealthText" tool_tip="Salute"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Volo non permesso"/> - <button label="" label_selected="" name="no_build" tool_tip="Costruzione non permessa"/> - <button label="" label_selected="" name="no_scripts" tool_tip="Script non permessi"/> - <button label="" label_selected="" name="restrictpush" tool_tip="Vietato spingere"/> - <button label="" label_selected="" name="status_no_voice" tool_tip="Voice non disponibile qui"/> - <button label="" label_selected="" name="buyland" tool_tip="Compra questo terreno"/> - <line_editor label="Cerca" name="search_editor" tool_tip="Cerca in [SECOND_LIFE]"/> - <button label="" label_selected="" name="search_btn" tool_tip="Cerca in [SECOND_LIFE]"/> - <string name="packet_loss_tooltip"> + </panel.string> + <panel.string name="packet_loss_tooltip"> Perdita di pacchetti - </string> - <string name="bandwidth_tooltip"> + </panel.string> + <panel.string name="bandwidth_tooltip"> Larghezza di banda - </string> + </panel.string> + <panel.string name="time"> + [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + </panel.string> + <panel.string name="timeTooltip"> + [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] + </panel.string> + <panel.string name="buycurrencylabel"> + L$ [AMT] + </panel.string> + <button label="" label_selected="" name="buycurrency" tool_tip="Il mio saldo: Clicca per comprare più L$"/> + <text name="TimeText" tool_tip="Ora attuale (Pacific)"> + 12:00 AM + </text> + <button name="volume_btn" tool_tip="Controllo del volume globale"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history.xml b/indra/newview/skins/default/xui/it/panel_teleport_history.xml new file mode 100644 index 00000000000..3f02b1449a5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_teleport_history.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="Oggi"/> + <accordion_tab name="yesterday" title="Ieri"/> + <accordion_tab name="2_days_ago" title="2 giorni fà "/> + <accordion_tab name="3_days_ago" title="3 giorni fà "/> + <accordion_tab name="4_days_ago" title="4 giorni fà "/> + <accordion_tab name="5_days_ago" title="5 giorni fà "/> + <accordion_tab name="6_days_and_older" title="6 giorni fà o più vecchio"/> + <accordion_tab name="1_month_and_older" title="1 mese o più vecchio"/> + <accordion_tab name="6_months_and_older" title="6 mesi o più vecchio"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_world_map.xml b/indra/newview/skins/default/xui/it/panel_world_map.xml index d00157a2973..1349b36e2c0 100644 --- a/indra/newview/skins/default/xui/it/panel_world_map.xml +++ b/indra/newview/skins/default/xui/it/panel_world_map.xml @@ -1,5 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="world_map"> + <panel.string name="Loading"> + Sto Caricando... + </panel.string> + <panel.string name="InvalidLocation"> + Luogo non valido + </panel.string> <panel.string name="world_map_north"> N </panel.string> diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml new file mode 100644 index 00000000000..eab8e6b4e3d --- /dev/null +++ b/indra/newview/skins/default/xui/it/role_actions.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<role_actions> + <action_set description="Queste abilità permettono di aggiungere e rimuovere Membri dal gruppo, e permettono ai nuovi membri di aderire al gruppo senza invito." name="Membership"> + <action description="Invitare persone in questo Gruppo" longdescription="Invita Persone in questo Gruppo usando il bottone 'Invita' nella sezione Ruoli > tabella Membri." name="member invite"/> + <action description="Espellere Membri da questo Gruppo" longdescription="Espelli Membri dal Gruppo usando il bottone 'Espelli' nella sezione Ruoli > tabella Membri. Un Proprietario può espellere chiunque eccetto un altro Proprietario. Se tu non sei un Proprietario, un Membro può essere espulso da un gruppo solo ed unicamente, se hanno il Ruolo Everyone, e nessun altro Ruolo. Per rimuovere Membri dai Ruoli, devi avere l'Abilità 'Rimuovi Membri dai Ruoli'." name="member eject"/> + <action description="Seleziona 'Iscrizione libera' e modifica da 'Tassa d'Iscrizione'" longdescription="Seleziona 'Iscrizione libera' per permettere ai nuovi Membri di aderire senza invito, e modifica da 'Tassa d'Iscrizione' nella sezione Generale." name="member options"/> + </action_set> + <action_set description="Queste Abilità permettono di aggiungere, rimuovere, cambiare i Ruoli del Gruppo, aggiungere e rimuovere Membri dai Ruoli, e assegnare Abilità ai Ruoli." name="Roles"> + <action description="Creare nuovi Ruoli" longdescription="Crea nuovi Ruoli nella sezione Ruoli > tabella Ruoli." name="role create"/> + <action description="Cancellare Ruoli" longdescription="Cancella Ruoli nella sezione Ruoli > tabella Ruoli." name="role delete"/> + <action description="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici" longdescription="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici. Viene fatto nella parte bassa della sezione Ruoli > tabella Ruoli dopo avere selezionato un Ruolo." name="role properties"/> + <action description="Incaricare Membri ad Assegnare Ruoli" longdescription="Assegna un Ruolo a Membri nella lista dei Ruoli assegnati (Roles section > Members tab). Un Membro con questa Abilità può aggiungere Membri ad un Ruolo già presente nell'elenco." name="role assign member limited"/> + <action description="Assegnare Membri a tutti i Ruoli" longdescription="Assegna Tutti i Ruoli a Membri nella lista dei Ruoli Assegnati (Roles section > Members tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi -- e assegnare ad altri Membri non Proprietari-- Ruoli con poteri maggiori di quelli normalmente concessi, potenzialmente elevandosi ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità ." name="role assign member"/> + <action description="Rimuovere Membri dai Ruoli" longdescription="Rimuovi dai Ruoli i Membri nella lista dei Ruoli Assegnati (Roles section > Members tab). Il Proprietario non può essere rimosso." name="role remove member"/> + <action description="Assegnare e Rimuovere Abilità nei Ruoli" longdescription="Assegna e Rimuovi Abilità per ogni Ruolo nella lista dei Ruoli Assegnati (Roles section > Roles tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi --ed assegnare ad altri Membri non Proprietà -- tutte le Abilità , che potenzialmente lo elevano ai poteri ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità ." name="role change actions"/> + </action_set> + <action_set description="Queste Abilità permettono di modificare l'identità di questo Gruppo, come il cambiamento della visibilità pubblica, lo statuto, e lo stemma." name="Group Identity"> + <action description="Cambiare lo Statuto, lo Stemma, e 'Mostra nel Cerca/Search'" longdescription="Cambia Statuto, Immagine, e 'Mostra nel Cerca'. Viene fatto nella sezione Generale." name="group change identity"/> + </action_set> + <action_set description="Queste Abilità includono il potere di intestare, modificare, e vendere terreni di proprietà del Gruppo. Per aprire la finestra Info sul Terreno, click destro sulla terra e seleziona 'Info sul Terreno', o clicca l'icona 'i' sulla Barra di Navigazione." name="Parcel Management"> + <action description="Intestare terra e comprare terra per il gruppo" longdescription="Intesta terra e compra terra per il Gruppo. Viene fatto in Informazioni sul Terreno > tabella Generale." name="land deed"/> + <action description="Abbandonare la terra in favore di Governor Linden" longdescription="Abbandona la terra in favore di Governor Linden. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può abbandonare la terra posseduta dal Gruppo in Informazioni sul Terreno > tabella Generale, restituendola alla proprietà Linden senza una vendita! Devi essere sicuro di quello che fai prima di assegnare questa Abilità ." name="land release"/> + <action description="Impostare le info per la vendita della terra" longdescription="Imposta le info per la vendita della terra. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può vendere la terra posseduta dal Gruppo in Info sul Terreno > tabella Generale (al prezzo che vogliono)! Devi essere sicuro di quello che fai prima di assegnare questa Abilità ." name="land set sale info"/> + <action description="Suddividere e unire appezzamenti" longdescription="Suddividi e unisci parcel. Viene fatto con click destro sul terra, 'Modifica Terreno', trascinando poi il mouse sulla terra per creare una selezione. Per suddividere, seleziona quale parte vuoi dividere e clicca 'Suddividere'. Per unire, seleziona due o più two parcel confinanti e clicca 'Unisci'." name="land divide join"/> + </action_set> + <action_set description="Queste Abilità permettono di cambiare il nome dell'appezzamento, le impostazioni pre-definite, la visibilità nella mappatura, il punto di arrivo & le coordinate del Teleport." name="Parcel Identity"> + <action description="Premi 'Mostra Luogo nel Cerca' e seleziona una categoria" longdescription="Premi 'Mostra Luogo nel Cerca' e seleziona una categoria di parcel in Info sul Terreno > tabella Opzioni." name="land find places"/> + <action description="Cambia il nome del parcel, descrizione, e impostazioni nel 'Mostra Luogo nel Cerca'" longdescription="Cambia il nome del parcel, descrizione, e impostazioni nel 'Mostra Luogo nel Cerca'. Viene fatto in Info sul Terreno > tabella Opzioni." name="land change identity"/> + <action description="Impostare il punto di arrivo e le coordinate del Teleport" longdescription="In un appezzamento posseduto da un Gruppo, i Membri con questo Ruolo e Abilità possono impostare un punto di arrivo per i Teleport entranti, e impostare anche le coordinate del Teleport per ulteriore precisione. Viene fatto in Informazioni sul Terreno > tabella Opzioni." name="land set landing point"/> + </action_set> + <action_set description="Queste Abilità permettono alcune permessi nell'appezzamento, quali 'Creare Oggetti', 'Editare il Terreno', trasmettere musica & tabella Media." name="Parcel Settings"> + <action description="Cambiare musica & tabella media" longdescription="Cambia le impostazioni per lo streaming della musica e dei video in Informazioni sul Terreno > tabella Media." name="land change media"/> + <action description="Cliccare 'Edita il Terreno'" longdescription="Clicca 'Edita il Terreno'. *ATTENZIONE* Informazioni sul Terreno > tabella Opzioni > Edita il Terreno permette a tutti di modificare la forma del terreno, collocare e spostare le piante Linden. Devi essere sicuro di quello che fai prima di assignera questa Abilità . Edita il terreno in Informazioni sul Terreno > tabella Opzioni." name="land edit"/> + <action description="Cliccare Informazioni sul Terreno > Impostazione Opzioni" longdescription="Premi 'Salvo (nessun danno)', 'Vola', e permetti agli altri Residenti di: 'modifica Terreno', 'Crea', 'Crea Landmarks', e 'Scripts attivi' nella terra posseduta da un Gruppo in Info sul Terreno > tabella Opzioni." name="land options"/> + </action_set> + <action_set description="Queste Abilità permettono ai Membri di non avere restrizioni in un appezzamento posseduto da un Gruppo." name="Parcel Powers"> + <action description="Permettere sempre 'Edita il Terreno'" longdescription="I Membri con questo Ruolo e Abilità possono editare il terreno posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno > tabella Opzioni." name="land allow edit land"/> + <action description="Permettere Vola Sempre'" longdescription="I Membri con questo Ruolo e Abilità possono volare in un terreno posseduto da un Gruppo, anche se non è selezionato in Info sul Terreno > tabella Opzioni." name="land allow fly"/> + <action description="Permettere 'Crea Oggetti' sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare oggetti in un appezzamento posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno > tabella Opzioni." name="land allow create"/> + <action description="Permettere 'Crea Landmark' sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare Landmark in un appezzamento posseduto da un Gruppo , anche se non è evidenziato in Informazioni sul Terreno > tabella Opzioni." name="land allow landmark"/> + <action description="Permettere 'Teleportami a Casa' in un appezzamento di un Gruppo" longdescription="I Membri in un Ruolo con questa Abilità possono usare il menu Mondo > Landmarks > Imposta come Casa su un parcel intestato ad un Gruppo." name="land allow set home"/> + </action_set> + <action_set description="Queste Abilità permettono di concedere o limitare l'accesso ad un appezzamento di un Gruppo, e includono Congela ed Espelli un Residente." name="Parcel Access"> + <action description="Gestire la lista degli Accessi Consentiti" longdescription="Gestisci la lista degli Accessi Consentiti in Informazioni sul Terreno > tabella Accesso." name="land manage allowed"/> + <action description="Gestire la lista degli Accessi Bloccati" longdescription="Gestisci la lista Espulsi dal parcel in Info sul Terreno > tabella Accesso." name="land manage banned"/> + <action description="Cambia le impostazioni del parcel in 'Vendi Pass a'" longdescription="Cambia le impostazioni 'Vendi Pass a' in Info sul Terreno > tabella Accesso." name="land manage passes"/> + <action description="Espellere e Congelare i Residenti in un appezzamento" longdescription="Membri in un Ruolo con questa Abilità possono occuparsi di un residente indesiderato in un parcel posseduto da un Gruppo, con click destro sul residente, selezionando 'Espelli' o 'Immobilizza'." name="land admin"/> + </action_set> + <action_set description="Queste Abilità permettono ai Membri di restituire oggetti, collocare e spostare piante Linden. Questo è utile ai Membri per ripulire da oggetti indesiderati e creare paesaggi, ma deve essere utilizzato con cura, perchè non si può annullare la restituzione degli Oggetti." name="Parcel Content"> + <action description="Restituire oggetti posseduti da un Gruppo" longdescription="Restituisci gli oggetti posseduti da un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno > tabella Oggetti." name="land return group owned"/> + <action description="Restituire oggetti concessi ad un Gruppo" longdescription="Restituisci oggetti concessi ad un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno > tabella Oggetti." name="land return group set"/> + <action description="Restituire oggetti estranei al Gruppo" longdescription="Restituire oggetti estranei al Gruppo in un appezzamento di un Gruppo in Info sul Terreno > tabella Oggetti." name="land return non group"/> + <action description="Creare un paesaggio utilizzando le piante Linden" longdescription="Abilità di creare paesaggi di posizionare e spostare alberi, piante, erba. Questi oggetti sono presenti nella Libreria del tuo Inventario > Cartella Oggetti, o possono essere creati con il menu Crea." name="land gardening"/> + </action_set> + <action_set description="Queste Abilità includono il potere di intestare, modificare, vendere oggetti posseduti dal gruppo. Viene fatto in Build Tools > tabella Generale. Click destro su un oggetto e Modifica per vedere le impostazioni." name="Object Management"> + <action description="Intestare oggetti ad un Gruppo" longdescription="Intesta oggetti ad un Gruppo in Build Tools > tabella Generale." name="object deed"/> + <action description="Modificare (sposta, copia, modifica) oggetti di un Gruppo" longdescription="Controlla (sposta, copia, modifica) gli oggetti posseduti da un Gruppo in Build Tools > tabella Generale." name="object manipulate"/> + <action description="Mettere in vendita oggetti di un Gruppo" longdescription="Metti in vendita oggetti posseduti da un Gruppo in Build Tools > tabelle Generale." name="object set sale"/> + </action_set> + <action_set description="Queste Abilità permettono di richiedere ai Membri di pagare le perdite del Gruppo e di ricevere i dividendi del Gruppo, e di limitare l'accesso all'account del Gruppo." name="Accounting"> + <action description="Pagare le perdite del Gruppo e ricevere i dividendi del Gruppo" longdescription="I Membri con questo Ruolo e Abilità pagheranno automaticamente le perdite del Gruppo e riceveranno i dividendi del Gruppo. Questo significa che riceveranno una porzione delle vendite di terre possedute dal gruppo (che sono risolte giornalmente), e contribuiranno anche su cose come le tasse di iscrizione dell'appezzament. " name="accounting accountable"/> + </action_set> + <action_set description="Queste Abilità permettono ai Membri di spedire, ricevere, e vedere le Notice del Gruppo." name="Notices"> + <action description="Spedire Notice" longdescription="Membri in un Ruolo con questa Abilità possono spedire Notice nel Gruppo > sezione Notice." name="notices send"/> + <action description="Ricevere Notice e vedere Notice precedenti" longdescription="Membri in un ruolo con questa Abilità possono ricevere Notice e vedere Notice vecchie nel Gruppo > sezione Notice." name="notices receive"/> + </action_set> + <action_set description="Queste Abilità permettono di concedere o limitare l'accesso alle sessioni di chat e di voice chat nel gruppo." name="Chat"> + <action description="Aderire alla Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di chat, sia scritte che in voice." name="join group chat"/> + <action description="Aderire alla Voice Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di Voice Chat nel gruppo. NOTA: Per poter partecipare alla Chat di Gruppo è necessario accedere alla sessione di voice chat." name="join voice chat"/> + <action description="Moderare la Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono controllare l'accesso e la partecipazione alle sessioni di chat scritta e di voice chat nel Gruppo." name="moderate group chat"/> + </action_set> +</role_actions> diff --git a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml new file mode 100644 index 00000000000..8dd7bfec420 --- /dev/null +++ b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Vestiario" name="appearance panel"> + <string name="No Outfit" value="Nessun vestiario"/> + <filter_editor label="Filtri per il vestiario" name="Filter"/> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/> + <button name="newlook_btn" tool_tip="Aggiungi nuovo vestiario"/> + <dnd_button name="trash_btn" tool_tip="Rimuovi l'articolo selezionato"/> + <button label="Indossa" name="wear_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml new file mode 100644 index 00000000000..196eb75bd7e --- /dev/null +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Cose" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="Profilo" name="info_btn"/> + <button label="Indossa" name="wear_btn"/> + <button label="Riproduci" name="play_btn"/> + <button label="Teleport" name="teleport_btn"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml new file mode 100644 index 00000000000..23ca8b5ad8b --- /dev/null +++ b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Caratteristiche dell'articolo nell'Inventario"> + <panel.string name="unknown"> + (Sconosciuto) + </panel.string> + <panel.string name="public"> + (pubblico) + </panel.string> + <panel.string name="you_can"> + Tu puoi: + </panel.string> + <panel.string name="owner_can"> + Il Proprietario può: + </panel.string> + <panel.string name="acquiredDate"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </panel.string> + <text name="title" value="Caratteristiche dell'articolo"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Nome: + </text> + <text name="LabelItemDescTitle"> + Descrizione: + </text> + <text name="LabelCreatorTitle"> + Creatore: + </text> + <button label="Profilo..." name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Proprietario: + </text> + <button label="Profilo..." name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Acquisito: + </text> + <text name="LabelAcquiredDate"> + Wed May 24 12:50:46 2006 + </text> + <text name="OwnerLabel"> + Tu: + </text> + <check_box label="Modifica" name="CheckOwnerModify"/> + <check_box label="Copia" name="CheckOwnerCopy"/> + <check_box label="Rivendi" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Chiunque: + </text> + <check_box label="Copia" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppo: + </text> + <check_box label="Condividi" name="CheckShareWithGroup"/> + <text name="NextOwnerLabel"> + Prossimo Proprietario: + </text> + <check_box label="Modifica" name="CheckNextOwnerModify"/> + <check_box label="Copia" name="CheckNextOwnerCopy"/> + <check_box label="Rivendi" name="CheckNextOwnerTransfer"/> + <check_box label="In vendita" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Originale" name="Original"/> + </combo_box> + <spinner label="Prezzo:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml new file mode 100644 index 00000000000..e5f27795bee --- /dev/null +++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Caratteristiche dell'oggetto"> + <panel.string name="text deed continued"> + Intesta + </panel.string> + <panel.string name="text deed"> + Intesta + </panel.string> + <panel.string name="text modify info 1"> + Puoi modificare questo oggetto + </panel.string> + <panel.string name="text modify info 2"> + Puoi modificare questi oggetti + </panel.string> + <panel.string name="text modify info 3"> + Non puoi modificare questo oggetto + </panel.string> + <panel.string name="text modify info 4"> + Non puoi modificare questi oggetti + </panel.string> + <panel.string name="text modify warning"> + Questo oggetto ha parti unite + </panel.string> + <panel.string name="Cost Default"> + Prezzo: L$ + </panel.string> + <panel.string name="Cost Total"> + Prezzo Totale: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Prezzo Per: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Prezzo assortito + </panel.string> + <panel.string name="Sale Mixed"> + Vendita assortita + </panel.string> + <panel label=""> + <text name="Name:"> + Nome: + </text> + <text name="Description:"> + Descrizione: + </text> + <text name="Creator:"> + Creatore: + </text> + <text name="Owner:"> + Proprietario: + </text> + <text name="Group:"> + Gruppo: + </text> + <button name="button set group" tool_tip="Scegli un gruppo per condividere i permessi di questo oggetto"/> + <name_box initial_value="Caricando..." name="Group Name Proxy"/> + <button label="Intesta" label_selected="Intesta" name="button deed" tool_tip="Intestando questo oggetto lo passa con i permessi del prossimo proprietario. Gli oggetti condivisi dal Gruppo possono essere intestati solo da un Officer del gruppo."/> + <check_box label="Condividi" name="checkbox share with group" tool_tip="Permetti a tutti i Membri del gruppo impostato di condividere la tua modifica ai permessi di questo oggetto. Tu devi Intestare per consentire le restrizioni al ruolo."/> + <text name="label click action"> + Clicca per: + </text> + <combo_box name="clickaction"> + <combo_box.item label="Tocca (default)" name="Touch/grab(default)"/> + <combo_box.item label="Siedi sull'oggetto" name="Sitonobject"/> + <combo_box.item label="Compra l'oggetto" name="Buyobject"/> + <combo_box.item label="Paga l'ogggetto" name="Payobject"/> + <combo_box.item label="Apri" name="Open"/> + </combo_box> + <check_box label="In Vendita:" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Contenuti" name="Contents"/> + <combo_box.item label="Originale" name="Original"/> + </combo_box> + <spinner label="Prezzo: L$" name="Edit Cost"/> + <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Mostra questo oggetto nei risultati della ricerca"/> + <panel name="perms_build"> + <text name="perm_modify"> + Puoi modificare questo oggetto + </text> + <text name="Anyone can:"> + Chiunque: + </text> + <check_box label="Sposta" name="checkbox allow everyone move"/> + <check_box label="Copia" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Prossimo Proprietario: + </text> + <check_box label="Modifica" name="checkbox next owner can modify"/> + <check_box label="Copia" name="checkbox next owner can copy"/> + <check_box label="Transfer" name="checkbox next owner can transfer" tool_tip="Prossimo proprietario può regalare o rivendere questo oggetto"/> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + </panel> + </panel> + <panel name="button_panel"> + <button label="Apri" name="open_btn"/> + <button label="Paga" name="pay_btn"/> + <button label="Compra" name="buy_btn"/> + <button label="Cancella" name="cancel_btn"/> + <button label="Salva" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 6e3301fdd91..910e6e0960f 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -4,10 +4,27 @@ For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> - <string name="create_account_url">http://join.secondlife.com/index.php?lang=it-IT</string> + <string name="SECOND_LIFE"> + Second Life + </string> + <string name="APP_NAME"> + Second Life + </string> + <string name="SUPPORT_SITE"> + Portale di supporto di Second Life + </string> + <string name="StartupDetectingHardware"> + Ricerca hardware... + </string> + <string name="StartupLoading"> + In Caricamento + </string> <string name="LoginInProgress"> In connessione. [APP_NAME] può sembrare rallentata. Attendi. </string> + <string name="LoginInProgressNoFrozen"> + Logging in... + </string> <string name="LoginAuthenticating"> In autenticazione </string> @@ -26,11 +43,14 @@ <string name="LoginInitializingMultimedia"> Inizializzazione dati multimediali... </string> + <string name="LoginInitializingFonts"> + Caricamento caratteri... + </string> <string name="LoginVerifyingCache"> - Verifica della cache corso (può impiegarci dai 60-90 secondi)... + Verifica file della cache (tempo previsto 60-90 secondi)... </string> <string name="LoginProcessingResponse"> - Risposta in elaborazione... + Elaborazione risposta... </string> <string name="LoginInitializingWorld"> Inizializzazione... @@ -56,6 +76,15 @@ <string name="LoginDownloadingClothing"> Sto caricando i vestiti... </string> + <string name="LoginFailedNoNetwork"> + Errore di rete: Non è stato possibile stabilire un collegamento, controlla la tua connessione. + </string> + <string name="Quit"> + Termina + </string> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=it-IT + </string> <string name="AgentLostConnection"> Questa regione sta avendo problemi. Verifica la tua connessione a Internet. </string> @@ -74,39 +103,9 @@ <string name="TooltipIsGroup"> (Gruppo) </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Fisica - </string> - <string name="TooltipFlagTouch"> - Tocca - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Prendi dall'inventario - </string> - <string name="TooltipFlagPhantom"> - Fantasma - </string> - <string name="TooltipFlagTemporary"> - Temporaneo - </string> - <string name="TooltipFlagRightClickMenu"> - (Clicca con il tasto destro per il menù) - </string> - <string name="TooltipFreeToCopy"> - Copia consentita - </string> <string name="TooltipForSaleL$"> In Vendita: [AMOUNT]L$ </string> - <string name="TooltipForSaleMsg"> - In Vendita: [MESSAGE] - </string> <string name="TooltipFlagGroupBuild"> Costruzione solo con gruppo </string> @@ -134,6 +133,76 @@ <string name="TooltipMustSingleDrop"> Solo un singolo oggetto può essere creato qui </string> + <string name="TooltipHttpUrl"> + Clicca per visitare questa pagina web + </string> + <string name="TooltipSLURL"> + Clicca per avere maggiori informazioni sul luogo + </string> + <string name="TooltipAgentUrl"> + Clicca per vedere il profilo del residente + </string> + <string name="TooltipGroupUrl"> + Clicca per vedere la descrizione del gruppo + </string> + <string name="TooltipEventUrl"> + Clicca per vedere la descrizione dell'evento + </string> + <string name="TooltipClassifiedUrl"> + Clicca per vedere questa inserzione + </string> + <string name="TooltipParcelUrl"> + Clicca per vedere la descrizione della parcel + </string> + <string name="TooltipTeleportUrl"> + Clicca per teleportarti a questa destinazione + </string> + <string name="TooltipObjectIMUrl"> + Clicca per vedere la descrizione dell'oggetto + </string> + <string name="TooltipMapUrl"> + Clicca per vedere questo posto sulla mappa + </string> + <string name="TooltipSLAPP"> + Clicca per avviare il comando secondlife:// + </string> + <string name="CurrentURL" value=" URL attuale: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teleportati a + </string> + <string name="SLurlLabelShowOnMap"> + Mostra la mappa per + </string> + <string name="BUTTON_CLOSE_DARWIN"> + Chiudi (⌘W) + </string> + <string name="BUTTON_CLOSE_WIN"> + Chiudi (Ctrl+W) + </string> + <string name="BUTTON_RESTORE"> + Ripristina + </string> + <string name="BUTTON_MINIMIZE"> + Minimizza + </string> + <string name="BUTTON_TEAR_OFF"> + Distacca + </string> + <string name="BUTTON_DOCK"> + Àncora + </string> + <string name="BUTTON_UNDOCK"> + Disà ncora + </string> + <string name="BUTTON_HELP"> + Mostra gli aiuti + </string> + <string name="Searching"> + In ricerca... + </string> + <string name="NoneFound"> + Nessun risultato. + </string> <string name="RetrievingData"> Recupero dati in corso... </string> @@ -188,8 +257,77 @@ <string name="AssetErrorUnknownStatus"> Stato sconosciuto </string> - <string name="AvatarEditingApparance"> - (In modifica dell'aspetto fisico) + <string name="texture"> + texture + </string> + <string name="sound"> + suono + </string> + <string name="calling card"> + biglietto da visita + </string> + <string name="landmark"> + landmark + </string> + <string name="legacy script"> + script (vecchia versione) + </string> + <string name="clothing"> + abito + </string> + <string name="object"> + oggetto + </string> + <string name="note card"> + notecard + </string> + <string name="folder"> + cartella + </string> + <string name="root"> + cartella principale + </string> + <string name="lsl2 script"> + script LSL2 + </string> + <string name="lsl bytecode"> + bytecode LSL + </string> + <string name="tga texture"> + tga texture + </string> + <string name="body part"> + parte del corpo + </string> + <string name="snapshot"> + fotografia + </string> + <string name="lost and found"> + oggetti smarriti + </string> + <string name="targa image"> + immagine targa + </string> + <string name="trash"> + cestino + </string> + <string name="jpeg image"> + immagine jpeg + </string> + <string name="animation"> + animazione + </string> + <string name="gesture"> + gesture + </string> + <string name="simstate"> + simstate + </string> + <string name="favorite"> + preferiti + </string> + <string name="symbolic link"> + link </string> <string name="AvatarAway"> Assente @@ -408,17 +546,80 @@ Si </string> <string name="texture_loading"> - Caricando... + In Caricamento... </string> <string name="worldmap_offline"> Offline </string> + <string name="worldmap_results_none_found"> + Nessun risultato. + </string> + <string name="Ok"> + OK + </string> + <string name="Premature end of file"> + Fine prematura del file + </string> + <string name="ST_NO_JOINT"> + Impossibile trovare ROOT o JOINT. + </string> <string name="whisper"> sussurra: </string> <string name="shout"> grida: </string> + <string name="ringing"> + In connessione alla Voice Chat in-world... + </string> + <string name="connected"> + Connesso + </string> + <string name="unavailable"> + Il voice non è disponibile nel posto dove ti trovi ora + </string> + <string name="hang_up"> + Disconnesso dalla Voice Chat in-world + </string> + <string name="ScriptQuestionCautionChatGranted"> + A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS]. + </string> + <string name="ScriptQuestionCautionChatDenied"> + A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS]. + </string> + <string name="ScriptTakeMoney"> + Prendere dollari Linden (L$) da te + </string> + <string name="ActOnControlInputs"> + Agire sul tuo controllo degli input + </string> + <string name="RemapControlInputs"> + Rimappare il tuo controllo degli input + </string> + <string name="AnimateYourAvatar"> + Animare il tuo avatar + </string> + <string name="AttachToYourAvatar"> + Far indossare al tuo avatar + </string> + <string name="ReleaseOwnership"> + Rilasciare la propietà è far diventare pubblico. + </string> + <string name="LinkAndDelink"> + Collegare e scollegare dagli altri oggetti + </string> + <string name="AddAndRemoveJoints"> + Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti + </string> + <string name="ChangePermissions"> + Cambiare i permessi + </string> + <string name="TrackYourCamera"> + Tracciare la fotocamera + </string> + <string name="ControlYourCamera"> + Controllare la tua fotocamera + </string> <string name="SIM_ACCESS_PG"> PG </string> @@ -437,8 +638,6 @@ <string name="land_type_unknown"> (sconosciuto) </string> - <string name="covenant_never_modified">Ultima modifica: (mai)</string> - <string name="covenant_modified">Ultima modifica: </string> <string name="all_files"> Tutti i file </string> @@ -484,26 +683,122 @@ <string name="choose_the_directory"> Scegli la cartella </string> - <string name="accel-mac-control"> - ⌃ + <string name="AvatarSetNotAway"> + Imposta non assente </string> - <string name="accel-mac-command"> - ⌘ + <string name="AvatarSetAway"> + Imposta assente </string> - <string name="accel-mac-option"> - ⌥ + <string name="AvatarSetNotBusy"> + Imposta non occupato </string> - <string name="accel-mac-shift"> - ⇧ + <string name="AvatarSetBusy"> + Imposta occupato </string> - <string name="accel-win-control"> - Ctrl+ + <string name="shape"> + Shape </string> - <string name="accel-win-alt"> - Alt+ + <string name="skin"> + Skin </string> - <string name="accel-win-shift"> - Shift+ + <string name="hair"> + Capelli + </string> + <string name="eyes"> + Occhi + </string> + <string name="shirt"> + Camicia + </string> + <string name="pants"> + Pantaloni + </string> + <string name="shoes"> + Scarpe + </string> + <string name="socks"> + Calze + </string> + <string name="jacket"> + Giacca + </string> + <string name="gloves"> + Guanti + </string> + <string name="undershirt"> + Maglietta intima + </string> + <string name="underpants"> + slip + </string> + <string name="skirt"> + Gonna + </string> + <string name="alpha"> + Alfa (Trasparenza) + </string> + <string name="tattoo"> + Tatuaggio + </string> + <string name="invalid"> + non valido + </string> + <string name="next"> + Seguente + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Notice di gruppo + </string> + <string name="GroupNotifyGroupNotices"> + Notice di gruppo + </string> + <string name="GroupNotifySentBy"> + Inviato da + </string> + <string name="GroupNotifyAttached"> + Allegato: + </string> + <string name="GroupNotifyViewPastNotices"> + Visualizza i notice passati o scegli qui di non riceverne. + </string> + <string name="GroupNotifyOpenAttachment"> + Apri l'allegato + </string> + <string name="GroupNotifySaveAttachment"> + Salva l'allegato + </string> + <string name="TeleportOffer"> + Offerta di Teletrasporto + </string> + <string name="StartUpNotification"> + [%d] una nuova notifica è arrivata mentre eri assente... + </string> + <string name="StartUpNotifications"> + [%d] nuove notifice sono arrivate mentre eri assente... + </string> + <string name="OverflowInfoChannelString"> + Hai ancora [%d] notifiche + </string> + <string name="BodyPartsRightArm"> + Braccio destro + </string> + <string name="BodyPartsHead"> + Testa + </string> + <string name="BodyPartsLeftArm"> + Braccio sinistro + </string> + <string name="BodyPartsLeftLeg"> + Gamba sinistra + </string> + <string name="BodyPartsTorso"> + Torace + </string> + <string name="BodyPartsRightLeg"> + Gamba destra </string> <string name="GraphicsQualityLow"> Basso @@ -514,72 +809,2408 @@ <string name="GraphicsQualityHigh"> Alto </string> - - <!-- PARCEL_CATEGORY_UI_STRING - TAKE FROM floater_about_land."land category with adult".item1-item12 --> - <string name="Linden Location">Luogo dei Linden</string> - <string name="Adult">Adult</string> - <string name="Arts&Culture">Arte & Cultura</string> - <string name="Business">Affari</string> - <string name="Educational">Educazione</string> - <string name="Gaming">Gioco</string> - <string name="Hangout">Divertimento</string> - <string name="Newcomer Friendly">Accoglienza nuovi residenti</string> - <string name="Parks&Nature">Parchi & Natura</string> - <string name="Residential">Residenziale</string> - <string name="Shopping">Shopping</string> - <string name="Other">Altro</string> - - <string name="ringing"> - In connessione alla Voice Chat in-world... + <string name="LeaveMouselook"> + Premi ESC per tornare in visulizzazione normale + </string> + <string name="InventoryNoMatchingItems"> + Nessun oggetto corrispondente trovato in inventario. + </string> + <string name="InventoryNoTexture"> + Non hai una copia +di questa texture in inventario. + </string> + <string name="no_transfer" value=" (no transfer)"/> + <string name="no_modify" value=" (no modify)"/> + <string name="no_copy" value=" (no copy)"/> + <string name="worn" value=" (indossato)"/> + <string name="link" value=" (link)"/> + <string name="broken_link" value=" (broken_link)"/> + <string name="LoadingContents"> + Contenuto in caricamento... + </string> + <string name="NoContents"> + Nessun contenuto + </string> + <string name="WornOnAttachmentPoint" value=" (indossato su [ATTACHMENT_POINT])"/> + <string name="Chat" value=" Chat :"/> + <string name="Sound" value=" Suono :"/> + <string name="Wait" value=" --- Attendi :"/> + <string name="AnimFlagStop" value=" Ferma l'Animazione :"/> + <string name="AnimFlagStart" value=" Inizia l'Animazione :"/> + <string name="Wave" value=" Wave"/> + <string name="HelloAvatar" value=" Ciao, avatar!"/> + <string name="ViewAllGestures" value=" Visualizza tutte le gesture >>"/> + <string name="Animations" value=" Animazioni,"/> + <string name="Calling Cards" value=" Biglietti da visita,"/> + <string name="Clothing" value=" Vestiti,"/> + <string name="Gestures" value=" Gesture,"/> + <string name="Landmarks" value=" Landmark,"/> + <string name="Notecards" value=" Notecard,"/> + <string name="Objects" value=" Oggetti,"/> + <string name="Scripts" value=" Script,"/> + <string name="Sounds" value=" Suoni,"/> + <string name="Textures" value=" Texture,"/> + <string name="Snapshots" value=" Fotografie,"/> + <string name="No Filters" value="No "/> + <string name="Since Logoff" value=" - Dalla disconnessione"/> + <string name="InvFolder My Inventory"> + Il mio inventario + </string> + <string name="InvFolder My Favorites"> + I miei preferiti + </string> + <string name="InvFolder Library"> + Libreria + </string> + <string name="InvFolder Textures"> + Texture + </string> + <string name="InvFolder Sounds"> + Suoni </string> - <string name="connected"> - Connesso + <string name="InvFolder Calling Cards"> + Biglieti da visita </string> - <string name="unavailable"> - Il voice non è disponibile nel posto dove ti trovi ora + <string name="InvFolder Landmarks"> + Landmark </string> - <string name="hang_up"> - Disconnesso dalla Voice Chat in-world + <string name="InvFolder Scripts"> + Script + </string> + <string name="InvFolder Clothing"> + Vestiti + </string> + <string name="InvFolder Objects"> + Oggetti + </string> + <string name="InvFolder Notecards"> + Notecard + </string> + <string name="InvFolder New Folder"> + Nuova cartella + </string> + <string name="InvFolder Inventory"> + Inventario + </string> + <string name="InvFolder Uncompressed Images"> + Immagini non compresse + </string> + <string name="InvFolder Body Parts"> + Parti del corpo + </string> + <string name="InvFolder Trash"> + Cestino + </string> + <string name="InvFolder Photo Album"> + Album fotografico + </string> + <string name="InvFolder Lost And Found"> + Oggetti smarriti + </string> + <string name="InvFolder Uncompressed Sounds"> + Suoni non compressi + </string> + <string name="InvFolder Animations"> + Animazioni + </string> + <string name="InvFolder Gestures"> + Gesture + </string> + <string name="InvFolder favorite"> + Preferiti + </string> + <string name="InvFolder Current Outfit"> + Outfit attuale + </string> + <string name="InvFolder My Outfits"> + I miei Outfit + </string> + <string name="InvFolder Friends"> + Amici + </string> + <string name="InvFolder All"> + Tutti + </string> + <string name="Buy"> + Compra + </string> + <string name="BuyforL$"> + Compra per L$ + </string> + <string name="Stone"> + Pietra + </string> + <string name="Metal"> + Metallo + </string> + <string name="Glass"> + Vetro + </string> + <string name="Wood"> + Legno + </string> + <string name="Flesh"> + Carne + </string> + <string name="Plastic"> + Plastica + </string> + <string name="Rubber"> + Gomma + </string> + <string name="Light"> + Luce + </string> + <string name="KBShift"> + Shift + </string> + <string name="KBCtrl"> + Ctrl + </string> + <string name="Chest"> + Petto + </string> + <string name="Skull"> + Cranio + </string> + <string name="Left Shoulder"> + Spalla sinistra + </string> + <string name="Right Shoulder"> + Spalla destra + </string> + <string name="Left Hand"> + Mano sinistra + </string> + <string name="Right Hand"> + Mano destra + </string> + <string name="Left Foot"> + Piede sinisto + </string> + <string name="Right Foot"> + Piede destro + </string> + <string name="Spine"> + Spina dorsale + </string> + <string name="Pelvis"> + Pelvi + </string> + <string name="Mouth"> + Bocca + </string> + <string name="Chin"> + Mento + </string> + <string name="Left Ear"> + Orecchio sinistro + </string> + <string name="Right Ear"> + Orecchio destro + </string> + <string name="Left Eyeball"> + Bulbo sinistro + </string> + <string name="Right Eyeball"> + Bulbo destro + </string> + <string name="Nose"> + Naso + </string> + <string name="R Upper Arm"> + Avambraccio destro + </string> + <string name="R Forearm"> + Braccio destro + </string> + <string name="L Upper Arm"> + Avambraccio sinistro + </string> + <string name="L Forearm"> + Braccio sinistro + </string> + <string name="Right Hip"> + Anca destra + </string> + <string name="R Upper Leg"> + Coscia destra + </string> + <string name="R Lower Leg"> + Gamba destra + </string> + <string name="Left Hip"> + Anca sinista + </string> + <string name="L Upper Leg"> + Coscia sinistra + </string> + <string name="L Lower Leg"> + Gamba sinistra + </string> + <string name="Stomach"> + Stomaco + </string> + <string name="Left Pec"> + Petto sinistro + </string> + <string name="Right Pec"> + Petto destro + </string> + <string name="YearsMonthsOld"> + Nato da [AGEYEARS] [AGEMONTHS] + </string> + <string name="YearsOld"> + Nato da [AGEYEARS] + </string> + <string name="MonthsOld"> + Nato da [AGEMONTHS] + </string> + <string name="WeeksOld"> + Nato da [AGEWEEKS] + </string> + <string name="DaysOld"> + Nato da [AGEDAYS] + </string> + <string name="TodayOld"> + Iscritto oggi + </string> + <string name="AgeYearsA"> + [COUNT] anno + </string> + <string name="AgeYearsB"> + [COUNT] anni + </string> + <string name="AgeYearsC"> + [COUNT] anni + </string> + <string name="AgeMonthsA"> + [COUNT] mese + </string> + <string name="AgeMonthsB"> + [COUNT] mesi + </string> + <string name="AgeMonthsC"> + [COUNT] mesi + </string> + <string name="AgeWeeksA"> + [COUNT] settimana + </string> + <string name="AgeWeeksB"> + [COUNT] settimane + </string> + <string name="AgeWeeksC"> + [COUNT] settimane + </string> + <string name="AgeDaysA"> + [COUNT] giorno + </string> + <string name="AgeDaysB"> + [COUNT] giorni + </string> + <string name="AgeDaysC"> + [COUNT] giorni + </string> + <string name="GroupMembersA"> + [COUNT] membro + </string> + <string name="GroupMembersB"> + [COUNT] membri + </string> + <string name="GroupMembersC"> + [COUNT] membri + </string> + <string name="AcctTypeResident"> + Residente + </string> + <string name="AcctTypeTrial"> + In prova + </string> + <string name="AcctTypeCharterMember"> + Membro onorario + </string> + <string name="AcctTypeEmployee"> + Impiegato Linden Lab + </string> + <string name="PaymentInfoUsed"> + Informazioni di pagamento usate + </string> + <string name="PaymentInfoOnFile"> + Informazioni di pagamento registrate + </string> + <string name="NoPaymentInfoOnFile"> + Nessuna informazione di pagamento + </string> + <string name="AgeVerified"> + Età verificata + </string> + <string name="NotAgeVerified"> + Età non verificata + </string> + <string name="Center 2"> + Centro 2 + </string> + <string name="Top Right"> + In alto a destra + </string> + <string name="Top"> + In alto + </string> + <string name="Top Left"> + In alto a sinistra + </string> + <string name="Center"> + Al centro + </string> + <string name="Bottom Left"> + In basso a sinistra + </string> + <string name="Bottom"> + In basso + </string> + <string name="Bottom Right"> + In basso a destra + </string> + <string name="CompileQueueDownloadedCompiling"> + Scaricato, in compilazione + </string> + <string name="CompileQueueScriptNotFound"> + Script non trovato sul server. + </string> + <string name="CompileQueueProblemDownloading"> + Problema nel download + </string> + <string name="CompileQueueInsufficientPermDownload"> + Permessi insufficenti per scaricare lo script. + </string> + <string name="CompileQueueInsufficientPermFor"> + Permessi insufficenti per + </string> + <string name="CompileQueueUnknownFailure"> + Errore di dowload sconosciuto + </string> + <string name="CompileQueueTitle"> + Avanzamento ricompilazione + </string> + <string name="CompileQueueStart"> + ricompila + </string> + <string name="ResetQueueTitle"> + Avanzamento reset + </string> + <string name="ResetQueueStart"> + reset + </string> + <string name="RunQueueTitle"> + Avanzamento attivazione + </string> + <string name="RunQueueStart"> + Attiva + </string> + <string name="NotRunQueueTitle"> + Avanzamento disattivazione + </string> + <string name="NotRunQueueStart"> + Disattivazione + </string> + <string name="CompileSuccessful"> + Compilazione riuscita! + </string> + <string name="CompileSuccessfulSaving"> + Compilazione riuscita, in salvataggio... + </string> + <string name="SaveComplete"> + Salvataggio completato. + </string> + <string name="ObjectOutOfRange"> + Script (oggetto fuori portata) + </string> + <string name="GodToolsObjectOwnedBy"> + Oggetto [OBJECT] di proprietà di [OWNER] + </string> + <string name="GroupsNone"> + nessuno + </string> + <string name="Group" value=" (gruppo)"/> + <string name="Unknown"> + (Sconosciuto) + </string> + <string name="SummaryForTheWeek" value="Riassunto della settimana, partendo dal"/> + <string name="NextStipendDay" value="Il prossimo giorno di stipendio è "/> + <string name="GroupIndividualShare" value=" Gruppo Dividendi individuali"/> + <string name="Balance"> + Saldo + </string> + <string name="Credits"> + Crediti + </string> + <string name="Debits"> + Debiti + </string> + <string name="Total"> + Totale + </string> + <string name="NoGroupDataFound"> + Nessun dato trovato per questo gruppo + </string> + <string name="IMParentEstate"> + Proprietà principale + </string> + <string name="IMMainland"> + mainland + </string> + <string name="IMTeen"> + teen + </string> + <string name="RegionInfoError"> + errore + </string> + <string name="RegionInfoAllEstatesOwnedBy"> + la proprietà posseduta da [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn"> + Le proprietà che possiedi + </string> + <string name="RegionInfoAllEstatesYouManage"> + Le proprietà di cui sei manager per conto di [OWNER] + </string> + <string name="RegionInfoAllowedResidents"> + Residenti ammessi: ([ALLOWEDAGENTS], massimo [MAXACCESS]) + </string> + <string name="RegionInfoAllowedGroups"> + Gruppi ammessi: ([ALLOWEDGROUPS], massimo [MAXACCESS]) + </string> + <string name="CursorPos"> + Riga [LINE], Colonna [COLUMN] + </string> + <string name="PanelDirCountFound"> + [COUNT] trovato/i + </string> + <string name="PanelContentsNewScript"> + Nuovo Script + </string> + <string name="MuteByName"> + (per nome) + </string> + <string name="MuteAgent"> + (residente) + </string> + <string name="MuteObject"> + (oggetto) + </string> + <string name="MuteGroup"> + (gruppo) + </string> + <string name="RegionNoCovenant"> + Non esiste nessun regolamento per questa proprietà . + </string> + <string name="RegionNoCovenantOtherOwner"> + Non esiste nessun regolamento per questa proprietà . Il terreno di questa proprietà è messo in vendita dal proprietario, non dalla Linden Lab. Contatta il proprietario del terreno per i dettagli della vendita. + </string> + <string name="covenant_last_modified"> + Ultima modifica: + </string> + <string name="none_text" value=" (nessuno) "/> + <string name="never_text" value=" (mai) "/> + <string name="GroupOwned"> + Posseduta da un gruppo + </string> + <string name="Public"> + Pubblica + </string> + <string name="ClassifiedClicksTxt"> + Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo + </string> + <string name="ClassifiedUpdateAfterPublish"> + (si aggiornerà dopo la pubblicazione) + </string> + <string name="MultiPreviewTitle"> + Anteprima + </string> + <string name="MultiPropertiesTitle"> + Proprietà + </string> + <string name="InvOfferAnObjectNamed"> + Un oggetto chiamato + </string> + <string name="InvOfferOwnedByGroup"> + Posseduto dal gruppo + </string> + <string name="InvOfferOwnedByUnknownGroup"> + Posseduto da un gruppo sconosciuto + </string> + <string name="InvOfferOwnedBy"> + Posseduto da + </string> + <string name="InvOfferOwnedByUnknownUser"> + Posseduto da un'utente sconosciuto + </string> + <string name="InvOfferGaveYou"> + Ti ha offerto + </string> + <string name="InvOfferYouDecline"> + Rifiuta + </string> + <string name="InvOfferFrom"> + da + </string> + <string name="GroupMoneyTotal"> + Totale + </string> + <string name="GroupMoneyBought"> + comprato + </string> + <string name="GroupMoneyPaidYou"> + ti ha pagato + </string> + <string name="GroupMoneyPaidInto"> + ha pagato + </string> + <string name="GroupMoneyBoughtPassTo"> + ha comprato il pass + </string> + <string name="GroupMoneyPaidFeeForEvent"> + pagato la tassa per l'evento + </string> + <string name="GroupMoneyPaidPrizeForEvent"> + pagato il premio per l'evento + </string> + <string name="GroupMoneyBalance"> + Saldo + </string> + <string name="GroupMoneyCredits"> + Crediti + </string> + <string name="GroupMoneyDebits"> + Debiti + </string> + <string name="ViewerObjectContents"> + Contenuto + </string> + <string name="AcquiredItems"> + Oggetti acquisiti + </string> + <string name="Cancel"> + Cancella + </string> + <string name="UploadingCosts"> + Costi di caricamento [%s] + </string> + <string name="UnknownFileExtension"> + Estensione del file sconosciuta [.%s] +Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + </string> + <string name="AddLandmarkNavBarMenu"> + Aggiungi landmark... + </string> + <string name="EditLandmarkNavBarMenu"> + Modifica landmark... + </string> + <string name="accel-mac-control"> + ⌃ + </string> + <string name="accel-mac-command"> + ⌘ + </string> + <string name="accel-mac-option"> + ⌥ + </string> + <string name="accel-mac-shift"> + ⇧ + </string> + <string name="accel-win-control"> + Ctrl+ + </string> + <string name="accel-win-alt"> + Alt+ + </string> + <string name="accel-win-shift"> + Shift+ + </string> + <string name="FileSaved"> + File Salvato + </string> + <string name="Receiving"> + In ricezione + </string> + <string name="AM"> + AM + </string> + <string name="PM"> + PM + </string> + <string name="PST"> + PST + </string> + <string name="PDT"> + PDT + </string> + <string name="Forward"> + Avanti + </string> + <string name="Left"> + Sinistra + </string> + <string name="Right"> + Destra + </string> + <string name="Back"> + Dietro + </string> + <string name="North"> + Nord + </string> + <string name="South"> + Sud + </string> + <string name="West"> + Ovest + </string> + <string name="East"> + Est + </string> + <string name="Up"> + Su + </string> + <string name="Down"> + Giù + </string> + <string name="Any Category"> + Tutte le categorie + </string> + <string name="Shopping"> + Shopping + </string> + <string name="Land Rental"> + Affitto terreni + </string> + <string name="Property Rental"> + Affitto proprietà + </string> + <string name="Special Attraction"> + Attrazioni speciali + </string> + <string name="New Products"> + Nuovi prodotti + </string> + <string name="Employment"> + Impiego + </string> + <string name="Wanted"> + Richiesti + </string> + <string name="Service"> + Servizi + </string> + <string name="Personal"> + Personale + </string> + <string name="None"> + Nessuno + </string> + <string name="Linden Location"> + Luogo dei Linden + </string> + <string name="Adult"> + Adult + </string> + <string name="Arts&Culture"> + Arte & Cultura + </string> + <string name="Business"> + Affari + </string> + <string name="Educational"> + Educazione + </string> + <string name="Gaming"> + Gioco + </string> + <string name="Hangout"> + Divertimento + </string> + <string name="Newcomer Friendly"> + Accoglienza nuovi residenti + </string> + <string name="Parks&Nature"> + Parchi & Natura + </string> + <string name="Residential"> + Residenziale + </string> + <string name="Stage"> + Stage + </string> + <string name="Other"> + Altro + </string> + <string name="Any"> + Tutti + </string> + <string name="You"> + Tu + </string> + <string name="Multiple Media"> + Media Multipli + </string> + <string name="Play Media"> + Media Play/Pausa + </string> + <string name="MBCmdLineError"> + Un errore è stato riscontrato analizzando la linea di comando. +Per informazioni: http://wiki.secondlife.com/wiki/Client_parameters +Errore: + </string> + <string name="MBCmdLineUsg"> + uso linea di comando del programma [APP_NAME] : + </string> + <string name="MBUnableToAccessFile"> + Il programma [APP_NAME] non è in grado di accedere ad un file necessario. + +Potrebbe darsi che tu abbia copie multiple attivate, o il tuo sistema reputa erroneamente che il file sia già aperto. +Se il problema persiste, riavvia il computer e riprova. +Se il problema persiste ancora, dovresti completamente disinstallare l'applicazione [APP_NAME] e reinstallarla. + </string> + <string name="MBFatalError"> + Errore fatale + </string> + <string name="MBRequiresAltiVec"> + Il programma [APP_NAME] richiede un processore con AltiVec (G4 o superiore). + </string> + <string name="MBAlreadyRunning"> + Il programma [APP_NAME] è già attivo. +Controlla che il programma non sia minimizzato nella tua barra degli strumenti. +Se il messaggio persiste, riavvia il computer. + </string> + <string name="MBFrozenCrashed"> + Sembra che [APP_NAME] si sia bloccata o interrotta nella sessione precedente. +Vuoi mandare un crash report? + </string> + <string name="MBAlert"> + Avviso + </string> + <string name="MBNoDirectX"> + Il programmma [APP_NAME] non riesce a trovare una DirectX 9.0b o superiore. +[APP_NAME] usa le DirectX per determinare hardware e/o i driver non aggiornati che possono causare problemi di stabilità , scarsa performance e interruzioni. Sebbene tu possa avviare il programma [APP_NAME] senza di esse, raccomandiamo caldamente di installare le DirectX 9.0b. + +Vuoi continuare? + </string> + <string name="MBWarning"> + Attenzione + </string> + <string name="MBNoAutoUpdate"> + L'aggiornamento automatico non è stato ancora implementato per Linux. +Raccomandiamo di scaricare l'utima versione da www.secondlife.com. + </string> + <string name="MBRegClassFailed"> + RegisterClass non riuscito + </string> + <string name="MBError"> + Errore + </string> + <string name="MBFullScreenErr"> + Impossibile visualizzare a schermo intero a risoluzione [WIDTH] x [HEIGHT]. +Visualizzazione corrente ridotta a finestra. + </string> + <string name="MBDestroyWinFailed"> + Errore di arresto durante il tentativo di chiusura della finestra (DestroyWindow() non riuscito) + </string> + <string name="MBShutdownErr"> + Errore di arresto + </string> + <string name="MBDevContextErr"> + Impossibile caricare i driver GL + </string> + <string name="MBPixelFmtErr"> + Impossibile trovare un formato pixel adatto + </string> + <string name="MBPixelFmtDescErr"> + Impossibile ottenere una descrizione del formato pixel + </string> + <string name="MBTrueColorWindow"> + [APP_NAME] richiede True Color (32-bit) per funzionare. +Vai alle impostazioni dello schermo del tuo computer e imposta il colore in modalità 32-bit. + </string> + <string name="MBAlpha"> + [APP_NAME] non funziona poichè è impossibile trovare un canale alpha ad 8 Bit. Questo problema normalmente deriva dai driver della scheda video. +Assicurati di avere installato i driver della scheda video più recenti. +Assicurati anche che il monitor sia impostato a True Color (32-bit) nel pannello di controllo > Display > Settings. +Se il messaggio persiste, contatta contatta [SUPPORT_SITE]. + </string> + <string name="MBPixelFmtSetErr"> + Impossibile impostare il formato pixel + </string> + <string name="MBGLContextErr"> + Impossibile creare il GL rendering + </string> + <string name="MBGLContextActErr"> + Impossibile attivare il GL rendering + </string> + <string name="MBVideoDrvErr"> + [APP_NAME] Non riesce ad avviarsi perchè i driver della tua scheda video non sono stati installati correttamente, non sono aggiornati, o sono per un hardware non supportato. Assicurati di avere i driver della scheda video più recenti e anche se li hai installati, prova a reinstallarli di nuovo. + +Se il messaggio persiste, contatta [SUPPORT_SITE]. + </string> + <string name="5 O'Clock Shadow"> + Barba leggera + </string> + <string name="All White"> + Tutti bianchi + </string> + <string name="Anime Eyes"> + Occhi grandi + </string> + <string name="Arced"> + Arcuato + </string> + <string name="Arm Length"> + Lunghezza braccia + </string> + <string name="Attached"> + Attaccato + </string> + <string name="Attached Earlobes"> + Lobi attaccati + </string> + <string name="Back Bangs"> + #Back Bangs + </string> + <string name="Back Bangs Down"> + #Back Bangs Down + </string> + <string name="Back Bangs Up"> + #Back Bangs Up + </string> + <string name="Back Fringe"> + Frangetta all'indietro + </string> + <string name="Back Hair"> + #Back Hair + </string> + <string name="Back Hair Down"> + #Back Hair Down + </string> + <string name="Back Hair Up"> + #Back Hair Up + </string> + <string name="Baggy"> + Con le borse + </string> + <string name="Bangs"> + Frange + </string> + <string name="Bangs Down"> + #Bangs Down + </string> + <string name="Bangs Up"> + #Bangs Up + </string> + <string name="Beady Eyes"> + Occhi piccoli + </string> + <string name="Belly Size"> + punto vita + </string> + <string name="Big"> + Grande + </string> + <string name="Big Butt"> + Sedere grande + </string> + <string name="Big Eyeball"> + #Big Eyeball + </string> + <string name="Big Hair Back"> + Gonfiore dei capelli: dietro + </string> + <string name="Big Hair Front"> + Gonfiore dei capelli: davanti + </string> + <string name="Big Hair Top"> + Gonfiore dei capelli: sopra + </string> + <string name="Big Head"> + Grandezza testa + </string> + <string name="Big Pectorals"> + Grandezza pettorali + </string> + <string name="Big Spikes"> + Capelli con punte + </string> + <string name="Black"> + Nero + </string> + <string name="Blonde"> + Biondo + </string> + <string name="Blonde Hair"> + Capelli biondi + </string> + <string name="Blush"> + Fard + </string> + <string name="Blush Color"> + Colore fard + </string> + <string name="Blush Opacity"> + Opacità fard + </string> + <string name="Body Definition"> + Definizione muscolare + </string> + <string name="Body Fat"> + Grasso corporeo + </string> + <string name="Body Freckles"> + Lentiggini e nei + </string> + <string name="Body Thick"> + Corpo robusto + </string> + <string name="Body Thickness"> + Robustezza del corpo + </string> + <string name="Body Thin"> + Magrezza del corpo + </string> + <string name="Bow Legged"> + Gambe arcuate + </string> + <string name="Breast Buoyancy"> + Altezza del seno + </string> + <string name="Breast Cleavage"> + Avvicinamento dei seni + </string> + <string name="Breast Size"> + Grandezza del seno + </string> + <string name="Bridge Width"> + Larghezza setto + </string> + <string name="Broad"> + Largo + </string> + <string name="Brow Size"> + Grandezza delle sopracciglia + </string> + <string name="Bug Eyes"> + Sporgenza degli occhi + </string> + <string name="Bugged Eyes"> + Occhi sporgenti + </string> + <string name="Bulbous"> + Bulboso + </string> + <string name="Bulbous Nose"> + Naso bulboso + </string> + <string name="Bushy Eyebrows"> + Sopracciglia cespugliose + </string> + <string name="Bushy Hair"> + Capelli a cespuglio + </string> + <string name="Butt Size"> + Grandezza del sedere + </string> + <string name="bustle skirt"> + Arricciatura posteriore + </string> + <string name="no bustle"> + Meno arricciatura + </string> + <string name="more bustle"> + Più arricciatura + </string> + <string name="Chaplin"> + Baffetti + </string> + <string name="Cheek Bones"> + Mascella + </string> + <string name="Chest Size"> + Ampiezza del torace + </string> + <string name="Chin Angle"> + Angolo del mento + </string> + <string name="Chin Cleft"> + Fessura inf. del mento + </string> + <string name="Chin Curtains"> + Barba sottomento + </string> + <string name="Chin Depth"> + Profondità mento + </string> + <string name="Chin Heavy"> + Appuntita verso l'alto + </string> + <string name="Chin In"> + Mento in dentro + </string> + <string name="Chin Out"> + Mento in fuori + </string> + <string name="Chin-Neck"> + Grandezza mento-collo + </string> + <string name="Clear"> + Trasparente + </string> + <string name="Cleft"> + Fossetta + </string> + <string name="Close Set Eyes"> + Occhi ravvicinati + </string> + <string name="Closed"> + Chiusa + </string> + <string name="Closed Back"> + Spacco chiuso dietro + </string> + <string name="Closed Front"> + Spacco chiuso davanti + </string> + <string name="Closed Left"> + Spacco chiuso sx + </string> + <string name="Closed Right"> + Spacco chiuso dx + </string> + <string name="Coin Purse"> + Meno pronunciati + </string> + <string name="Collar Back"> + Scollatura posteriore + </string> + <string name="Collar Front"> + Scollatura anteriore + </string> + <string name="Corner Down"> + Angolo all'ingiù + </string> + <string name="Corner Normal"> + Angolo Normale + </string> + <string name="Corner Up"> + Angolo all'insù + </string> + <string name="Creased"> + Alzato + </string> + <string name="Crooked Nose"> + Naso storto + </string> + <string name="Cropped Hair"> + Capelli raccolti + </string> + <string name="Cuff Flare"> + Fondo pantalone + </string> + <string name="Dark"> + Scuro + </string> + <string name="Dark Green"> + Verde scuro + </string> + <string name="Darker"> + Più scuro + </string> + <string name="Deep"> + Più pronunciato + </string> + <string name="Default Heels"> + Tacchi standard + </string> + <string name="Default Toe"> + Punta del piede standard + </string> + <string name="Dense"> + Meno rade + </string> + <string name="Dense hair"> + #Dense Hair + </string> + <string name="Double Chin"> + Doppio mento + </string> + <string name="Downturned"> + Naso all'ingiù + </string> + <string name="Duffle Bag"> + Più pronunciati + </string> + <string name="Ear Angle"> + Orecchie a sventola + </string> + <string name="Ear Size"> + Grandezza orecchie + </string> + <string name="Ear Tips"> + Tipo di orecchio + </string> + <string name="Egg Head"> + Ovalizzazione testa + </string> + <string name="Eye Bags"> + Borse sotto agli occhi + </string> + <string name="Eye Color"> + Colore degli occhi + </string> + <string name="Eye Depth"> + Occhi incavati + </string> + <string name="Eye Lightness"> + Luminosità degli occhi + </string> + <string name="Eye Opening"> + Apertura degli occhi + </string> + <string name="Eye Pop"> + Differenza apertura occhi + </string> + <string name="Eye Size"> + Grandezza occhi + </string> + <string name="Eye Spacing"> + Distanza occhi + </string> + <string name="Eyeball Size"> + #Eyeball Size + </string> + <string name="Eyebrow Arc"> + Arco delle sopracciglia + </string> + <string name="Eyebrow Density"> + Densità delle sopracciglia + </string> + <string name="Eyebrow Height"> + Altezza delle sopracciglia + </string> + <string name="Eyebrow Points"> + Sopracciglia appuntite + </string> + <string name="Eyebrow Size"> + Grandezza sopracciglia + </string> + <string name="Eyelash Length"> + Lunghezza delle ciglia + </string> + <string name="Eyeliner"> + Eyeliner + </string> + <string name="Eyeliner Color"> + Colore dell'eyeliner + </string> + <string name="Eyes Back"> + #Eyes Back + </string> + <string name="Eyes Bugged"> + Occhi sporgenti + </string> + <string name="Eyes Forward"> + #Eyes Forward + </string> + <string name="Eyes Long Head"> + #Eyes Long Head + </string> + <string name="Eyes Shear Left Up"> + Distorsione occhi in alto a sx + </string> + <string name="Eyes Shear Right Up"> + Distorsione occhi in alto a dx + </string> + <string name="Eyes Short Head"> + #Eyes Short Head + </string> + <string name="Eyes Spread"> + #Eyes Spread + </string> + <string name="Eyes Sunken"> + #Eyes Sunken + </string> + <string name="Eyes Together"> + #Eyes Together + </string> + <string name="Face Shear"> + Distorsione del viso + </string> + <string name="Facial Definition"> + Lineamenti del viso + </string> + <string name="Far Set Eyes"> + Occhi distanti + </string> + <string name="Fat"> + #Fat + </string> + <string name="Fat Head"> + #Fat Head + </string> + <string name="Fat Lips"> + Labbra carnose + </string> + <string name="Fat Lower"> + #Fat Lower + </string> + <string name="Fat Lower Lip"> + Labbro inferiore sporgente + </string> + <string name="Fat Torso"> + #Fat Torso + </string> + <string name="Fat Upper"> + #Fat Upper + </string> + <string name="Fat Upper Lip"> + Labbro superiore sporgente + </string> + <string name="Female"> + Femmina + </string> + <string name="Fingerless"> + Senza dita + </string> + <string name="Fingers"> + Dita + </string> + <string name="Flared Cuffs"> + Fondo largo + </string> + <string name="Flat"> + Piatto + </string> + <string name="Flat Butt"> + Sedere piatto + </string> + <string name="Flat Head"> + Viso piatto + </string> + <string name="Flat Toe"> + Punta piatta + </string> + <string name="Foot Size"> + Grandezza piede + </string> + <string name="Forehead Angle"> + Angolo della fronte + </string> + <string name="Forehead Heavy"> + Appuntita verso il basso + </string> + <string name="Freckles"> + Lentiggini + </string> + <string name="Front Bangs Down"> + #Front Bangs Down + </string> + <string name="Front Bangs Up"> + #Front Bangs Up + </string> + <string name="Front Fringe"> + Frangetta + </string> + <string name="Front Hair"> + #Front Hair + </string> + <string name="Front Hair Down"> + #Front Hair Down + </string> + <string name="Front Hair Up"> + #Front Hair Up + </string> + <string name="Full Back"> + Scostati + </string> + <string name="Full Eyeliner"> + Con eyeliner + </string> + <string name="Full Front"> + Anteriore pieno + </string> + <string name="Full Hair Sides"> + Riempimento lati + </string> + <string name="Full Sides"> + Pieni + </string> + <string name="Glossy"> + Lucido + </string> + <string name="Glove Fingers"> + Dita dei guanti + </string> + <string name="Glove Length"> + Lunghezza guanti + </string> + <string name="Hair"> + Capelli + </string> + <string name="Hair Back"> + Capelli: dietro + </string> + <string name="Hair Front"> + Capelli: davanti + </string> + <string name="Hair Sides"> + Capelli: lati + </string> + <string name="Hair Sweep"> + Traslazione + </string> + <string name="Hair Thickess"> + Spessore + </string> + <string name="Hair Thickness"> + Spessore barba + </string> + <string name="Hair Tilt"> + Rotazione capelli + </string> + <string name="Hair Tilted Left"> + Verso sinistra + </string> + <string name="Hair Tilted Right"> + Verso destra + </string> + <string name="Hair Volume"> + Capelli: volume + </string> + <string name="Hand Size"> + Grandezza mani + </string> + <string name="Handlebars"> + Baffi lunghi + </string> + <string name="Head Length"> + Sporgenza del viso + </string> + <string name="Head Shape"> + Forma della testa + </string> + <string name="Head Size"> + Grandezza della testa + </string> + <string name="Head Stretch"> + Compressione lat testa + </string> + <string name="Heel Height"> + Altezza tacchi + </string> + <string name="Heel Shape"> + Forma tacchi + </string> + <string name="Height"> + Altezza + </string> + <string name="High"> + Alto + </string> + <string name="High Heels"> + Tacchi alti + </string> + <string name="High Jaw"> + Mandibola alta + </string> + <string name="High Platforms"> + Alta + </string> + <string name="High and Tight"> + Cavallo alto + </string> + <string name="Higher"> + Più alto + </string> + <string name="Hip Length"> + Altezza bacino + </string> + <string name="Hip Width"> + Larghezza bacino + </string> + <string name="In"> + Dentro + </string> + <string name="In Shdw Color"> + Colore ombretto interno + </string> + <string name="In Shdw Opacity"> + Opacità ombretto interno + </string> + <string name="Inner Eye Corner"> + Angolo interno + </string> + <string name="Inner Eye Shadow"> + Ombretto interno + </string> + <string name="Inner Shadow"> + Ombretto interno + </string> + <string name="Jacket Length"> + Lunghezza giacca + </string> + <string name="Jacket Wrinkles"> + Grinze della giacca + </string> + <string name="Jaw Angle"> + Angolo mandibola + </string> + <string name="Jaw Jut"> + Prognatismo mento + </string> + <string name="Jaw Shape"> + Forma del mento + </string> + <string name="Join"> + Avvicinati + </string> + <string name="Jowls"> + Guance + </string> + <string name="Knee Angle"> + Angolo ginocchia + </string> + <string name="Knock Kneed"> + Gambe ad X + </string> + <string name="Large"> + Grande + </string> + <string name="Large Hands"> + Mani grandi + </string> + <string name="Left Part"> + Riga a sinistra + </string> + <string name="Leg Length"> + Lunghezza gambe + </string> + <string name="Leg Muscles"> + Muscoli gambe + </string> + <string name="Less"> + Meno + </string> + <string name="Less Body Fat"> + Meno grasso + </string> + <string name="Less Curtains"> + Meno + </string> + <string name="Less Freckles"> + Meno lentiggini + </string> + <string name="Less Full"> + Meno piene + </string> + <string name="Less Gravity"> + Più alto + </string> + <string name="Less Love"> + Meno maniglie + </string> + <string name="Less Muscles"> + Meno muscoli + </string> + <string name="Less Muscular"> + Meno muscolari + </string> + <string name="Less Rosy"> + Meno rosato + </string> + <string name="Less Round"> + Meno rotondo + </string> + <string name="Less Saddle"> + Meno a sella + </string> + <string name="Less Square"> + Meno quadrato + </string> + <string name="Less Volume"> + Meno volume + </string> + <string name="Less soul"> + Meno + </string> + <string name="Lighter"> + Più chiaro + </string> + <string name="Lip Cleft"> + Distanza divis. labbro sup. + </string> + <string name="Lip Cleft Depth"> + Prof. spacco labbro sup. + </string> + <string name="Lip Fullness"> + Riempimento delle labbra + </string> + <string name="Lip Pinkness"> + Tonalità rosa labbra + </string> + <string name="Lip Ratio"> + Proporzione labbra + </string> + <string name="Lip Thickness"> + Carnosità labbra + </string> + <string name="Lip Width"> + Larghezza labbra + </string> + <string name="Lipgloss"> + Lipgloss + </string> + <string name="Lipstick"> + Rossetto + </string> + <string name="Lipstick Color"> + Colore rossetto + </string> + <string name="Long"> + Lungo + </string> + <string name="Long Head"> + Viso sporgente + </string> + <string name="Long Hips"> + Bacino alto + </string> + <string name="Long Legs"> + Gambe lunghe + </string> + <string name="Long Neck"> + Collo lungo + </string> + <string name="Long Pigtails"> + Ciuffi laterali lunghi + </string> + <string name="Long Ponytail"> + Codino lungo + </string> + <string name="Long Torso"> + Torace lungo + </string> + <string name="Long arms"> + Braccia lunghe + </string> + <string name="Longcuffs"> + Longcuffs + </string> + <string name="Loose Pants"> + Non attillati + </string> + <string name="Loose Shirt"> + Non attillata + </string> + <string name="Loose Sleeves"> + Maniche lente + </string> + <string name="Love Handles"> + Maniglie dell'amore + </string> + <string name="Low"> + Basso + </string> + <string name="Low Heels"> + Tacchi bassi + </string> + <string name="Low Jaw"> + Mandibola bassa + </string> + <string name="Low Platforms"> + Bassa + </string> + <string name="Low and Loose"> + Cavallo basso + </string> + <string name="Lower"> + Più basso + </string> + <string name="Lower Bridge"> + Parte bassa del setto + </string> + <string name="Lower Cheeks"> + Guance + </string> + <string name="Male"> + Maschio + </string> + <string name="Middle Part"> + Riga nel mezzo + </string> + <string name="More"> + Di più + </string> + <string name="More Blush"> + Più fard + </string> + <string name="More Body Fat"> + Più grasso + </string> + <string name="More Curtains"> + Più + </string> + <string name="More Eyeshadow"> + Più ombretto + </string> + <string name="More Freckles"> + Più lentiggini + </string> + <string name="More Full"> + Più piene + </string> + <string name="More Gravity"> + Più calato + </string> + <string name="More Lipstick"> + Più rossetto + </string> + <string name="More Love"> + Più maniglie + </string> + <string name="More Lower Lip"> + Labbro inf. pronunciato + </string> + <string name="More Muscles"> + Più muscoli + </string> + <string name="More Muscular"> + Più muscolatura + </string> + <string name="More Rosy"> + Più rosato + </string> + <string name="More Round"> + Più rotondo + </string> + <string name="More Saddle"> + Più a sella + </string> + <string name="More Sloped"> + Più orizzontale + </string> + <string name="More Square"> + Più quadrato + </string> + <string name="More Upper Lip"> + Labbro sup. pronunciato + </string> + <string name="More Vertical"> + Più verticale + </string> + <string name="More Volume"> + Più volume + </string> + <string name="More soul"> + Più + </string> + <string name="Moustache"> + Baffi + </string> + <string name="Mouth Corner"> + Angolo della bocca + </string> + <string name="Mouth Position"> + Posizione della bocca + </string> + <string name="Mowhawk"> + Vuoti + </string> + <string name="Muscular"> + Muscolatura + </string> + <string name="Mutton Chops"> + Basette lunghe + </string> + <string name="Nail Polish"> + Smalto + </string> + <string name="Nail Polish Color"> + Colore smalto + </string> + <string name="Narrow"> + Socchiusi + </string> + <string name="Narrow Back"> + Laterali post. vicini + </string> + <string name="Narrow Front"> + Laterali ant. vicini + </string> + <string name="Narrow Lips"> + Labbra strette + </string> + <string name="Natural"> + Naturale + </string> + <string name="Neck Length"> + Lunghezza del collo + </string> + <string name="Neck Thickness"> + Grandezza del collo + </string> + <string name="No Blush"> + Senza fard + </string> + <string name="No Eyeliner"> + Senza eyeliner + </string> + <string name="No Eyeshadow"> + Senza ombretto + </string> + <string name="No Heels"> + No Heels + </string> + <string name="No Lipgloss"> + Senza lipgloss + </string> + <string name="No Lipstick"> + Senza rossetto + </string> + <string name="No Part"> + Senza riga + </string> + <string name="No Polish"> + Senza smalto + </string> + <string name="No Red"> + Senza rosso + </string> + <string name="No Spikes"> + Senza punte + </string> + <string name="No White"> + Senza bianco + </string> + <string name="No Wrinkles"> + Senza pieghe + </string> + <string name="Normal Lower"> + Inferiore normale + </string> + <string name="Normal Upper"> + Superiore normale + </string> + <string name="Nose Left"> + Storto a sinistra + </string> + <string name="Nose Right"> + Storto a destra + </string> + <string name="Nose Size"> + Grandezza naso + </string> + <string name="Nose Thickness"> + Spessore naso + </string> + <string name="Nose Tip Angle"> + Angolo punta naso + </string> + <string name="Nose Tip Shape"> + Forma punta naso + </string> + <string name="Nose Width"> + Larghezza naso + </string> + <string name="Nostril Division"> + Divisione narici + </string> + <string name="Nostril Width"> + Larghezza narici + </string> + <string name="Old"> + Vecchio + </string> + <string name="Opaque"> + Opaco + </string> + <string name="Open"> + Aperto + </string> + <string name="Open Back"> + Retro aperto + </string> + <string name="Open Front"> + Aperto Frontale + </string> + <string name="Open Left"> + Lato sin. aperto + </string> + <string name="Open Right"> + Lato des. aperto + </string> + <string name="Orange"> + Arancio + </string> + <string name="Out"> + Fuori + </string> + <string name="Out Shdw Color"> + Colore ombretto esterno + </string> + <string name="Out Shdw Opacity"> + Opacità ombretto esterno + </string> + <string name="Outer Eye Corner"> + Angolo esterno occhio + </string> + <string name="Outer Eye Shadow"> + Ombretto esterno + </string> + <string name="Outer Shadow"> + Ombreggiatura esterna + </string> + <string name="Overbite"> + Denti sup. in fuori + </string> + <string name="Package"> + Genitali + </string> + <string name="Painted Nails"> + Unghie colorate + </string> + <string name="Pale"> + Pallido + </string> + <string name="Pants Crotch"> + Cavallo + </string> + <string name="Pants Fit"> + Vestibilità pantaloni + </string> + <string name="Pants Length"> + Lunghezza pantaloni + </string> + <string name="Pants Waist"> + Altezza slip + </string> + <string name="Pants Wrinkles"> + Pantaloni con le grinze + </string> + <string name="Part"> + Con riga + </string> + <string name="Part Bangs"> + Frangetta divisa + </string> + <string name="Pectorals"> + Pettorali + </string> + <string name="Pigment"> + Pigmento + </string> + <string name="Pigtails"> + Ciuffi + </string> + <string name="Pink"> + Rosa + </string> + <string name="Pinker"> + Più rosato + </string> + <string name="Platform Height"> + Altezza pianta + </string> + <string name="Platform Width"> + Larghezza pianta + </string> + <string name="Pointy"> + Appuntito + </string> + <string name="Pointy Heels"> + Tacchi a spillo + </string> + <string name="Pointy Toe"> + Punta appuntita + </string> + <string name="Ponytail"> + Codino + </string> + <string name="Poofy Skirt"> + Gonna gonfia + </string> + <string name="Pop Left Eye"> + Sinistro più aperto + </string> + <string name="Pop Right Eye"> + Destro più aperto + </string> + <string name="Puffy"> + Paffute + </string> + <string name="Puffy Eyelids"> + Palpebre gonfie + </string> + <string name="Rainbow Color"> + Tonalità + </string> + <string name="Red Hair"> + Presenza di rosso nei capelli + </string> + <string name="Red Skin"> + Red Skin + </string> + <string name="Regular"> + Normale + </string> + <string name="Regular Muscles"> + Muscolatura normale + </string> + <string name="Right Part"> + Riga a destra + </string> + <string name="Rosy Complexion"> + Incarnato + </string> + <string name="Round"> + Rotondo + </string> + <string name="Round Forehead"> + Round Forehead + </string> + <string name="Ruddiness"> + Rossore + </string> + <string name="Ruddy"> + Rosse + </string> + <string name="Rumpled Hair"> + Capelli mossi + </string> + <string name="Saddle Bags"> + Rotondità fianchi + </string> + <string name="Saddlebags"> + Rotondità fianchi + </string> + <string name="Scrawny"> + Scrawny + </string> + <string name="Scrawny Leg"> + Gambe magre + </string> + <string name="Separate"> + Separati + </string> + <string name="Shading"> + Shading + </string> + <string name="Shadow hair"> + Shadow hair + </string> + <string name="Shallow"> + Meno pronunciato + </string> + <string name="Shear Back"> + Accostamento posteriore + </string> + <string name="Shear Face"> + Distorsione viso + </string> + <string name="Shear Front"> + Riempimento davanti + </string> + <string name="Shear Left"> + A sinistra + </string> + <string name="Shear Left Up"> + Distorto a sinistra + </string> + <string name="Shear Right"> + A destra + </string> + <string name="Shear Right Up"> + Distorto a destra + </string> + <string name="Sheared Back"> + Accostati + </string> + <string name="Sheared Front"> + Anteriormente vuoto + </string> + <string name="Shift Left"> + A sinistra + </string> + <string name="Shift Mouth"> + Spostamento bocca + </string> + <string name="Shift Right"> + A destra + </string> + <string name="Shirt Bottom"> + Parte inferiore camicia + </string> + <string name="Shirt Fit"> + Vestibilità camicia + </string> + <string name="Shirt Wrinkles"> + Camicia con le grinze + </string> + <string name="Shoe Height"> + Altezza scarpe + </string> + <string name="Short"> + Basso + </string> + <string name="Short Arms"> + Braccia corte + </string> + <string name="Short Legs"> + Gambe corte + </string> + <string name="Short Neck"> + Collo corto + </string> + <string name="Short Pigtails"> + Ciuffi laterali corti + </string> + <string name="Short Ponytail"> + Codino Corto + </string> + <string name="Short Sideburns"> + Basette corte + </string> + <string name="Short Torso"> + Torace corto + </string> + <string name="Short hips"> + Bacino corto + </string> + <string name="Shoulders"> + Spalle + </string> + <string name="Side Bangs"> + Side Bangs + </string> + <string name="Side Bangs Down"> + Side Bangs Down + </string> + <string name="Side Bangs Up"> + Side Bangs Up + </string> + <string name="Side Fringe"> + Ciuffi laterali + </string> + <string name="Sideburns"> + Basette + </string> + <string name="Sides Hair"> + Capigliatura later. + </string> + <string name="Sides Hair Down"> + Giù + </string> + <string name="Sides Hair Up"> + Su + </string> + <string name="Skinny"> + Skinny + </string> + <string name="Skinny Neck"> + Collo fino + </string> + <string name="Skirt Fit"> + Vestibilità gonna + </string> + <string name="Skirt Length"> + Lunghezza gonna + </string> + <string name="Slanted Forehead"> + Fronte inclinata + </string> + <string name="Sleeve Length"> + Lunghezza maniche + </string> + <string name="Sleeve Looseness"> + Morbidezza maniche + </string> + <string name="Slit Back"> + Spacco: posteriore + </string> + <string name="Slit Front"> + Spacco: anteriore + </string> + <string name="Slit Left"> + Spacco: sinistro + </string> + <string name="Slit Right"> + Spacco: destro + </string> + <string name="Small"> + Piccolo + </string> + <string name="Small Hands"> + Mani piccole + </string> + <string name="Small Head"> + Testa piccola + </string> + <string name="Smooth"> + Liscio + </string> + <string name="Smooth Hair"> + Capelli lisci + </string> + <string name="Socks Length"> + Lunghezza calze + </string> + <string name="Some"> + Some + </string> + <string name="Soulpatch"> + Pizzetto labbro inferiore + </string> + <string name="Sparse"> + Piu rade + </string> + <string name="Spiked Hair"> + Capelli a punta + </string> + <string name="Square"> + Quadrato + </string> + <string name="Square Toe"> + Punta quadrata + </string> + <string name="Squash Head"> + Testa schiacciata + </string> + <string name="Squash/Stretch Head"> + Testa Schiacciata/Allungata + </string> + <string name="Stretch Head"> + Testa allungata + </string> + <string name="Sunken"> + Scarne + </string> + <string name="Sunken Chest"> + Senza pettorali + </string> + <string name="Sunken Eyes"> + Occhi infossati + </string> + <string name="Sweep Back"> + Indietro + </string> + <string name="Sweep Forward"> + Avanti + </string> + <string name="Swept Back"> + Swept Back + </string> + <string name="Swept Back Hair"> + Swept Back Hair + </string> + <string name="Swept Forward"> + Swept Forward + </string> + <string name="Swept Forward Hair"> + Swept Forward Hair + </string> + <string name="Tall"> + Alto + </string> + <string name="Taper Back"> + Ravv. lat. posteriore + </string> + <string name="Taper Front"> + Ravv. lat. frontale + </string> + <string name="Thick Heels"> + Tacchi spessi + </string> + <string name="Thick Neck"> + Collo grosso + </string> + <string name="Thick Toe"> + Punta spessa + </string> + <string name="Thickness"> + Thickness + </string> + <string name="Thin"> + Ossute + </string> + <string name="Thin Eyebrows"> + Sopracciglia fini + </string> + <string name="Thin Lips"> + Labbra fini + </string> + <string name="Thin Nose"> + Naso fino + </string> + <string name="Tight Chin"> + Mento magro + </string> + <string name="Tight Cuffs"> + Fondo stretto + </string> + <string name="Tight Pants"> + Attillati + </string> + <string name="Tight Shirt"> + Attilata + </string> + <string name="Tight Skirt"> + Attillata + </string> + <string name="Tight Sleeves"> + Attillate + </string> + <string name="Tilt Left"> + Tilt Left + </string> + <string name="Tilt Right"> + Tilt Right + </string> + <string name="Toe Shape"> + Forma della punta + </string> + <string name="Toe Thickness"> + Spessore della punta + </string> + <string name="Torso Length"> + Lunghezza del torace + </string> + <string name="Torso Muscles"> + Muscoli del torace + </string> + <string name="Torso Scrawny"> + Torso Scrawny + </string> + <string name="Unattached"> + Distaccato + </string> + <string name="Uncreased"> + Abbassato + </string> + <string name="Underbite"> + Denti inf. in fuori + </string> + <string name="Unnatural"> + Innaturale + </string> + <string name="Upper Bridge"> + Parte alta del setto + </string> + <string name="Upper Cheeks"> + Parte alta degli zigomi + </string> + <string name="Upper Chin Cleft"> + Fessura sup. del mento + </string> + <string name="Upper Eyelid Fold"> + Piega palpebra sup. + </string> + <string name="Upturned"> + Naso all'insù + </string> + <string name="Very Red"> + Molto rossi + </string> + <string name="Waist Height"> + Vita alta + </string> + <string name="Well-Fed"> + Pienotte + </string> + <string name="White Hair"> + Capelli bianchi + </string> + <string name="Wide"> + Spalancati + </string> + <string name="Wide Back"> + Laterali post. larghi + </string> + <string name="Wide Front"> + Laterali ant. larghi + </string> + <string name="Wide Lips"> + Labbra larghe + </string> + <string name="Wild"> + Colorati + </string> + <string name="Wrinkles"> + Grinze + </string> + <string name="LocationCtrlAddLandmarkTooltip"> + Aggiungi ai miei landmark + </string> + <string name="LocationCtrlEditLandmarkTooltip"> + Modifica i miei landmark + </string> + <string name="LocationCtrlInfoBtnTooltip"> + maggiori informazioni sulla posizione attuale + </string> + <string name="LocationCtrlComboBtnTooltip"> + Lo storico delle mie posizioni + </string> + <string name="UpdaterWindowTitle"> + Aggiornamento [APP_NAME] + </string> + <string name="UpdaterNowUpdating"> + [APP_NAME] In aggiornamento... + </string> + <string name="UpdaterNowInstalling"> + [APP_NAME] In installazione... + </string> + <string name="UpdaterUpdatingDescriptive"> + Il Viewer del programma [APP_NAME] si sta aggiornando all'ultima versione. Potrebbe volerci del tempo, attendi. + </string> + <string name="UpdaterProgressBarTextWithEllipses"> + Aggiornamento in download... + </string> + <string name="UpdaterProgressBarText"> + Download dell'aggiornamento + </string> + <string name="UpdaterFailDownloadTitle"> + Download dell'aggiornamento non riuscito + </string> + <string name="UpdaterFailUpdateDescriptive"> + Il programma [APP_NAME] ha riscontrato un'errore nel tentativo di aggiornamento. Consigliamo di scaricare l'ultima versione direttamente da www.secondlife.com. + </string> + <string name="UpdaterFailInstallTitle"> + Tentativo di installazione aggiornamento non riuscito + </string> + <string name="UpdaterFailStartTitle"> + Errore nell'apertura del viewer + </string> + <string name="IM_logging_string"> + -- Registrazione messaggi instantanei abilitata -- + </string> + <string name="IM_typing_start_string"> + [NAME] sta scrivendo... + </string> + <string name="Unnamed"> + (anonimo) + </string> + <string name="IM_moderated_chat_label"> + (Moderato: Voice spento di default) + </string> + <string name="IM_unavailable_text_label"> + La chat di testo non è disponibile per questa chiamata. + </string> + <string name="IM_muted_text_label"> + La chat di testo è stata disabilitata da un moderatore di gruppo. + </string> + <string name="IM_default_text_label"> + Clicca qua per inviare un messaggio instantaneo. + </string> + <string name="IM_to_label"> + A + </string> + <string name="IM_moderator_label"> + (Moderatore) </string> - <string name="ScriptQuestionCautionChatGranted"> - A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS]. - </string> - <string name="ScriptQuestionCautionChatDenied"> - A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS]. - </string> - <string name="ScriptTakeMoney"> - Prendere dollari Linden (L$) da te - </string> - <string name="ActOnControlInputs"> - Agire sul tuo controllo degli input - </string> - <string name="RemapControlInputs"> - Rimappare il tuo controllo degli input - </string> - <string name="AnimateYourAvatar"> - Animare il tuo avatar - </string> - <string name="AttachToYourAvatar"> - Far indossare al tuo avatar - </string> - <string name="ReleaseOwnership"> - Rilasciare la propietà è far diventare pubblico. - </string> - <string name="LinkAndDelink"> - Collegare e scollegare dagli altri oggetti - </string> - <string name="AddAndRemoveJoints"> - Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti - </string> - <string name="ChangePermissions"> - Cambiare i permessi - </string> - <string name="TrackYourCamera"> - Tracciare la fotocamera - </string> - <string name="ControlYourCamera"> - Controllare la tua fotocamera - </string> <string name="only_user_message"> Sei l'unico utente di questa sessione. </string> @@ -622,31 +3253,4 @@ <string name="close_on_no_ability"> Non hai più le abilitazioni per rimanere nella sessione chat. </string> - <string name="AcctTypeResident"> - Residente - </string> - <string name="AcctTypeTrial"> - Prova - </string> - <string name="AcctTypeCharterMember"> - Membro privilegiato - </string> - <string name="AcctTypeEmployee"> - Impiegato della Linden Lab - </string> - <string name="PaymentInfoUsed"> - Info. di pagamento usate - </string> - <string name="PaymentInfoOnFile"> - Info. di pagamento in archivio - </string> - <string name="NoPaymentInfoOnFile"> - Nessuna info. di pagamento - </string> - <string name="AgeVerified"> - Età verificata - </string> - <string name="NotAgeVerified"> - Età non verificata - </string> </strings> diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml index 57e81bc41e8..eff7516050b 100644 --- a/indra/newview/skins/default/xui/it/teleport_strings.xml +++ b/indra/newview/skins/default/xui/it/teleport_strings.xml @@ -2,12 +2,12 @@ <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> - C'è stato un problema nell'elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: -www.secondlife.com/support + C'è stato un problema nell'elaborare la tua richiesta di teleport. Potresti aver bisogno di ricollegarti prima di poter usare il teleport. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: +www.secondlife.com/support. </message> <message name="invalid_region_handoff"> C'è stato un problema nell'elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: -www.secondlife.com/support +www.secondlife.com/support. </message> <message name="blocked_tport"> Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index f59630edc70..29a5aca90d7 100755 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -1,20 +1,60 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="O [CAPITALIZED_APP_NAME]"> -<tab_container name="about_tab"> - <panel name="credits_panel"> - <text_editor name="credits_editor"> - Second Life zostaÅ‚o stworzone dla Was przez: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl i wielu innych. + <floater.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]] + </floater.string> + <floater.string name="AboutCompiler"> + Buduj z [COMPILER] wersjÄ… [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Znajdujesz siÄ™ na pozycji [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] w [REGION] zlokalizowanym w [HOSTNAME] ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + Procesor: [CPU] +Pamięć: [MEMORY_MB] MB +Wersja OS: [OS_VERSION] +Graphics Card Vendor: [GRAPHICS_CARD_VENDOR] +Karta Graficzna: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Windows Sterownik Karty Graficznej: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + Wersja OpenGL: [OPENGL_VERSION] + +Wersja libcurl: [LIBCURL_VERSION] +Wersja Dekodera J2C: [J2C_VERSION] +Wersja Sterownika Audio: [AUDIO_DRIVER_VERSION] +Wersja Qt Webkit: [QT_WEBKIT_VERSION] +Wersja Vivox: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (żadne) + </floater.string> + <floater.string name="AboutTraffic"> + Stracone Pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </floater.string> + <tab_container name="about_tab"> + <panel label="Info" name="support_panel"> + <button label="Kopiuj do Schowka" name="copy_btn"/> + </panel> + <panel label="PodziÄ™kowania" name="credits_panel"> + <text_editor name="credits_editor"> + Second Life zostaÅ‚o stworzone dla Was przez: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl i wielu innych. PodziÄ™kowania dla nastÄ™pujÄ…cych rezydentów za pomoc w pracy nad obecnÄ… wersjÄ… Second Life: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar I get by with a little help from my friends. --Richard Starkey - </text_editor> - </panel> - <panel name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion + </text_editor> + </panel> + <panel label="Licencje" name="licenses_panel"> + <text_editor name="credits_editor"> + 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion APR Copyright (C) 2000-2004 The Apache Software Foundation cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. @@ -34,10 +74,7 @@ Wszystkie prawa zastrzeżone. Szczegóły w pliku licenses.txt. Programowanie dźwiÄ™ku czatu: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> - </panel> -</tab_container> - <string name="you_are_at"> - PoÅ‚ożenie: [POSITION] - </string> + </text_editor> + </panel> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml index dd30f749e30..8055617371b 100755 --- a/indra/newview/skins/default/xui/pl/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_mute_object.xml @@ -1,13 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="mute by name" title="WYCISZ OBIEKT WEDÅUG NAZWY" height="160" min_height="160" > +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater height="160" min_height="160" name="mute by name" title="ZABLOKUJ OBIEKT WEDÅUG NAZWY"> <text name="message"> - Wyciszenie obiektu jest skuteczne jedynie na czacie oraz w -wiadomoÅ›ciach IM. Nie obejmuje natomiast dźwiÄ™ków. -By wyciszyć obiekt musisz wpisać dokÅ‚adnie jego nazwÄ™. + Zablokuj obiekt: </text> - <line_editor name="object_name" bottom_delta="-60"> + <line_editor bottom_delta="-60" name="object_name"> Nazwa Obiektu </line_editor> - <button label="Ok" name="OK" /> - <button label="Anuluj" name="Cancel" /> + <text name="note"> + * Zablokuj jedynie tekst obiektu, bez dźwiÄ™ku + </text> + <button label="Ok" name="OK"/> + <button label="Anuluj" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml index c1efcffb1e3..18ce1b230f4 100755 --- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="RAPORT O NADUÅ»YCIU"> - <texture_picker label="" name="screenshot"/> - <check_box label="Załącz zdjÄ™cie ekranu" name="screen_check"/> + <floater.string name="Screenshot"> + ZdjÄ™cie Ekranu + </floater.string> + <check_box label="Załącz zdjÄ™cie do raportu" name="screen_check"/> <text name="reporter_title"> Reporter: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Region: @@ -21,11 +23,11 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Kliknij na przycisk, a później na obiekt: + Wybierz ten przycisk a nastÄ™pnie obiekt, który zgÅ‚aszasz do raportu: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Wybór obiektu - wybierz obiekt, którego dotyczy raport"/> <text name="object_name_label"> - Nazwa: + Nazwa Obiektu: </text> <text name="object_name"> Consetetur Sadipscing @@ -34,48 +36,48 @@ WÅ‚aÅ›ciciel: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> <combo_box name="category_combo" tool_tip="Wybór kategorii - wybierz kategoriÄ™, której dotyczy raport"> - <combo_box.item name="Select_category" label="Wybierz KategoriÄ™:"/> - <combo_box.item name="Age__Age_play" label="Wiek > Udawanie Nieletniej Osoby"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Wiek > DorosÅ‚y Rezydent w Teen Second Life"/> - <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Wiek > Nieletni Rezydent poza Teen Second Life"/> - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Napaść > Strefa Militarna / Niebezpieczny Obszar"/> - <combo_box.item name="Assault__Safe_area" label="Napaść > Bezpieczny Obszar"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Napaść > Obszar do Testowania Broni"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Handel > Niedostarczenie Produktu lub UsÅ‚ugi"/> - <combo_box.item name="Disclosure__Real_world_information" label="Naruszenie PrywatnoÅ›ci > Dane Osobiste"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Ujawnienie > Monitorowanie Czatu"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Ujawnienie > Dane z Second Life / Czatu / IM"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Zakłócanie Spokoju > Nieuczciwe Używanie Zasobów Regionu"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Zakłócanie Spokoju > Przesadnie Skryptowane Obiekty"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Zakłócanie Spokoju > Åšmiecenie Obiektami"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Zakłócanie Spokoju > CiÄ…gÅ‚y Spam"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Zakłócanie Spokoju > NieporzÄ…dany Spam Reklamowy"/> - <combo_box.item name="Fraud__L$" label="Oszustwo > L$"/> - <combo_box.item name="Fraud__Land" label="Oszustwo > PosiadÅ‚oÅ›ci"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Oszustwo > Piramidy albo Listy ÅaÅ„cuchowe"/> - <combo_box.item name="Fraud__US$" label="Oszustwo > US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="PrzeÅ›ladowanie > Farmy Reklamowe / Wizualny Spam"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="PrzeÅ›ladowanie > ZniesÅ‚awianie Jedostek lub Grup"/> - <combo_box.item name="Harassment__Impeding_movement" label="PrzeÅ›ladowanie > Ograniczanie Ruchu"/> - <combo_box.item name="Harassment__Sexual_harassment" label="PrzeÅ›ladowanie > Molestowanie Seksualne"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="PrzeÅ›ladowanie > Namawianie/ZachÄ™canie Innych do Åamania Warunków Umowy (ToS)"/> - <combo_box.item name="Harassment__Verbal_abuse" label="PrzeÅ›ladowanie > Znieważanie SÅ‚owne"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Nieprzyzwoitość > Obraźliwa Treść lub PostÄ™powanie"/> - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Nieprzyzwoitość > Niestosowne ImiÄ™ Awatara"/> - <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'PG'"/> - <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'Mature'"/> - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > UsuniÄ™cie TreÅ›ci"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > CopyBot albo Nadużycie Przywilejów"/> - <combo_box.item name="Intolerance" label="Nietolerancja"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="PosiadÅ‚oÅ›ci > Nadużywanie Piaskownicy"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="PosiadÅ‚oÅ›ci > Naruszenie > Obiekty/Tekstury"/> - <combo_box.item name="Land__Encroachment__Particles" label="PosiadÅ‚oÅ›ci > Naruszenie > CzÄ…steczki"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="PosiadÅ‚oÅ›ci > Naruszenie > Drzewa/RoÅ›liny"/> - <combo_box.item name="Wagering_gambling" label="ZakÅ‚ady/Hazard"/> - <combo_box.item name="Other" label="Inne"/> + <combo_box.item label="Wybierz KategoriÄ™:" name="Select_category"/> + <combo_box.item label="Wiek > Udawanie Nieletniej Osoby" name="Age__Age_play"/> + <combo_box.item label="Wiek > DorosÅ‚y Rezydent w Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Wiek > Nieletni Rezydent poza Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Napaść > Strefa Militarna / Niebezpieczny Obszar" name="Assault__Combat_sandbox___unsafe_area"/> + <combo_box.item label="Napaść > Bezpieczny Obszar" name="Assault__Safe_area"/> + <combo_box.item label="Napaść > Obszar do Testowania Broni" name="Assault__Weapons_testing_sandbox"/> + <combo_box.item label="Handel > Niedostarczenie Produktu lub UsÅ‚ugi" name="Commerce__Failure_to_deliver_product_or_service"/> + <combo_box.item label="Naruszenie PrywatnoÅ›ci > Dane Osobiste" name="Disclosure__Real_world_information"/> + <combo_box.item label="Ujawnienie > Monitorowanie Czatu" name="Disclosure__Remotely_monitoring chat"/> + <combo_box.item label="Ujawnienie > Dane z Second Life / Czatu / IM" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="Zakłócanie Spokoju > Nieuczciwe Używanie Zasobów Regionu" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> + <combo_box.item label="Zakłócanie Spokoju > Przesadnie Skryptowane Obiekty" name="Disturbing_the_peace__Excessive_scripted_objects"/> + <combo_box.item label="Zakłócanie Spokoju > Åšmiecenie Obiektami" name="Disturbing_the_peace__Object_littering"/> + <combo_box.item label="Zakłócanie Spokoju > CiÄ…gÅ‚y Spam" name="Disturbing_the_peace__Repetitive_spam"/> + <combo_box.item label="Zakłócanie Spokoju > NieporzÄ…dany Spam Reklamowy" name="Disturbing_the_peace__Unwanted_advert_spam"/> + <combo_box.item label="Oszustwo > L$" name="Fraud__L$"/> + <combo_box.item label="Oszustwo > PosiadÅ‚oÅ›ci" name="Fraud__Land"/> + <combo_box.item label="Oszustwo > Piramidy albo Listy ÅaÅ„cuchowe" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="Oszustwo > US$" name="Fraud__US$"/> + <combo_box.item label="PrzeÅ›ladowanie > Farmy Reklamowe / Wizualny Spam" name="Harassment__Advert_farms___visual_spam"/> + <combo_box.item label="PrzeÅ›ladowanie > ZniesÅ‚awianie Jedostek lub Grup" name="Harassment__Defaming_individuals_or_groups"/> + <combo_box.item label="PrzeÅ›ladowanie > Ograniczanie Ruchu" name="Harassment__Impeding_movement"/> + <combo_box.item label="PrzeÅ›ladowanie > Molestowanie Seksualne" name="Harassment__Sexual_harassment"/> + <combo_box.item label="PrzeÅ›ladowanie > Namawianie/ZachÄ™canie Innych do Åamania Warunków Umowy (ToS)" name="Harassment__Solicting_inciting_others_to_violate_ToS"/> + <combo_box.item label="PrzeÅ›ladowanie > Znieważanie SÅ‚owne" name="Harassment__Verbal_abuse"/> + <combo_box.item label="Nieprzyzwoitość > Obraźliwa Treść lub PostÄ™powanie" name="Indecency__Broadly_offensive_content_or_conduct"/> + <combo_box.item label="Nieprzyzwoitość > Niestosowne ImiÄ™ Awatara" name="Indecency__Inappropriate_avatar_name"/> + <combo_box.item label="Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'PG'" name="Indecency__Mature_content_in_PG_region"/> + <combo_box.item label="Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'Mature'" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > UsuniÄ™cie TreÅ›ci" name="Intellectual_property_infringement_Content_Removal"/> + <combo_box.item label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > CopyBot albo Nadużycie Przywilejów" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> + <combo_box.item label="Nietolerancja" name="Intolerance"/> + <combo_box.item label="PosiadÅ‚oÅ›ci > Nadużywanie Piaskownicy" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="PosiadÅ‚oÅ›ci > Naruszenie > Obiekty/Tekstury" name="Land__Encroachment__Objects_textures"/> + <combo_box.item label="PosiadÅ‚oÅ›ci > Naruszenie > CzÄ…steczki" name="Land__Encroachment__Particles"/> + <combo_box.item label="PosiadÅ‚oÅ›ci > Naruszenie > Drzewa/RoÅ›liny" name="Land__Encroachment__Trees_plants"/> + <combo_box.item label="ZakÅ‚ady/Hazard" name="Wagering_gambling"/> + <combo_box.item label="Inne" name="Other"/> </combo_box> <text name="abuser_name_title"> Dane osobowe: @@ -94,13 +96,12 @@ Szczegóły: </text> <text name="bug_aviso"> - Podaj datÄ™, miejsce, kategoriÄ™ nadużycia, fragmenty -czatu/IM, dane obiektów. + Podaj jak najwiÄ™cej możliwych szczegółów dotyczÄ…cych nadużycia </text> <text_editor name="details_edit"/> <text name="incomplete_title"> - PamiÄ™taj: NiedokoÅ„czone raporty nie bÄ™dÄ… rozpatrywane! + * PamiÄ™taj: NiedokoÅ„czone raporty nie bÄ™dÄ… rozpatrywane </text> - <button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/> <button label="WyÅ›lij" label_selected="WyÅ›lij" name="send_btn"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml new file mode 100644 index 00000000000..acd3df0585f --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_stats.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Statistics" title="STATYSTYKI"> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Podstawowe" name="basic"> + <stat_bar label="Ilość Obrazów/Sec (FPS)" name="fps"/> + <stat_bar label="Przepustowość" name="bandwidth"/> + <stat_bar label="Stracone Pakiety" name="packet_loss"/> + <stat_bar label="Ping Sim" name="ping"/> + </stat_view> + <stat_view label="Zaawansowane" name="advanced"> + <stat_view label="Renderuj" name="render"> + <stat_bar label="KTris Drawn" name="ktrisframe"/> + <stat_bar label="KTris Drawn" name="ktrissec"/> + <stat_bar label="Wszystkie Obiekty" name="objs"/> + <stat_bar label="Nowe Obiekty" name="newobjs"/> + </stat_view> + <stat_view label="Tekstura" name="texture"> + <stat_bar label="Suma" name="numimagesstat"/> + <stat_bar label="Suma Raw" name="numrawimagesstat"/> + <stat_bar label="GL Mem" name="gltexmemstat"/> + <stat_bar label="Sformatowane Mem" name="formattedmemstat"/> + <stat_bar label="Raw Mem" name="rawmemstat"/> + <stat_bar label="Bound Mem" name="glboundmemstat"/> + </stat_view> + <stat_view label="Sieć" name="network"> + <stat_bar label="Pakiety WewnÄ™trzne" name="packetsinstat"/> + <stat_bar label="Pakiety ZewnÄ™trzne" name="packetsoutstat"/> + <stat_bar label="Obiekty" name="objectkbitstat"/> + <stat_bar label="Tesktura" name="texturekbitstat"/> + <stat_bar label="Asset" name="assetkbitstat"/> + <stat_bar label="PodkÅ‚ad" name="layerskbitstat"/> + <stat_bar label="Aktualna Ilość WewnÄ™trzna" name="actualinkbitstat"/> + <stat_bar label="Aktualna Ilość ZewnÄ™trzna" name="actualoutkbitstat"/> + <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Symulator" name="sim"> + <stat_bar label="Czas Rozszerzenia" name="simtimedilation"/> + <stat_bar label="Ilość Obrazów/Sec na Symulatorze (Sim FPS)" name="simfps"/> + <stat_bar label="Fizyka Obrazów/Sec" name="simphysicsfps"/> + <stat_view label="Szczegóły Fizyki" name="physicsdetail"> + <stat_bar label="Pinned Objects" name="physicspinnedtasks"/> + <stat_bar label="Niskie LOD Obiektów" name="physicslodtasks"/> + <stat_bar label="Alokacja PamiÄ™ci" name="physicsmemoryallocated"/> + <stat_bar label="Aktualizacja Agentów/Sec" name="simagentups"/> + <stat_bar label="Główni Agenci" name="simmainagents"/> + <stat_bar label="Child Agents" name="simchildagents"/> + <stat_bar label="Obiekty" name="simobjects"/> + <stat_bar label="Aktywne Obiekty" name="simactiveobjects"/> + <stat_bar label="Aktywne Skrypty" name="simactivescripts"/> + <stat_bar label="Wydarzenie Skryptowe" name="simscripteps"/> + <stat_bar label="Pakiety WewnÄ™trzne" name="siminpps"/> + <stat_bar label="Pakiety ZewnÄ™trzne" name="simoutpps"/> + <stat_bar label="Oczekiwane na Pobranie" name="simpendingdownloads"/> + <stat_bar label="Oczekiwane na ZaÅ‚adowanie" name="simpendinguploads"/> + <stat_bar label="Wszystkie Niepotwierdzone Bity" name="simtotalunackedbytes"/> + </stat_view> + <stat_view label="Czas (ms)" name="simperf"> + <stat_bar label="CaÅ‚kowity Czas Obrazu" name="simframemsec"/> + <stat_bar label="Czas Sieciowy" name="simnetmsec"/> + <stat_bar label="Czas Fizyki" name="simsimphysicsmsec"/> + <stat_bar label="Czas Symulatora" name="simsimothermsec"/> + <stat_bar label="Czas Agenta" name="simagentmsec"/> + <stat_bar label="Czas Obrazu" name="simimagesmsec"/> + <stat_bar label="Czas Skryptu" name="simscriptmsec"/> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml new file mode 100644 index 00000000000..4872956cc28 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Zobacz Profil" name="Profile..."/> + <menu_item_call label="Dodaj Znajomość" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="ZadzwoÅ„" name="Call"/> + <menu_item_call label="ZaproÅ› do Grupy" name="Invite..."/> + <menu_item_call label="Zablokuj" name="Avatar Mute"/> + <menu_item_call label="Raport" name="abuse"/> + <menu_item_call label="Unieruchom" name="Freeze..."/> + <menu_item_call label="Wyrzuć" name="Eject..."/> + <menu_item_call label="Debugowanie" name="Debug..."/> + <menu_item_call label="Przybliż" name="Zoom In"/> + <menu_item_call label="ZapÅ‚ać" name="Pay..."/> + <menu_item_call label="Sprawdź" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml new file mode 100644 index 00000000000..1107a5d9d1c --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Dotnij" name="Attachment Object Touch"/> + <menu_item_call label="Edytuj" name="Edit..."/> + <menu_item_call label="Odłącz" name="Detach"/> + <menu_item_call label="Opuść" name="Drop"/> + <menu_item_call label="WstaÅ„" name="Stand Up"/> + <menu_item_call label="Mój WyglÄ…d" name="Appearance..."/> + <menu_item_call label="Moi Znajomi" name="Friends..."/> + <menu_item_call label="Moje Grupy" name="Groups..."/> + <menu_item_call label="Mój Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml new file mode 100644 index 00000000000..c9ad275a267 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Avatar Icon Menu"> + <menu_item_call label="Profil" name="Show Profile"/> + <menu_item_call label="Czat/IM..." name="Send IM"/> + <menu_item_call label="Dodaj Znajomość..." name="Add Friend"/> + <menu_item_call label="UsuÅ„..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml new file mode 100644 index 00000000000..832c2f9c96e --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Zobacz Profil" name="Profile..."/> + <menu_item_call label="Dodaj Znajomość" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="ZadzwoÅ„" name="Call"/> + <menu_item_call label="ZaproÅ› do Grupy" name="Invite..."/> + <menu_item_call label="Zablokuj" name="Avatar Mute"/> + <menu_item_call label="Raport" name="abuse"/> + <menu_item_call label="Unieruchom" name="Freeze..."/> + <menu_item_call label="Wyrzuć" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Przybliż" name="Zoom In"/> + <menu_item_call label="ZapÅ‚ać" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml new file mode 100644 index 00000000000..427c0d464ba --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="WstaÅ„" name="Stand Up"/> + <context_menu label="Zdejmij >" name="Take Off >"> + <context_menu label="Ubranie >" name="Clothes >"> + <menu_item_call label="KoszulkÄ™" name="Shirt"/> + <menu_item_call label="Spodnie" name="Pants"/> + <menu_item_call label="SpódnicÄ™" name="Skirt"/> + <menu_item_call label="Buty" name="Shoes"/> + <menu_item_call label="Skarpetki" name="Socks"/> + <menu_item_call label="KurtkÄ™" name="Jacket"/> + <menu_item_call label="RÄ™kawiczki" name="Gloves"/> + <menu_item_call label="Podkoszulek" name="Self Undershirt"/> + <menu_item_call label="BieliznÄ™" name="Self Underpants"/> + <menu_item_call label="Tatuaż" name="Self Tattoo"/> + <menu_item_call label="Ubranie Przezroczyste" name="Self Alpha"/> + <menu_item_call label="Wszystko" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Odłącz >" name="Object Detach"/> + <menu_item_call label="Odłącz Wszystko" name="Detach All"/> + </context_menu> + <menu_item_call label="Mój WyglÄ…d" name="Appearance..."/> + <menu_item_call label="Moi Znajomi" name="Friends..."/> + <menu_item_call label="Moje Grupy" name="Groups..."/> + <menu_item_call label="Mój Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml new file mode 100644 index 00000000000..818dfc08aeb --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_camera_move_controls_menu"> + <menu_item_check label="Przycisk Gesturek" name="ShowGestureButton"/> + <menu_item_check label="Przycisk Ruchu" name="ShowMoveButton"/> + <menu_item_check label="Przycisk Widoku" name="ShowCameraButton"/> + <menu_item_check label="Przycisk Zdjęć" name="ShowSnapshotButton"/> + <menu_item_call label="Wytnij" name="NearbyChatBar_Cut"/> + <menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/> + <menu_item_call label="Wklej" name="NearbyChatBar_Paste"/> + <menu_item_call label="UsuÅ„" name="NearbyChatBar_Delete"/> + <menu_item_call label="Zaznacz Wszystko" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml new file mode 100644 index 00000000000..0a0b54a5481 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teleportuj" name="Teleport To Landmark"/> + <menu_item_call label="Zobacz/Edytuj Ulubione Miejsce" name="Landmark Open"/> + <menu_item_call label="Kopiuj SLurl" name="Copy slurl"/> + <menu_item_call label="Pokaż na Mapie" name="Show On Map"/> + <menu_item_call label="Kopiuj" name="Landmark Copy"/> + <menu_item_call label="Wklej" name="Landmark Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml new file mode 100644 index 00000000000..a72dec22fc1 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gesture_gear"> + <menu_item_call label="Dodaj/UsuÅ„ z Ulubionych" name="activate"/> + <menu_item_call label="Kopiuj" name="copy_gesture"/> + <menu_item_call label="Wklej" name="paste"/> + <menu_item_call label="Kopiuj UUID" name="copy_uuid"/> + <menu_item_call label="Zapisz do obecnego zestawu ubrania" name="save_to_outfit"/> + <menu_item_call label="Edytuj" name="edit_gesture"/> + <menu_item_call label="Sprawdź" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_group_plus.xml b/indra/newview/skins/default/xui/pl/menu_group_plus.xml new file mode 100644 index 00000000000..9d3859081e7 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_group_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Dołącz do Grupy..." name="item_join"/> + <menu_item_call label="Nowa Grupa..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml new file mode 100644 index 00000000000..1c2687338d3 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_navbar_menu"> + <menu_item_check label="Pokaż Pasek Nawigacji" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Pokaż Pasek Ulubionych" name="ShowNavbarFavoritesPanel"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml new file mode 100644 index 00000000000..925272d5ee0 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="ZakoÅ„cz RozmowÄ™" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml new file mode 100644 index 00000000000..dc232c096d1 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet Group Menu"> + <menu_item_call label="O Grupie" name="Show Profile"/> + <menu_item_call label="Pokaż SesjÄ™" name="Chat"/> + <menu_item_call label="ZakoÅ„cz RozmowÄ™" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml new file mode 100644 index 00000000000..df991cbc36f --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet P2P Menu"> + <menu_item_call label="Zobacz Profil" name="Show Profile"/> + <menu_item_call label="Dodaj Znajomość" name="Add Friend"/> + <menu_item_call label="Pokaż SesjÄ™" name="Send IM"/> + <menu_item_call label="ZakoÅ„cz RozmowÄ™" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml new file mode 100644 index 00000000000..22d81cb8234 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Zobacz Profil" name="view_profile"/> + <menu_item_call label="Dodaj Znajomość" name="add_friend"/> + <menu_item_call label="IM" name="im"/> + <menu_item_call label="ZadzwoÅ„" name="call"/> + <menu_item_call label="Teleportuj" name="teleport"/> + <menu_item_call label="ZaproÅ› do Grupy" name="invite_to_group"/> + <menu_item_call label="Zablokuj" name="block"/> + <menu_item_call label="Raport" name="report"/> + <menu_item_call label="Unieruchom" name="freeze"/> + <menu_item_call label="Wyrzuć" name="eject"/> + <menu_item_call label="Debug" name="debug"/> + <menu_item_call label="Znajdź na Mapie" name="find_on_map"/> + <menu_item_call label="Przybliż" name="zoom_in"/> + <menu_item_call label="ZapÅ‚ać" name="pay"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml new file mode 100644 index 00000000000..988c31a6e49 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Dotknij" name="touch"/> + <menu_item_call label="UsiÄ…dź" name="sit"/> + <menu_item_call label="ZapÅ‚ać" name="pay"/> + <menu_item_call label="Kup" name="buy"/> + <menu_item_call label="Weź" name="take"/> + <menu_item_call label="Weź KopiÄ™" name="take_copy"/> + <menu_item_call label="Otwórz" name="open"/> + <menu_item_call label="Edytuj" name="edit"/> + <menu_item_call label="Ubierz" name="wear"/> + <menu_item_call label="Raport" name="report"/> + <menu_item_call label="Zablokuj" name="block"/> + <menu_item_call label="Przybliż" name="zoom_in"/> + <menu_item_call label="UsuÅ„" name="remove"/> + <menu_item_call label="WiÄ™cej Informacji" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml new file mode 100644 index 00000000000..ee2f202ee95 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="WstaÅ„" name="stand_up"/> + <menu_item_call label="Mój WyglÄ…d" name="my_appearance"/> + <menu_item_call label="Mój Profil" name="my_profile"/> + <menu_item_call label="Moi Znajomi" name="my_friends"/> + <menu_item_call label="Moje Grupy" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml index 7f89f783248..75c84c275db 100755 --- a/indra/newview/skins/default/xui/pl/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml @@ -12,7 +12,7 @@ <menu_item_call label="Nowy Skrypt" name="New Script"/> <menu_item_call label="Nowa Nota" name="New Note"/> <menu_item_call label="Nowy Gest" name="New Gesture"/> - <menu name="New Clothes"> + <menu label="Nowe Ubranie" name="New Clothes"> <menu_item_call label="Nowa Koszulka" name="New Shirt"/> <menu_item_call label="Nowe Spodnie" name="New Pants"/> <menu_item_call label="Nowe Buty" name="New Shoes"/> @@ -22,31 +22,47 @@ <menu_item_call label="Nowe RÄ™kawiczki" name="New Gloves"/> <menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/> <menu_item_call label="Nowa Bielizna" name="New Underpants"/> + <menu_item_call label="Nowa Maska Przezroczysta" name="New Alpha Mask"/> + <menu_item_call label="Nowy Tatuaż" name="New Tattoo"/> </menu> - <menu name="New Body Parts"> + <menu label="Nowa Część CiaÅ‚a" name="New Body Parts"> <menu_item_call label="Nowy KsztaÅ‚t" name="New Shape"/> <menu_item_call label="Nowa Skórka" name="New Skin"/> <menu_item_call label="Nowe WÅ‚osy" name="New Hair"/> <menu_item_call label="Nowe Oczy" name="New Eyes"/> </menu> + <menu label="ZmieÅ„ CzcionkÄ™" name="Change Type"> + <menu_item_call label="DomyÅ›lna" name="Default"/> + <menu_item_call label="RÄ™kawiczki" name="Gloves"/> + <menu_item_call label="Kurtka" name="Jacket"/> + <menu_item_call label="Spodnie" name="Pants"/> + <menu_item_call label="KsztaÅ‚t" name="Shape"/> + <menu_item_call label="Buty" name="Shoes"/> + <menu_item_call label="Koszulka" name="Shirt"/> + <menu_item_call label="Spódnica" name="Skirt"/> + <menu_item_call label="Bielizna" name="Underpants"/> + <menu_item_call label="Podkoszulek" name="Undershirt"/> + </menu> <menu_item_call label="Teleportuj" name="Landmark Open"/> <menu_item_call label="Otwórz" name="Animation Open"/> <menu_item_call label="Otwórz" name="Sound Open"/> <menu_item_call label="UsuÅ„ Obiekt" name="Purge Item"/> <menu_item_call label="Przywróć Obiekt" name="Restore Item"/> + <menu_item_call label="Otwórz Link" name="Goto Link"/> <menu_item_call label="Otwórz" name="Open"/> <menu_item_call label="WÅ‚aÅ›ciwoÅ›ci" name="Properties"/> <menu_item_call label="ZmieÅ„ NazwÄ™" name="Rename"/> <menu_item_call label="Kopiuj Dane UUID" name="Copy Asset UUID"/> <menu_item_call label="Kopiuj" name="Copy"/> <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="Wklej jako Link" name="Paste As Link"/> <menu_item_call label="UsuÅ„" name="Delete"/> <menu_item_call label="Zdejmij Obiekt" name="Take Off Items"/> <menu_item_call label="Dodaj do Stroju" name="Add To Outfit"/> <menu_item_call label="ZmieÅ„ Strój" name="Replace Outfit"/> <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat Folder"/> <menu_item_call label="Odtwarzaj" name="Sound Play"/> - <menu_item_call label="O Miejscu" name="Teleport To Landmark"/> + <menu_item_call label="O Miejscu" name="About Landmark"/> <menu_item_call label="Odtwarzaj w Åšwiecie" name="Animation Play"/> <menu_item_call label="Odtwarzaj Lokalnie" name="Animation Audition"/> <menu_item_call label="WyÅ›lij IM" name="Send Instant Message"/> @@ -54,8 +70,8 @@ <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat"/> <menu_item_call label="Aktywuj" name="Activate"/> <menu_item_call label="Deaktywuj" name="Deactivate"/> + <menu_item_call label="Zapisz jako" name="Save As"/> <menu_item_call label="Odłącz od Siebie" name="Detach From Yourself"/> - <menu_item_call label="Przywróć ostatniÄ… pozycjÄ™" name="Restore to Last Position"/> <menu_item_call label="Ubierz" name="Object Wear"/> <menu label="Dołącz do" name="Attach To"/> <menu label="Dołącz do Załączników HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml new file mode 100644 index 00000000000..5b8c5426dd7 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="ZaÅ‚aduj" name="upload"> + <menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/> + <menu_item_call label="DźwiÄ™k (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nowy Folder" name="New Folder"/> + <menu_item_call label="Nowy Skrypt" name="New Script"/> + <menu_item_call label="Nowa Nota" name="New Note"/> + <menu_item_call label="Nowa Gesturka" name="New Gesture"/> + <menu label="Nowe Ubranie" name="New Clothes"> + <menu_item_call label="Nowa Koszulka" name="New Shirt"/> + <menu_item_call label="Nowe Spodnie" name="New Pants"/> + <menu_item_call label="Nowe Buty" name="New Shoes"/> + <menu_item_call label="Nowe Skarpetki" name="New Socks"/> + <menu_item_call label="Nowa Kurtka" name="New Jacket"/> + <menu_item_call label="Nowa Spódnica" name="New Skirt"/> + <menu_item_call label="Nowe RÄ™kawiczki" name="New Gloves"/> + <menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/> + <menu_item_call label="Nowa Bielizna" name="New Underpants"/> + <menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/> + <menu_item_call label="Nowy Tatuaż" name="New Tattoo"/> + </menu> + <menu label="Nowa Część CiaÅ‚a" name="New Body Parts"> + <menu_item_call label="Nowy KsztaÅ‚t" name="New Shape"/> + <menu_item_call label="Nowa Skórka" name="New Skin"/> + <menu_item_call label="Nowe WÅ‚osy" name="New Hair"/> + <menu_item_call label="Nowe Oczy" name="New Eyes"/> + </menu> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml new file mode 100644 index 00000000000..8f5f94a02f9 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <menu_item_call label="Nowe Okno Szafy" name="new_window"/> + <menu_item_call label="PorzÄ…dkuj WedÅ‚ug Nazwy" name="sort_by_name"/> + <menu_item_call label="PorzÄ…dkuj WedÅ‚ug Daty" name="sort_by_recent"/> + <menu_item_call label="Pokaż Filtry" name="show_filters"/> + <menu_item_call label="Zresetuj Filtry" name="reset_filters"/> + <menu_item_call label="Zamknij Wszystkie Foldery" name="close_folders"/> + <menu_item_call label="Opróżnij Kosz" name="empty_trash"/> + <menu_item_call label="Opróżnij Zagubione i Odnalezione" name="empty_lostnfound"/> + <menu_item_call label="Zapisz TeksturÄ™ Jako" name="Save Texture As"/> + <menu_item_call label="Znajdź OryginaÅ‚" name="Find Original"/> + <menu_item_call label="Znajdź Wszystkie Linki" name="Find All Links"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml new file mode 100644 index 00000000000..2c89b43525a --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="O PosiadÅ‚oÅ›ci" name="Place Information..."/> + <menu_item_call label="UsiÄ…dź Tutaj" name="Sit Here"/> + <menu_item_call label="Kup PosiadÅ‚ość" name="Land Buy"/> + <menu_item_call label="Kup WstÄ™p" name="Land Buy Pass"/> + <menu_item_call label="Buduj" name="Create"/> + <menu_item_call label="Edytuj Teren" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_landmark.xml b/indra/newview/skins/default/xui/pl/menu_landmark.xml new file mode 100644 index 00000000000..8cd7e03bf1b --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_landmark.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="landmark_overflow_menu"> + <menu_item_call label="Kopiuj SLurl" name="copy"/> + <menu_item_call label="UsuÅ„" name="delete"/> + <menu_item_call label="Utwórz" name="pick"/> + <menu_item_call label="Dodaj do Paska Ulubionych" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml index 2445d69ac0c..5084b59397d 100755 --- a/indra/newview/skins/default/xui/pl/menu_login.xml +++ b/indra/newview/skins/default/xui/pl/menu_login.xml @@ -1,13 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="Plik" name="File"> - <menu_item_call label="Wyłącz Program" name="Quit" /> - </menu> - <menu label="Edycja" name="Edit"> - <menu_item_call label="Ustawienia..." name="Preferences..." /> + <menu label="Ja" name="File"> + <menu_item_call label="Ustawienia" name="Preferences..."/> + <menu_item_call label="Wyłącz Program" name="Quit"/> </menu> <menu label="Pomoc" name="Help"> - <menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help" /> - <menu_item_call label="O [APP_NAME]..." name="About Second Life..." /> + <menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/> + </menu> + <menu label="Debug" name="Debug"> + <menu label="Edytuj" name="Edit"> + <menu_item_call label="Cofnij" name="Undo"/> + <menu_item_call label="Powtórz" name="Redo"/> + <menu_item_call label="Wytnij" name="Cut"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Powiel" name="Duplicate"/> + <menu_item_call label="Zaznacz Wszystko" name="Select All"/> + <menu_item_call label="Odznacz" name="Deselect"/> + </menu> + <menu_item_call label="Ustawienia Debugowania" name="Debug Settings"/> + <menu_item_call label="Ustawienia UI/Kolor" name="UI/Color Settings"/> + <menu_item_call label="Pokaż schowek" name="Show Side Tray"/> + <menu label="UI Testy" name="UI Tests"/> + <menu_item_call label="WyÅ›wietl TOS" name="TOS"/> + <menu_item_call label="WyÅ›wietl Wiadomość KrytycznÄ…" name="Critical"/> + <menu_item_call label="Test PrzeglÄ…darki Internetowej" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml index da2eba07a0b..4152fb41c87 100644 --- a/indra/newview/skins/default/xui/pl/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom Blisko" name="Zoom Close"/> <menu_item_call label="Zoom Åšrednio" name="Zoom Medium"/> <menu_item_call label="Zoom Daleko" name="Zoom Far"/> + <menu_item_check label="Obróć MapÄ™" name="Rotate Map"/> <menu_item_call label="Zatrzymaj" name="Stop Tracking"/> - <menu_item_call label="Profil..." name="Profile"/> + <menu_item_call label="Mapa Åšwiata" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml new file mode 100644 index 00000000000..8d84f3e7645 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Pokaż WspółrzÄ™dne" name="Show Coordinates"/> + <menu_item_check label="Pokaż WÅ‚aÅ›ciwoÅ›ci PosiadÅ‚oÅ›ci" name="Show Parcel Properties"/> + <menu_item_call label="Ulubione Miejsce" name="Landmark"/> + <menu_item_call label="Wytnij" name="Cut"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Zaznacz Wszystko" name="Select All"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml new file mode 100644 index 00000000000..78b8c0a4fca --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="NearBy Chat Menu"> + <menu_item_call label="Pokaż Osoby w Pobliżu..." name="nearby_people"/> + <menu_item_check label="Pokaż Zablokowany Tekst" name="muted_text"/> + <menu_item_check label="WyÅ›wietlaj Ikonki Znajomych" name="show_buddy_icons"/> + <menu_item_check label="WyÅ›wietlaj Imiona" name="show_names"/> + <menu_item_check label="WyÅ›wietlaj Ikonki i Imiona" name="show_icons_and_names"/> + <menu_item_call label="Rozmiar Czcionki" name="font_size"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml new file mode 100644 index 00000000000..bdeeb61bf48 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_object.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Dotknij" name="Object Touch"/> + <menu_item_call label="Edytuj" name="Edit..."/> + <menu_item_call label="Buduj" name="Build"/> + <menu_item_call label="Otwórz" name="Open"/> + <menu_item_call label="UsiÄ…dź Tutaj" name="Object Sit"/> + <menu_item_call label="Sprawdź" name="Object Inspect"/> + <context_menu label="Połóż >" name="Put On"> + <menu_item_call label="Załóż" name="Wear"/> + <context_menu label="Dołącz do >" name="Object Attach"/> + <context_menu label="Dołącz do HUD >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="UsuÅ„ >" name="Remove"> + <menu_item_call label="Weź" name="Pie Object Take"/> + <menu_item_call label="Raport" name="Report Abuse..."/> + <menu_item_call label="Zablokuj" name="Object Mute"/> + <menu_item_call label="Zwróć" name="Return..."/> + <menu_item_call label="UsuÅ„" name="Delete"/> + </context_menu> + <menu_item_call label="Weź KopiÄ™" name="Take Copy"/> + <menu_item_call label="ZapÅ‚ać" name="Pay..."/> + <menu_item_call label="Kup" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_object_icon.xml b/indra/newview/skins/default/xui/pl/menu_object_icon.xml new file mode 100644 index 00000000000..b499bca2dbf --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_object_icon.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Object Icon Menu"> + <menu_item_call label="Sprawdź..." name="Object Profile"/> + <menu_item_call label="Zablokuj..." name="Block"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml new file mode 100644 index 00000000000..604ee2d104d --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <menu_item_call label="Zobacz Profil" name="View Profile"/> + <menu_item_call label="Dodaj Znajomość" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="ZadzwoÅ„" name="Call"/> + <menu_item_call label="UdostÄ™pnij" name="Share"/> + <menu_item_call label="ZapÅ‚ać" name="Pay"/> + <menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/> + <menu_item_check label="Zablokuj Tekst" name="MuteText"/> + <menu_item_check label="Odblokuj Tekst" name="AllowTextChat"/> + <menu_item_call label="Zablokuj tego uczestnika" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Zablokuj wszystkich pozostaÅ‚ych" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Oblokuj tego uczestnika" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Odblokuj wszystkich pozostaÅ‚ych" name="ModerateVoiceUnMuteOthers"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml new file mode 100644 index 00000000000..0043030035c --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Nazwy" name="sort_name"/> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Statusu" name="sort_status"/> + <menu_item_check label="WyÅ›wietlaj Ikonki" name="view_icons"/> + <menu_item_call label="Pokaż Zablokowanych Rezydentów & Obiekty" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml new file mode 100644 index 00000000000..f661cfeba0a --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="WyÅ›wietlaj Ikonki Grupy" name="Display Group Icons"/> + <menu_item_call label="Opuść Zaznaczone Grupy" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml new file mode 100644 index 00000000000..0f80b56c163 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Zobacz Profil" name="View Profile"/> + <menu_item_call label="Dodaj Znajomość" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="ZadzwoÅ„" name="Call"/> + <menu_item_call label="UdostÄ™pnij" name="Share"/> + <menu_item_call label="ZapÅ‚ać" name="Pay"/> + <menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml new file mode 100644 index 00000000000..156c10e3f3a --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Dodaj Znajomych" name="Add Friends"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="ZadzwoÅ„" name="Call"/> + <menu_item_call label="UdostÄ™pnij" name="Share"/> + <menu_item_call label="ZapÅ‚ać" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml new file mode 100644 index 00000000000..9e5f1a5917d --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Ostatnich Rozmówców" name="sort_by_recent_speakers"/> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Nazwy" name="sort_name"/> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug OdlegÅ‚oÅ›ci" name="sort_distance"/> + <menu_item_check label="WyÅ›wietlaj Ikonki" name="view_icons"/> + <menu_item_call label="Pokaż Zablokowanych Rezydentów & Obiekty" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml new file mode 100644 index 00000000000..418b67bce8b --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Daty" name="sort_most"/> + <menu_item_check label="PorzÄ…dkuj WedÅ‚ug Nazwy" name="sort_name"/> + <menu_item_check label="WyÅ›wietlaj Ikonki" name="view_icons"/> + <menu_item_call label="Pokaż Zablokowanych Rezydentów & Obiekty" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_picks.xml b/indra/newview/skins/default/xui/pl/menu_picks.xml new file mode 100644 index 00000000000..6f6e4b7fa80 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_picks.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Picks"> + <menu_item_call label="Info" name="pick_info"/> + <menu_item_call label="Edytuj" name="pick_edit"/> + <menu_item_call label="Teleportuj" name="pick_teleport"/> + <menu_item_call label="Mapa" name="pick_map"/> + <menu_item_call label="UsuÅ„" name="pick_delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml new file mode 100644 index 00000000000..14ab9c2978c --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="picks_plus_menu"> + <menu_item_call label="Utwórz" name="create_pick"/> + <menu_item_call label="Nowa Reklama" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml new file mode 100644 index 00000000000..72f4b1265f8 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_place.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="place_overflow_menu"> + <menu_item_call label="Zapisz Ulubione Miejsce" name="landmark"/> + <menu_item_call label="Utwórz" name="pick"/> + <menu_item_call label="Kup WstÄ™p" name="pass"/> + <menu_item_call label="Edytuj" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml new file mode 100644 index 00000000000..a737fc49cea --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Dodaj Folder" name="add_folder"/> + <menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml new file mode 100644 index 00000000000..f5ece87b282 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/> + <menu_item_call label="Dodaj Folder" name="add_folder"/> + <menu_item_call label="Wytnij" name="cut"/> + <menu_item_call label="Kopiuj" name="copy_folder"/> + <menu_item_call label="Wklej" name="paste"/> + <menu_item_call label="ZmieÅ„ NazwÄ™" name="rename"/> + <menu_item_call label="UsuÅ„" name="delete"/> + <menu_item_call label="RozwiÅ„" name="expand"/> + <menu_item_call label="Schowaj" name="collapse"/> + <menu_item_call label="RozwiÅ„ Wszystkie Foldery" name="expand_all"/> + <menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/> + <menu_item_check label="Sortuj wedÅ‚ug daty" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml new file mode 100644 index 00000000000..e88f650ed06 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_ladmark_gear"> + <menu_item_call label="Teleportuj" name="teleport"/> + <menu_item_call label="WiÄ™cej Informacji" name="more_info"/> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/> + <menu_item_call label="Dodaj Folder" name="add_folder"/> + <menu_item_call label="Wytnij" name="cut"/> + <menu_item_call label="Kopiuj Ulubione Miejsce" name="copy_landmark"/> + <menu_item_call label="Kopiuj SLurl" name="copy_slurl"/> + <menu_item_call label="Wklej" name="paste"/> + <menu_item_call label="ZmieÅ„ NazwÄ™" name="rename"/> + <menu_item_call label="UsuÅ„" name="delete"/> + <menu_item_call label="RozwiÅ„ Wszystkie Foldery" name="expand_all"/> + <menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/> + <menu_item_check label="Sortuj wedÅ‚ug daty" name="sort_by_date"/> + <menu_item_call label="Stwórz Ulubione" name="create_pick"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml new file mode 100644 index 00000000000..8405d48e492 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="ZapÅ‚ać" name="pay"/> + <menu_item_call label="UdostÄ™pnij" name="share"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml index ca5e2b09650..719959df6a0 100755 --- a/indra/newview/skins/default/xui/pl/menu_slurl.xml +++ b/indra/newview/skins/default/xui/pl/menu_slurl.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="O Miejscu" name="about_url" /> - <menu_item_call label="Teleportuj do Miejsca" name="teleport_to_url" /> - <menu_item_call label="Pokaż Miejsce na Mapie" name="show_on_map" /> + <menu_item_call label="O Miejscu" name="about_url"/> + <menu_item_call label="Teleportuj do Miejsca" name="teleport_to_url"/> + <menu_item_call label="Mapa" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml new file mode 100644 index 00000000000..2161963a615 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Teleport History Gear Context Menu"> + <menu_item_call label="RozwiÅ„ wszystkie foldery" name="Expand all folders"/> + <menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/> + <menu_item_call label="Wyczyść HistoriÄ™ Teleportacji" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml new file mode 100644 index 00000000000..7e58747267d --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Teleportuj" name="Teleport"/> + <menu_item_call label="WiÄ™cej Szczegółów" name="More Information"/> + <menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml new file mode 100644 index 00000000000..b12df08d6ae --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Otwórz" name="TabOpen"/> + <menu_item_call label="Zamknij" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_text_editor.xml b/indra/newview/skins/default/xui/pl/menu_text_editor.xml new file mode 100644 index 00000000000..4529246b561 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_text_editor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Text editor context menu"> + <menu_item_call label="Wytnij" name="Cut"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Zaznacz Wszystko" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml new file mode 100644 index 00000000000..0f210b140bb --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_agent.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Profil Rezydenta" name="show_agent"/> + <menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml new file mode 100644 index 00000000000..38e4360691e --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Szczegóły o Grupie" name="show_group"/> + <menu_item_call label="Kopiuj GrupÄ™ do Schowka" name="url_copy_label"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_http.xml b/indra/newview/skins/default/xui/pl/menu_url_http.xml new file mode 100644 index 00000000000..0d8793d41e7 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_http.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Otwórz PrzeglÄ…darkÄ™ InternetowÄ…" name="url_open"/> + <menu_item_call label="Otwórz w WewnÄ™trzenej PrzeglÄ…darce" name="url_open_internal"/> + <menu_item_call label="Otwórz w ZewnÄ™trznej PrzeglÄ…darce" name="url_open_external"/> + <menu_item_call label="Kopiuj URL do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml new file mode 100644 index 00000000000..c11860d6fe1 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Obiekt w Szafie" name="show_item"/> + <menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_map.xml b/indra/newview/skins/default/xui/pl/menu_url_map.xml new file mode 100644 index 00000000000..becbd8276fc --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_map.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Teleportuj do Miejsca" name="teleport_to_location"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml new file mode 100644 index 00000000000..0bdf1da2a40 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Szczegóły o Obiekcie" name="show_object"/> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Teleportuj to Miejsca Obiektu" name="teleport_to_object"/> + <menu_item_call label="Kopiuj NazwÄ™ Obiektu do Schowka" name="url_copy_label"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml new file mode 100644 index 00000000000..881c010bc12 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_parcel"/> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_slapp.xml b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml new file mode 100644 index 00000000000..eb83245c48c --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Uruchom tÄ™ komendÄ™" name="run_slapp"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml new file mode 100644 index 00000000000..b9fa692365c --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_place"/> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml new file mode 100644 index 00000000000..7376fb3afc4 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Teleportuj do tego miejsca" name="teleport"/> + <menu_item_call label="Pokaż na Mapie" name="show_on_map"/> + <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index 1898906d9ff..2a5842e553f 100755 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -1,207 +1,324 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu label="Plik" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="ZaÅ‚aduj" name="upload"> - <menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/> - <menu_item_call label="DźwiÄ™k (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Animacja (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Zbiór plików (L$[COST] za plik)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Wybierz ustawienia domyÅ›lne..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Zamknij Bieżące Okno" name="Close Window"/> - <menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Zapisz Obraz Jako..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Zrób ZdjÄ™cie" name="Take Snapshot"/> - <menu_item_call label="Zapisz ZdjÄ™cie na Dysk" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Wyłącz Program" name="Quit"/> + <menu label="Ja" name="Me"> + <menu_item_call label="Ustawienia" name="Preferences"/> + <menu_item_call label="Moja Tablica" name="Manage My Account"/> + <menu_item_call label="Kup L$" name="Buy and Sell L$"/> + <menu_item_call label="Mój Profil" name="Profile"/> + <menu_item_call label="Mój WyglÄ…d" name="Appearance"/> + <menu_item_check label="Moja Szafa" name="Inventory"/> + <menu_item_call label="Pokaż SzafÄ™ w Schowku" name="ShowSidetrayInventory"/> + <menu_item_call label="Moje Gesturki" name="Gestures"/> + <menu label="Mój Status" name="Status"> + <menu_item_call label="Tryb Oddalenia" name="Set Away"/> + <menu_item_call label="Tryb Pracy" name="Set Busy"/> + </menu> + <menu_item_call label="ZarzÄ…daj Statusu Administratora" name="Request Admin Options"/> + <menu_item_call label="Wyłącz Status Administratora" name="Leave Admin Options"/> + <menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/> </menu> - <menu label="Edycja" name="Edit"> - <menu_item_call label="Cofnij" name="Undo"/> - <menu_item_call label="Powtórz" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Wytnij" name="Cut"/> - <menu_item_call label="Kopiuj" name="Copy"/> - <menu_item_call label="Wklej" name="Paste"/> - <menu_item_call label="UsuÅ„" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Szukaj..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Zaznacz Wszystko" name="Select All"/> - <menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplikat" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Dołącz Obiekt" name="Attach Object"/> - <menu label="Odłącz Obiekt" name="Detach Object"/> - <menu label="Zdejmij Ubranie" name="Take Off Clothing"> - <menu_item_call label="KoszulÄ™" name="Shirt"/> - <menu_item_call label="Spodnie" name="Pants"/> - <menu_item_call label="Buty" name="Shoes"/> - <menu_item_call label="Skarpety" name="Socks"/> - <menu_item_call label="KurtkÄ™" name="Jacket"/> - <menu_item_call label="RÄ™kawiczki" name="Gloves"/> - <menu_item_call label="Podkoszulek" name="Menu Undershirt"/> - <menu_item_call label="BieliznÄ™" name="Menu Underpants"/> - <menu_item_call label="SpódnicÄ™" name="Skirt"/> - <menu_item_call label="CaÅ‚e Ubranie" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gesty..." name="Gestures..."/> - <menu_item_call label="Profil..." name="Profile..."/> - <menu_item_call label="WyglÄ…d..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Znajomi..." name="Friends..."/> - <menu_item_call label="Grupy..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Ustawienia..." name="Preferences..."/> + <menu label="Kommunikacja" name="Communicate"> + <menu_item_call label="Znajomi" name="My Friends"/> + <menu_item_call label="Grupy" name="My Groups"/> + <menu_item_check label="Czat Lokalny" name="Nearby Chat"/> + <menu_item_call label="Osoby w Pobliżu" name="Active Speakers"/> + <menu_item_check label="Media w Pobliżu" name="Nearby Media"/> </menu> - <menu label="Widok" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Widok Panoramiczny" name="Mouselook"/> - <menu_item_check label="Budowanie" name="Build"/> - <menu_item_check label="Wolna Kamera" name="Joystick Flycam"/> - <menu_item_call label="Normalny Widok" name="Reset View"/> - <menu_item_call label="Historia Rozmów" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="NarzÄ™dzia" name="Toolbar"/> - <menu_item_check label="Rozmowa Lokalna" name="Chat History"/> - <menu_item_check label="Rozmowa Prywatna (IM)" name="Instant Message"/> - <menu_item_check label="Moja Szafa" name="Inventory"/> - <menu_item_check label="RozmawiajÄ…ce Osoby" name="Active Speakers"/> - <menu_item_check label="Wyciszone Osoby" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Ustawienia Kamery" name="Camera Controls"/> + <menu label="Åšwiat" name="World"> <menu_item_check label="Ustawienia Ruchu" name="Movement Controls"/> - <menu_item_check label="Mapa Åšwiata" name="World Map"/> + <menu_item_check label="Widok" name="Camera Controls"/> + <menu_item_call label="O PosiadÅ‚oÅ›ci" name="About Land"/> + <menu_item_call label="Region/MajÄ…tek" name="Region/Estate"/> + <menu_item_call label="Kup PosiadÅ‚ość" name="Buy Land"/> + <menu_item_call label="Moje PosiadÅ‚oÅ›ci" name="My Land"/> + <menu label="Pokaż" name="Land"> + <menu_item_check label="Linie Banu" name="Ban Lines"/> + <menu_item_check label="Emitery" name="beacons"/> + <menu_item_check label="Granice PosiadÅ‚oÅ›ci" name="Property Lines"/> + <menu_item_check label="WÅ‚aÅ›ciciele PosiadÅ‚oÅ›ci" name="Land Owners"/> + </menu> + <menu label="Ulubione Miejsca" name="Landmarks"> + <menu_item_call label="Zapisz Ulubione Miejsce" name="Create Landmark Here"/> + <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> + </menu> + <menu_item_call label="Miejsce Startu" name="Teleport Home"/> <menu_item_check label="Mini-Mapa" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Statystyki" name="Statistics Bar"/> - <menu_item_check label="Granice PosiadÅ‚oÅ›ci" name="Property Lines"/> - <menu_item_check label="Linie banu" name="Banlines"/> - <menu_item_check label="WÅ‚aÅ›ciciele PosiadÅ‚oÅ›ci" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Podpowiedzi" name="Hover Tips"> - <menu_item_check label="Pokaż Podpowiedzi" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="PosiadÅ‚ość: wskazówki" name="Land Tips"/> - <menu_item_check label="Obiekty: wskazówki" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Pokaż Przezroczyste Obiekty" name="Highlight Transparent"/> - <menu_item_check label="Emitery" name="beacons"/> - <menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles"/> - <menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Zbliżenie" name="Zoom In"/> - <menu_item_call label="DomyÅ›lny Tryb Widoku" name="Zoom Default"/> - <menu_item_call label="Oddalenie" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Tryb Widoku PeÅ‚noekranowego" name="Toggle Fullscreen"/> - <menu_item_call label="Ustaw DomyÅ›lny Rozmiar Interfejsu Użytkownika" name="Set UI Size to Default"/> - </menu> - <menu label="Åšwiat" name="World"> - <menu_item_call label="Rozmowa/Czat" name="Chat"/> - <menu_item_check label="Biegnij" name="Always Run"/> - <menu_item_check label="Leć" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="ZapamiÄ™taj Miejsce (LM)" name="Create Landmark Here"/> - <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Åšpij" name="Set Away"/> - <menu_item_call label="Pracuj" name="Set Busy"/> - <menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/> - <menu_item_call label="Zwolnij Klawisze" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Historia Konta..." name="Account History..."/> - <menu_item_call label="ZarzÄ…dzaj Kontem..." name="Manage My Account..."/> - <menu_item_call label="Kup L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Moje PosiadÅ‚oÅ›ci..." name="My Land..."/> - <menu_item_call label="O PosiadÅ‚oÅ›ci..." name="About Land..."/> - <menu_item_call label="Kup PosiadÅ‚ość..." name="Buy Land..."/> - <menu_item_call label="Region/MajÄ…tek..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Ustawienia Åšrodowiska" name="Environment Settings"> + <menu_item_check label="Mapa Åšwiata" name="World Map"/> + <menu_item_call label="Zrób ZdjÄ™cie" name="Take Snapshot"/> + <menu label="SÅ‚oÅ„ce" name="Environment Settings"> <menu_item_call label="Wschód SÅ‚oÅ„ca" name="Sunrise"/> <menu_item_call label="PoÅ‚udnie" name="Noon"/> <menu_item_call label="Zachód SÅ‚oÅ„ca" name="Sunset"/> <menu_item_call label="Północ" name="Midnight"/> - <menu_item_call label="Przywróć DomyÅ›lne Ustawienia Regionu" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Używaj Czasu Regionu" name="Revert to Region Default"/> <menu_item_call label="Edytor Åšrodowiska" name="Environment Editor"/> </menu> </menu> - <menu label="NarzÄ™dzia" name="Tools"> - <menu label="Wybierz NarzÄ™dzie " name="Select Tool"> - <menu_item_call label="Przybliżenie" name="Focus"/> - <menu_item_call label="PrzesuÅ„" name="Move"/> - <menu_item_call label="Edytuj" name="Edit"/> - <menu_item_call label="Stwórz" name="Create"/> - <menu_item_call label="PosiadÅ‚ość" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/> - <menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects"/> - <menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding"/> - <menu_item_check label="Pokaż UkrytÄ… SelekcjÄ™" name="Show Hidden Selection"/> - <menu_item_check label="Pokaż ZasiÄ™g ÅšwiatÅ‚a dla Selekcji" name="Show Light Radius for Selection"/> - <menu_item_check label="Pokaż ŹródÅ‚o Selekcji" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid"/> - <menu_item_call label="PrzeciÄ…gnij Obiekt Do Siatki" name="Snap Object XY to Grid"/> - <menu_item_call label="Zastosuj Zaznaczenie Dla Siatki" name="Use Selection for Grid"/> - <menu_item_call label="Opcje Siatki..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts"/> + <menu label="Buduj" name="BuildTools"> + <menu_item_check label="Buduj" name="Show Build Tools"/> + <menu label="Wybierz NarzÄ™dzie Budowania" name="Select Tool"> + <menu_item_call label="NarzÄ™dzie Ogniskowej" name="Focus"/> + <menu_item_call label="NarzÄ™dzie Ruchu" name="Move"/> + <menu_item_call label="NarzÄ™dzie Edycji" name="Edit"/> + <menu_item_call label="Stwórz NarzÄ™dzie" name="Create"/> + <menu_item_call label="NarzÄ™dzie PosiadÅ‚oÅ›ci" name="Land"/> + </menu> + <menu label="Edytuj" name="Edit"> + <menu_item_call label="Cofnij" name="Undo"/> + <menu_item_call label="Cofnij" name="Redo"/> + <menu_item_call label="Wytnij" name="Cut"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Zduplikuj" name="Duplicate"/> + <menu_item_call label="Zaznacz Wszystko" name="Select All"/> + <menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/> + </menu> <menu_item_call label="Grupuj" name="Link"/> - <menu_item_call label="Rozgrupuj" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="OglÄ…daj SelekcjÄ™" name="Focus on Selection"/> + <menu_item_call label="Rozlinkuj" name="Unlink"/> + <menu_item_call label="Ogniskowa Selekcji" name="Focus on Selection"/> <menu_item_call label="Przybliż do Selekcji" name="Zoom to Selection"/> - <menu_item_call label="Kup Obiekt" name="Menu Object Take"> - <on_enable userdata="Kup,Weź" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Weź KopiÄ™" name="Take Copy"/> - <menu_item_call label="Zapisz Obiekt z Poprawkami" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Pokaż Okno Ostrzeżenia/Błędu Skryptu" name="Show Script Warning/Error Window"/> - <menu label="Zrekompiluj Skrypt w Selekcji" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Zresetuj Skrypt w Selekcji" name="Reset Scripts in Selection"/> - <menu_item_call label="Uruchom DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Wstrzymaj DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Not Running in Selection"/> + <menu label="Obiekt" name="Object"> + <menu_item_call label="Kup" name="Menu Object Take"/> + <menu_item_call label="Weź KopiÄ™" name="Take Copy"/> + <menu_item_call label="Zapisz Obiekt do Szafy" name="Save Object Back to My Inventory"/> + <menu_item_call label="Zapisz do TreÅ›ci Obiektu" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Skrypty" name="Scripts"> + <menu_item_call label="Zrekompiluj Skrypt w Selekcji (Mono)" name="Mono"/> + <menu_item_call label="Zrekompiluj Skrypty" name="LSL"/> + <menu_item_call label="Reset Skryptów" name="Reset Scripts"/> + <menu_item_call label="Ustaw Uruchamienie Skryptów" name="Set Scripts to Running"/> + <menu_item_call label="Wstrzymaj DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Not Running"/> + </menu> + <menu label="Opcje" name="Options"> + <menu_item_check label="Edytuj Części Zlinkowane" name="Edit Linked Parts"/> + <menu_item_call label="Ustaw DomyÅ›lne Pozwolenia Åadowania" name="perm prefs"/> + <menu_item_check label="Pokaż Zaawansowane Pozwolenia" name="DebugPermissions"/> + <menu label="Selekcja" name="Selection"> + <menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/> + <menu_item_check label="Zaznacz Tylko PoruszajÄ…ce siÄ™ Obiekty" name="Select Only Movable Objects"/> + <menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding"/> + </menu> + <menu label="Pokaż" name="Show"> + <menu_item_check label="Pokaż UkrytÄ… SelekcjÄ™" name="Show Hidden Selection"/> + <menu_item_check label="Pokaż PromieÅ„ ÅšwiatÅ‚a dla Selekcji" name="Show Light Radius for Selection"/> + <menu_item_check label="Pokaż Emitery Selekcji" name="Show Selection Beam"/> + </menu> + <menu label="Siatka" name="Grid"> + <menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid"/> + <menu_item_call label="PrzeciÄ…gnij Obiekt XY do Siatki" name="Snap Object XY to Grid"/> + <menu_item_call label="Zastosuj Zaznaczenie dla Siatki" name="Use Selection for Grid"/> + <menu_item_call label="Ustawienia Siatki" name="Grid Options"/> + </menu> + </menu> + <menu label="Wybierz Zlinkowane Części" name="Select Linked Parts"> + <menu_item_call label="Wybierz NastÄ™pnÄ… Część" name="Select Next Part"/> + <menu_item_call label="Zaznacz PoprzedniÄ… Część" name="Select Previous Part"/> + <menu_item_call label="UwzglÄ™dnij NastÄ™pnÄ… Część" name="Include Next Part"/> + <menu_item_call label="UwzglÄ™dnij PoprzedniÄ… Część" name="Include Previous Part"/> + </menu> </menu> <menu label="Pomoc" name="Help"> - <menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/> + <menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/> <menu_item_call label="Samouczek" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Oficjalny Blog [SECOND_LIFE]..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portal dla Skrypterów..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Złóż Raport o Nadużyciu..." name="Report Abuse..."/> - <menu_item_call label="Zderzenia, PopchniÄ™cia, Uderzenia..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Pomiar Lagów" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="ZgÅ‚oÅ› Błędy Klienta" name="Bug Reporting"> - <menu_item_call label="Publiczna Baza Błędów (JIRA)..." name="Public Issue Tracker..."/> - <menu_item_call label="Co to jest JIRA?..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Instrukcje: Jak ZgÅ‚osić Błąd?..." name="Bug Reporing 101..."/> - <menu_item_call label="Zabezpieczenia..." name="Security Issues..."/> - <menu_item_call label="Pytania i Odpowiedzi: Wikipedia..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="WyÅ›lij Raport Błędu..." name="Report Bug..."/> - </menu> - <menu_item_call label="O [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="Złóż Raport o Nadużyciu" name="Report Abuse"/> + <menu_item_call label="ZgÅ‚oÅ› Błędy Klienta" name="Report Bug"/> + </menu> + <menu label="Zaawansowane" name="Advanced"> + <menu_item_check label="Uruchom Tryb Oddalenia po 30 Minutach" name="Go Away/AFK When Idle"/> + <menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/> + <menu_item_call label="Odswież WyÅ›wietlanie Tekstur" name="Rebake Texture"/> + <menu_item_call label="DomyÅ›lne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/> + <menu_item_check label="Ogranicz Dystans Selekcji" name="Limit Select Distance"/> + <menu_item_check label="Wyłącz Ograniczenia ZasiÄ™gu Kamery" name="Disable Camera Distance"/> + <menu_item_check label="Wysoka Rozdzielczość Zdjęć" name="HighResSnapshot"/> + <menu_item_check label="Zapisuj ZdjÄ™cia na Dysk Twardy bez Efektu DźwiÄ™kowego" name="QuietSnapshotsToDisk"/> + <menu_item_check label="Skompresuj ZdjÄ™cie na Dysk Twardy" name="CompressSnapshotsToDisk"/> + <menu label="NarzÄ™dzia" name="Performance Tools"> + <menu_item_call label="Pomiar Lagów" name="Lag Meter"/> + <menu_item_check label="Statystyki" name="Statistics Bar"/> + <menu_item_check label="Pokaż Wartość Renderowania Awatara" name="Avatar Rendering Cost"/> + </menu> + <menu label="PodkreÅ›lanie i Widoczność" name="Highlighting and Visibility"> + <menu_item_check label="Efekt Emiterów" name="Cheesy Beacon"/> + <menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles"/> + <menu_item_check label="Ukryj Zaznaczone" name="Hide Selected"/> + <menu_item_check label="Pokaż Przeźroczyste Obiekty" name="Highlight Transparent"/> + <menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments"/> + <menu_item_check label="Pokaż Celownik Myszki" name="ShowCrosshairs"/> + <menu_item_check label="Pokaż Podpowiedzi PosiadÅ‚oÅ›ci" name="Land Tips"/> + </menu> + <menu label="Rodzaje Renderowania" name="Rendering Types"> + <menu_item_check label="Podstawowe" name="Simple"/> + <menu_item_check label="Maska Przezroczysta" name="Alpha"/> + <menu_item_check label="Drzewo" name="Tree"/> + <menu_item_check label="Awatary" name="Character"/> + <menu_item_check label="PÅ‚aszczyzna Powierzchni" name="SurfacePath"/> + <menu_item_check label="Niebo" name="Sky"/> + <menu_item_check label="Woda" name="Water"/> + <menu_item_check label="Ziemia" name="Ground"/> + <menu_item_check label="GÅ‚oÅ›ność" name="Volume"/> + <menu_item_check label="Trawa" name="Grass"/> + <menu_item_check label="Chmury" name="Clouds"/> + <menu_item_check label="CzÄ…steczki" name="Particles"/> + <menu_item_check label="Zderzenie" name="Bump"/> + </menu> + <menu label="Opcje Renderowania" name="Rendering Features"> + <menu_item_check label="UI" name="UI"/> + <menu_item_check label="Zaznaczone" name="Selected"/> + <menu_item_check label="PodÅ›wietlenie" name="Highlighted"/> + <menu_item_check label="Tekstury Dynamiczne" name="Dynamic Textures"/> + <menu_item_check label="CieÅ„ Stopy" name="Foot Shadows"/> + <menu_item_check label="MgÅ‚a" name="Fog"/> + <menu_item_check label="Obiekty Elastyczne" name="Flexible Objects"/> + </menu> + <menu_item_check label="Uruchom Wiele WÄ…tków" name="Run Multiple Threads"/> + <menu_item_call label="Wyczyść Bufor Danych Grupy" name="ClearGroupCache"/> + <menu_item_check label="WygÅ‚adzanie Ruchu Myszki" name="Mouse Smoothing"/> + <menu_item_check label="Pokaż WiadomoÅ›ci w Pobliżu" name="IMInChat"/> + <menu label="Skróty" name="Shortcuts"> + <menu_item_check label="Szukaj" name="Search"/> + <menu_item_call label="Zwolnij Klawisze" name="Release Keys"/> + <menu_item_call label="DomyÅ›lne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/> + <menu_item_check label="Biegnij" name="Always Run"/> + <menu_item_check label="Zacznij Latać" name="Fly"/> + <menu_item_call label="Zamknij Okno" name="Close Window"/> + <menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/> + <menu_item_call label="Zapisz ZdjÄ™cie na Dysk Twardy" name="Snapshot to Disk"/> + <menu_item_call label="Widok Panoramiczny" name="Mouselook"/> + <menu_item_check label="Wolna Kamera" name="Joystick Flycam"/> + <menu_item_call label="Reset Widoku" name="Reset View"/> + <menu_item_call label="Zobacz Ostatniego Rozmówce" name="Look at Last Chatter"/> + <menu label="Wybierz NarzÄ™dzie Budowania" name="Select Tool"> + <menu_item_call label="NarzÄ™dzie Ogniskowej" name="Focus"/> + <menu_item_call label="NarzÄ™dzie Ruchu" name="Move"/> + <menu_item_call label="NarzÄ™dzie Edycji" name="Edit"/> + <menu_item_call label="Stwórz NarzÄ™dzie" name="Create"/> + <menu_item_call label="NarzÄ™dzia PosiadÅ‚oÅ›ci" name="Land"/> + </menu> + <menu_item_call label="Przybliż" name="Zoom In"/> + <menu_item_call label="DomyÅ›lne Przybliżenie" name="Zoom Default"/> + <menu_item_call label="Oddal" name="Zoom Out"/> + <menu_item_call label="RozwiÅ„ Widok PeÅ‚noekranowy" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Pokaż Ustawienia Debugowania" name="Debug Settings"/> + <menu_item_check label="Pokaż Menu Progresu" name="Debug Mode"/> + </menu> + <menu label="PostÄ™p" name="Develop"> + <menu label="Konsola" name="Consoles"> + <menu_item_check label="Konsola Tekstur" name="Texture Console"/> + <menu_item_check label="Debugowanie ZdarzeÅ„ Konsoli" name="Debug Console"/> + <menu_item_call label="Konsola PowiadomieÅ„" name="Notifications"/> + <menu_item_check label="Konsola Rozmiaru Tekstury" name="Texture Size"/> + <menu_item_check label="Konsola Kategorii Tekstur" name="Texture Category"/> + <menu_item_check label="Szybkie Timery" name="Fast Timers"/> + <menu_item_check label="Pamięć" name="Memory"/> + <menu_item_call label="Info Regionu do Debugowania Konsoli" name="Region Info to Debug Console"/> + <menu_item_check label="Kamera" name="Camera"/> + <menu_item_check label="Wiatr" name="Wind"/> + </menu> + <menu label="Pokaż Informacje" name="Display Info"> + <menu_item_check label="Pokaż Czas" name="Show Time"/> + <menu_item_check label="Pokaż Informacje o Renderowaniu" name="Show Render Info"/> + <menu_item_check label="Pokaż Kolor pod Kursorem" name="Show Color Under Cursor"/> + <menu_item_check label="Pokaż Aktualizacje Obiektów" name="Show Updates"/> + </menu> + <menu label="Reset Błędu" name="Force Errors"> + <menu_item_call label="Aktywacja Punktu ZaÅ‚amania" name="Force Breakpoint"/> + <menu_item_call label="Reset Błędów LL" name="Force LLError And Crash"/> + <menu_item_call label="Reset Błędów PamiÄ™ci" name="Force Bad Memory Access"/> + <menu_item_call label="Reset PÄ™tli" name="Force Infinite Loop"/> + <menu_item_call label="Reset Sterowników" name="Force Driver Carsh"/> + <menu_item_call label="WyjÄ…tek Programu" name="Force Software Exception"/> + <menu_item_call label="Uruchom Rozłączenie" name="Force Disconnect Viewer"/> + <menu_item_call label="Symulacja Wycieku PamiÄ™ci" name="Memory Leaking Simulation"/> + </menu> + <menu label="Test Renderowania" name="Render Tests"> + <menu_item_check label="Kamera Poza Zasiegiem" name="Camera Offset"/> + <menu_item_check label="Losowa Ilość Klatek" name="Randomize Framerate"/> + <menu_item_check label="Test Klatki Obrazu" name="Frame Test"/> + </menu> + <menu label="Renderowanie" name="Rendering"> + <menu_item_check label="Osie" name="Axes"/> + <menu_item_check label="Tryb Obrazu Szkieletowego" name="Wireframe"/> + <menu_item_check label="Globalne OÅ›wietlenie" name="Global Illumination"/> + <menu_item_check label="Tekstury Animacji" name="Animation Textures"/> + <menu_item_check label="Wyłącz Tekstury" name="Disable Textures"/> + <menu_item_check label="Renderowania Załączonego ÅšwiatÅ‚a" name="Render Attached Lights"/> + <menu_item_check label="Renderowanie Załączonych CzÄ…steczek" name="Render Attached Particles"/> + <menu_item_check label="WyÅ›wietlaj Obiekty Odblaskowe" name="Hover Glow Objects"/> + </menu> + <menu label="Sieć" name="Network"> + <menu_item_check label="Zatrzymaj Awatara" name="AgentPause"/> + <menu_item_call label="Upuść Pakiet PamiÄ™ci" name="Drop a Packet"/> + </menu> + <menu_item_call label="Zderzenia, PopchniÄ™cia & Uderzenia" name="Bumps, Pushes &amp; Hits"/> + <menu label="Åšwiat" name="World"> + <menu_item_check label="DomyÅ›lne Ustawienia Åšrodowiska Regionu" name="Sim Sun Override"/> + <menu_item_check label="Efekty Emiterów" name="Cheesy Beacon"/> + <menu_item_check label="Ustalona Pogoda" name="Fixed Weather"/> + <menu_item_call label="Zachowaj Bufor PamiÄ™ci Obiektów Regionu" name="Dump Region Object Cache"/> + </menu> + <menu label="UI" name="UI"> + <menu_item_call label="Test PrzeglÄ…darki Internetowej" name="Web Browser Test"/> + <menu_item_call label="Drukuj Zaznaczone Informacje o Obiekcie" name="Print Selected Object Info"/> + <menu_item_call label="Statystyki PamiÄ™ci" name="Memory Stats"/> + <menu_item_check label="Kliknij Podójnie by Uruchomić Auto-Pilota" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Debugowanie ZdarzeÅ„ Klikania" name="Debug Clicks"/> + <menu_item_check label="Debugowanie ZdarzeÅ„ Myszy" name="Debug Mouse Events"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="ZaÅ‚aduj Ustawienia Koloru" name="Reload Color Settings"/> + <menu_item_call label="Pokaż Test Czcionki" name="Show Font Test"/> + <menu_item_call label="ZaÅ‚aduj z XML" name="Load from XML"/> + <menu_item_call label="Zapisz jako XML" name="Save to XML"/> + <menu_item_check label="Pokaż Nazwy XUI" name="Show XUI Names"/> + <menu_item_call label="WyÅ›lij Wiadomość (IM) TestowÄ…" name="Send Test IMs"/> + </menu> + <menu label="Awatar" name="Character"> + <menu label="Grab Baked Texture" name="Grab Baked Texture"> + <menu_item_call label="TÄ™czówka Oka" name="Iris"/> + <menu_item_call label="GÅ‚owa" name="Head"/> + <menu_item_call label="Górna Część CiaÅ‚a" name="Upper Body"/> + <menu_item_call label="Dolna Część CiaÅ‚a" name="Lower Body"/> + <menu_item_call label="Spódnica" name="Skirt"/> + </menu> + <menu label="Testy Postaci" name="Character Tests"> + <menu_item_call label="PrzesuÅ„ GeometriÄ™ Postaci" name="Toggle Character Geometry"/> + <menu_item_check label="Pozwól na Zaznaczanie Awatarów" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Powrót do DomyÅ›lnych Parametrów" name="Force Params to Default"/> + <menu_item_check label="Info o Animacji" name="Animation Info"/> + <menu_item_check label="Wolne Animacje" name="Slow Motion Animations"/> + <menu_item_check label="Wyłącz Poziom Detalu" name="Disable LOD"/> + <menu_item_check label="Pokaż Szczegóły Kolizji" name="Show Collision Skeleton"/> + <menu_item_check label="WyÅ›wietl Cel Aganta" name="Display Agent Target"/> + <menu_item_call label="Debugowanie Tekstur Awatara" name="Debug Avatar Textures"/> + </menu> + <menu_item_check label="Tekstury HTTP" name="HTTP Textures"/> + <menu_item_check label="Aktywacja okna konsoli podczas nastÄ™pnego uruchomienia" name="Console Window"/> + <menu_item_check label="Pokaż Menu Administratora" name="View Admin Options"/> + <menu_item_call label="Uzyskaj Status Administratora" name="Request Admin Options"/> + <menu_item_call label="Opuść Status Administratora" name="Leave Admin Options"/> + </menu> + <menu label="Administrator" name="Admin"> + <menu label="Object"> + <menu_item_call label="Weź KopiÄ™" name="Take Copy"/> + <menu_item_call label="Reset WÅ‚aÅ›ciciela" name="Force Owner To Me"/> + <menu_item_call label="Reset Przyzwolenia WÅ‚aÅ›ciciela" name="Force Owner Permissive"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Zablokuj" name="Lock"/> + </menu> + <menu label="PosiadÅ‚ość" name="Parcel"> + <menu_item_call label="Reset WÅ‚aÅ›ciciela" name="Owner To Me"/> + <menu_item_call label="Ustawienia TreÅ›ci Lindenów" name="Set to Linden Content"/> + <menu_item_call label="Odzyskaj PosiadÅ‚ość PublicznÄ…" name="Claim Public Land"/> + </menu> + <menu label="Region" name="Region"> + <menu_item_call label="Zachowaj Tymczasowo BazÄ™ Asset" name="Dump Temp Asset Data"/> + <menu_item_call label="Zachowaj Ustawienie Regionu" name="Save Region State"/> + </menu> + <menu_item_call label="Boskie NadzÄ™dzia" name="God Tools"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml new file mode 100644 index 00000000000..d7fcb8c966b --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="block_list_panel"> + <text name="title_text"> + Lista Blokad + </text> + <scroll_list name="blocked" tool_tip="Lista zablokowanych obecnie rezydentów"/> + <button label="Zablokuj Rezydenta..." label_selected="Zablokuj Rezydenta..." name="Block resident..." tool_tip="Wybierz rezydenta, którego chcesz zablokować"/> + <button label="Zablokuj obiekt wedÅ‚ug nazwy..." label_selected="Zablokuj obiekt wedÅ‚ug nazwy..." name="Block object by name..."/> + <button label="Odblokuj" label_selected="Odblokuj" name="Unblock" tool_tip="UsuÅ„ rezydenta lub obiekt z listy blokad"/> +</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml index ccef8870d23..dd46b4aeaa4 100755 --- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml @@ -1,118 +1,80 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="CzÅ‚onkowie" name="roles_tab"> - <string name="default_needs_apply_text"> - Panel zawiera nie zapisane zmiany. - </string> - <string name="want_apply_text"> - Chcesz zapisać zmiany? - </string> - <button label="?" name="help_button" /> - <panel name="members_header"> - <text name="static"> - Funkcje CzÅ‚onków - </text> - <text name="static2"> - CzÅ‚onkowie Grupy majÄ… przydzielone Funkcje z Przywilejami. Ustawienia te -można Å‚atwo zmienić, umożliwiajÄ…c grupie lepszÄ… organizacjÄ™ i dziaÅ‚aność. - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Funkcje - </text> - <text name="role_properties_modifiable"> - Wybierz FunkcjÄ™. Możesz zmienić NazwÄ™, Opis i TytuÅ‚ CzÅ‚onka. - </text> - <text name="role_properties_not_modifiable"> - Wybierz FunkcjÄ™ żeby zobaczyć jej atrybuty, CzÅ‚onków i Przywileje. - </text> - <text name="role_actions_modifiable"> - Możesz również przypisać Przywileje do Funkcji. - </text> - <text name="role_actions_not_modifiable"> - Możesz zobaczyć ale nie możesz modyfikować Przywilejów. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Przywileje - </text> - <text name="static2"> - Możesz zobaczyć opis Przywileju oraz Funkcje i CzÅ‚onków z przypisanym -Przywilejem. - </text> - </panel> + <panel.string name="default_needs_apply_text"> + ZakÅ‚adka zawiera niezapisane zmiany + </panel.string> + <panel.string name="want_apply_text"> + Czy chcesz zapisać zmiany? + </panel.string> <tab_container name="roles_tab_container"> - <panel label="CzÅ‚onkowie" name="members_sub_tab" tool_tip="CzÅ‚onkowie"> - <button label="Szukaj" name="search_button" /> - <button label="Wszystko" name="show_all_button" /> - <name_list name="member_list"> - <column label="ImiÄ™" name="name" /> - <column label="Kontrybucje" name="donated" /> - <column label="Ostatnio w SL" name="online" /> - </name_list> - <button label="ZaproÅ› NowÄ… OsobÄ™..." name="member_invite"/> - <button label="UsuÅ„ z Grupy" name="member_eject" /> - <string name="help_text"> + <panel label="CZÅONKOWIE" name="members_sub_tab" tool_tip="CzÅ‚onkowie"> + <panel.string name="help_text"> Możesz dodawać i usuwać Funkcje przypisane do CzÅ‚onków. Możesz wybrać wielu CzÅ‚onków naciskajÄ…c Ctrl i klikajÄ…c na ich imionach. - </string> + </panel.string> + <filter_editor label="Filtruj CzÅ‚onków" name="filter_input"/> + <name_list name="member_list"> + <name_list.columns label="CzÅ‚onek" name="name"/> + <name_list.columns label="Dotacje" name="donated"/> + <name_list.columns label="Ostatnio w SL" name="online"/> + </name_list> + <button label="ZaproÅ› do Grupy" name="member_invite"/> + <button label="UsuÅ„ z Grupy" name="member_eject"/> </panel> - <panel label="Funkcje" name="roles_sub_tab"> - <button label="Szukaj" name="search_button" /> - <button label="Wszystko" name="show_all_button" /> + <panel label="FUNKCJE" name="roles_sub_tab"> + <panel.string name="help_text"> + Wszystkie funkcje majÄ… tytuÅ‚ oraz przypisane do niego przywileje +które umożliwiajÄ… wykonywanie danej funckji. Każdy czÅ‚onek może peÅ‚nić +jednÄ… lub wiele funkcji. Każda grupa może posiadać maksymalnie 10 funkcji, +łącznie z funkcjÄ… Każdy i WÅ‚aÅ›ciciel. + </panel.string> + <panel.string name="cant_delete_role"> + Specjalne Funkcje Każdy i WÅ‚aÅ›ciciel nie mogÄ… zostać usuniÄ™te. + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <filter_editor label="Filtruj Funkcje" name="filter_input"/> <scroll_list name="role_list"> - <column label="Funkcja" name="name" /> - <column label="TytuÅ‚" name="title" /> - <column label="Liczba" name="members" /> + <scroll_list.columns label="Funkcja" name="name"/> + <scroll_list.columns label="TytuÅ‚" name="title"/> + <scroll_list.columns label="Liczba" name="members"/> </scroll_list> - <button label="Dodaj NowÄ… FunkcjÄ™..." name="role_create" /> - <button label="UsuÅ„ FunkcjÄ™" name="role_delete" /> - <string name="help_text"> - Funkcje majÄ… TytuÅ‚ i przypisane Przywileje. CzÅ‚onkowie mogÄ… mieć jednÄ… lub wiÄ™cej Funkcji. - Grupa może zawierać maksymalnie 10 Funkcji uwzglÄ™dniajÄ…c Funkcje Każdy i WÅ‚aÅ›ciciel. - </string> - <string name="cant_delete_role"> - Specjalne Funkcje Każdy i WÅ‚aÅ›ciciel nie mogÄ… zostać usuniÄ™te. - </string> + <button label="Stwórz NowÄ… FunkcjÄ™" name="role_create"/> + <button label="UsuÅ„ FunkcjÄ™" name="role_delete"/> </panel> - <panel label="Przywileje" name="actions_sub_tab"> - <button label="Szukaj" name="search_button" /> - <button label="Wszystko" name="show_all_button" /> - <scroll_list name="action_list" tool_tip="Zaznacz aby zobaczyć wiÄ™cej informacji."> - <column label="" name="icon" /> - <column label="" name="action" /> - </scroll_list> - <string name="help_text"> + <panel label="PRZYWILEJE" name="actions_sub_tab" tool_tip="Możesz sprawdzić szczegóły dotyczÄ…ce dangego przywileju oraz jakie funkcje oraz jacy czÅ‚onkowie posiadajÄ… prawo korzystania z niego."> + <panel.string name="help_text"> Przywileje pozwalajÄ… CzÅ‚onkom przypisanym do Funkcji na wykonywanie różnych zadaÅ„. Istnieje wiele Przywilei. - </string> + </panel.string> + <filter_editor label="Filtruj Przywileje" name="filter_input"/> + <scroll_list name="action_list" tool_tip="Wybierz przywilej by zobaczyć szczegóły"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> + </scroll_list> </panel> </tab_container> <panel name="members_footer"> <text name="static"> Funkcje </text> + <scroll_list name="member_assigned_roles"> + <scroll_list.columns label="" name="checkbox"/> + <scroll_list.columns label="" name="role"/> + </scroll_list> <text name="static2"> Przywileje </text> - <scroll_list name="member_assigned_roles"> - <column label="" name="checkbox" /> - <column label="" name="role" /> - </scroll_list> - <scroll_list name="member_allowed_actions" - tool_tip="Opisy Przywilejów sÄ… dostÄ™pne w zakÅ‚adce Przywileje."> - <column label="" name="icon" /> - <column label="" name="action" /> + <scroll_list name="member_allowed_actions" tool_tip="By zobaczyć szczegóły, wybierz zakÅ‚adkÄ™ Przywileje"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="roles_footer"> <text name="static"> Nazwa </text> - <text name="static2"> - Opis - </text> <line_editor name="role_name"> Liczba </line_editor> @@ -122,36 +84,37 @@ Istnieje wiele Przywilei. <line_editor name="role_title"> (proszÄ™ czekać) </line_editor> + <text name="static2"> + Opis + </text> <text_editor name="role_description"> (proszÄ™ czekać) </text_editor> <text name="static4"> - Przypisani CzÅ‚onkowie + Przypisane Funkcje </text> + <check_box label="Opcja widocznoÅ›ci jest aktywna" name="role_visible_in_list" tool_tip="Opcja ta pozwala okreÅ›lić widoczność czÅ‚onków peÅ‚niÄ…cych tÄ™ funkcjÄ™ dla ludzi spoza Grupy."/> <text name="static5" tool_tip="Przywileje przypisane do wybranej Funkcji."> Przypisane Przywileje </text> - <check_box label="CzÅ‚onkowie sÄ… Widoczni" name="role_visible_in_list" - tool_tip="OkreÅ›la czy CzÅ‚onkowie w tej Funkcji sÄ… widoczni dla ludzi spoza Grupy." /> - <scroll_list name="role_allowed_actions" - tool_tip="Opisy Przywilejów sÄ… dostÄ™pne w zakÅ‚adce Przywileje."> - <column label="" name="icon" /> - <column label="" name="checkbox" /> - <column label="" name="action" /> + <scroll_list name="role_allowed_actions" tool_tip="By zobaczyć szczegóły dozwolonych przywilejów wybierz zakÅ‚adkÄ™ Przywileje"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="checkbox"/> + <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="actions_footer"> <text name="static"> - Opis + Opis Przywileju </text> <text_editor name="action_description"> Przywilej 'UsuÅ„ CzÅ‚onka z Grupy'. Tylko WÅ‚aÅ›ciciel może usunąć innego WÅ‚aÅ›ciciela. </text_editor> <text name="static2"> - Funkcje z Przywilejem + Funkcje z tym przywilejem </text> <text name="static3"> - CzÅ‚onkowie z Przywilejem + CzÅ‚onkowie z tym przywilejem </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml index 3caf9338a23..cec7e34da54 100755 --- a/indra/newview/skins/default/xui/pl/panel_login.xml +++ b/indra/newview/skins/default/xui/pl/panel_login.xml @@ -1,37 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_login"> - <string name="real_url"> + <panel.string name="real_url"> http://secondlife.com/app/login/ - </string> - <string name="forgot_password_url"> + </panel.string> + <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php - </string> - <text name="first_name_text"> - ImiÄ™: - </text> - <text name="last_name_text"> - Nazwisko: - </text> - <text name="password_text"> - HasÅ‚o: - </text> - <text name="start_location_text"> - Miejsce Startu: - </text> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" label="Mój Start" /> - <combo_box.item name="MyLastLocation" label="Ostatnie Miejsce" /> - <combo_box.item name="Typeregionname" label="<Wpisz Region>" /> - </combo_box> - <check_box label="ZapamiÄ™taj HasÅ‚o" name="remember_check" /> - <button label="Połącz" label_selected="Połącz" name="connect_btn" /> - <text name="create_new_account_text"> - Utwórz nowe konto - </text> - <text name="forgot_password_text"> - Nie pamiÄ™tasz hasÅ‚a? - </text> - <text name="channel_text"> - [VERSION] - </text> + </panel.string> + <panel name="login_widgets"> + <text name="first_name_text"> + ImiÄ™: + </text> + <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ImiÄ™"/> + <text name="last_name_text"> + Nazwisko + </text> + <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nazwisko"/> + <text name="password_text"> + HasÅ‚o: + </text> + <button label="Zaloguj" label_selected="Zaloguj" name="connect_btn"/> + <text name="start_location_text"> + Miejsce Startu: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Moje Ostatnie Miejsce" name="MyLastLocation"/> + <combo_box.item label="Moje Miejsce Startu" name="MyHome"/> + <combo_box.item label="<Wpisz nazwÄ™ regionu>" name="Typeregionname"/> + </combo_box> + <check_box label="ZapamiÄ™taj HasÅ‚o" name="remember_check"/> + <text name="create_new_account_text"> + Załóż Nowe Konto + </text> + <text name="forgot_password_text"> + Nie pamiÄ™tasz swojego imienia lub hasÅ‚a? + </text> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml new file mode 100644 index 00000000000..e34fd696712 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Rzeczy" name="main inventory panel"> + <panel.string name="Title"> + Rzeczy + </panel.string> + <filter_editor label="Filtr" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Wszystkie Obiekty" name="All Items"/> + <inventory_panel label="Ostatnio Dodane Obiekty" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Pokaż dodatkowe opcje"/> + <button name="add_btn" tool_tip="Dodaj nowy obiekt"/> + <dnd_button name="trash_btn" tool_tip="UsuÅ„ wybrany obiekt"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Plik" name="File"> + <menu_item_call label="Otwórz" name="Open"/> + <menu label="ZaÅ‚aduj" name="upload"> + <menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/> + <menu_item_call label="DźwiÄ™k (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nowe Okno" name="New Window"/> + <menu_item_call label="Pokaż Filtry" name="Show Filters"/> + <menu_item_call label="Zresetuj Filtry" name="Reset Current"/> + <menu_item_call label="Zamknij Wszystkie Foldery" name="Close All Folders"/> + <menu_item_call label="Opróżnij Kosz" name="Empty Trash"/> + <menu_item_call label="Opróżnij Folder Zgubione i Znalezione" name="Empty Lost And Found"/> + </menu> + <menu label="Stwórz" name="Create"> + <menu_item_call label="Nowy Folder" name="New Folder"/> + <menu_item_call label="Nowy Skrypt" name="New Script"/> + <menu_item_call label="NowÄ… NotÄ™" name="New Note"/> + <menu_item_call label="NowÄ… GesturkÄ™" name="New Gesture"/> + <menu label="Nowe Ubranie" name="New Clothes"> + <menu_item_call label="NowÄ… KoszulkÄ™" name="New Shirt"/> + <menu_item_call label="Nowe Spodnie" name="New Pants"/> + <menu_item_call label="Nowe Buty" name="New Shoes"/> + <menu_item_call label="Nowe Skarpetki" name="New Socks"/> + <menu_item_call label="NowÄ… KurtkÄ™" name="New Jacket"/> + <menu_item_call label="NowÄ… SpódnicÄ™" name="New Skirt"/> + <menu_item_call label="Nowe RÄ™kawiczki" name="New Gloves"/> + <menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/> + <menu_item_call label="NowÄ… BieliznÄ™" name="New Underpants"/> + <menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/> + <menu_item_call label="Nowy Tatuaż" name="New Tattoo"/> + </menu> + <menu label="NowÄ… Część CiaÅ‚a" name="New Body Parts"> + <menu_item_call label="Nowy KsztaÅ‚t" name="New Shape"/> + <menu_item_call label="NowÄ… SkórkÄ™" name="New Skin"/> + <menu_item_call label="Nowe WÅ‚osy" name="New Hair"/> + <menu_item_call label="Nowe Oczy" name="New Eyes"/> + </menu> + </menu> + <menu label="UporzÄ…dkuj" name="Sort"> + <menu_item_check label="WegÅ‚ug Nazwy" name="By Name"/> + <menu_item_check label="WedÅ‚ug Daty" name="By Date"/> + <menu_item_check label="Foldery zawsze wedÅ‚ug nazwy" name="Folders Always By Name"/> + <menu_item_check label="Foldery Systemowe od Góry" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml index 2b70a728fa3..c3bd66274b9 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml @@ -1,7 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="advanced"> + <panel.string name="resolution_format"> + [RES_X] x [RES_Y] + </panel.string> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <check_box label="Czat Chmurkowy" name="bubble_text_chat"/> + <color_swatch name="background" tool_tip="Wybierz kolor czatu w chmurce"/> + <slider label="Intensywność" name="bubble_chat_opacity"/> <text name="AspectRatioLabel1" tool_tip="width / height"> - Proporcje: + Proporcje </text> <combo_box name="aspect_ratio" tool_tip="width / height"> <combo_box.item label="4:3 (Standardowy CRT)" name="item1"/> @@ -9,4 +18,31 @@ <combo_box.item label="8:5 (Panoramiczny)" name="item3"/> <combo_box.item label="16:9 (Panoramiczny)" name="item4"/> </combo_box> + <check_box label="Automatyczne Wykrywanie" name="aspect_auto_detect"/> + <text name="heading1"> + Kamery: + </text> + <slider label="KÄ…t Widoku" name="camera_fov"/> + <slider label="OdlegÅ‚ość" name="camera_offset_scale"/> + <text name="heading2"> + Automatyczne pozycjonowanie dla: + </text> + <check_box label="Buduj/Edytuj" name="edit_camera_movement" tool_tip="Używaj automatycznego pozycjonowania kamery aktywujÄ…c i deaktywujÄ…c tryb edycji"/> + <check_box label="WyglÄ…d" name="appearance_camera_movement" tool_tip="Używaj automatycznego pozycjonowania kamery podczas trybu edycji"/> + <text name="heading3"> + Awatary: + </text> + <check_box label="Pokaż w trybie widoku panoramicznego" name="first_person_avatar_visible"/> + <check_box label="Aktywacja klawiszy strzaÅ‚ek do poruszania awatarem" name="arrow_keys_move_avatar_check"/> + <check_box label="kliknij-kliknij-przytrzymaj, aby uruchomić" name="tap_tap_hold_to_run"/> + <check_box label="Poruszaj ustami awatara kiedy używana jest komunikacja gÅ‚osowa" name="enable_lip_sync"/> + <check_box label="Pokaż błędy skryptów" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="W czacie" name="0"/> + <radio_item label="W oknie" name="1"/> + </radio_group> + <check_box label="Uruchom tryb mówienia przez mikrofon podczas nasiÅ›niÄ™cia przycisku Mów:" name="push_to_talk_toggle_check" tool_tip="Jeżeli jesteÅ› w trybie mówienia, w celu aktywacji lub deaktywacji swojego mikrofonu wybierz i wyłącz przycisk Mów tylko raz. Jeżeli nie jesteÅ› w trybie mówienia, mikrofon przesyÅ‚a Twój gÅ‚os tylko w momencie aktywacji peÅ‚nej przycisku Mów."/> + <line_editor label="NaciÅ›nij Mów by rozpocząć komunikacjÄ™ gÅ‚osowÄ…" name="modifier_combo"/> + <button label="wybierz Klawisz" name="set_voice_hotkey_button"/> + <button label="Åšrodkowy Przycisk Myszki" name="set_voice_middlemouse_button"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml index 7826af8b03d..7195c30f20f 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml @@ -1,21 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Informacje" name="popups" title="Popups"> - <text name="dont_show_label"> - Ukryj te informacje: + <text name="tell_me_label"> + Powiadom mnie: </text> - <button label="Pokazuj TÄ™ InformacjÄ™" name="enable_popup" /> - <button label="Pokazuj Wszystko..." name="reset_dialogs_btn" - tool_tip="WyÅ›wietlaj wszystkie opcjonalne i 'Użyte pierwszy raz' informacje." /> + <check_box label="Kiedy wydajÄ™ lub otrzymujÄ™ L$" name="notify_money_change_checkbox"/> + <check_box label="Kiedy moi znajomi siÄ™ logujÄ… lub wylogowujÄ…" name="friends_online_notify_checkbox"/> <text name="show_label"> - Pokazuj te informacje: + Zawsze pokazuj te powiadomienia: </text> - <button label="Ukryj TÄ™ InformacjÄ™..." name="skip_dialogs_btn" - tool_tip="Nie wyÅ›wietlaj żadnych opcjonalnych i 'Użyte pierwszy raz' informacji" /> - <text name="text_box2"> - Oferty notek, obrazów i miejsc (LM): + <text name="dont_show_label"> + Nigdy nie pokazuj tych powiadomieÅ„: </text> - <check_box label="Akceptuj automatycznie" name="accept_new_inventory" /> - <check_box label="WyÅ›wietlaj automatycznie po akceptacji" name="show_new_inventory" /> - <check_box label="Automatycznie pokazuj nowe obiekty w szafie po akceptacji" - name="show_in_inventory" /> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml index 13b66ed242a..5599c216860 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml @@ -1,16 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Czat/IM" name="chat"> - <text name="text_box"> - Rozmiar Czcionki Czatu: - </text> - <radio_group name="chat_font_size"> - <radio_item name="radio" label="MaÅ‚a" /> - <radio_item name="radio2" label="Åšrednia" /> - <radio_item name="radio3" label="Duża" /> - </radio_group> + <radio_group name="chat_font_size"> + <radio_item label="MaÅ‚a" name="radio"/> + <radio_item label="Åšrednia" name="radio2"/> + <radio_item label="Duża" name="radio3"/> + </radio_group> <color_swatch label="Ty" name="user"/> <text name="text_box1"> - Ty + Ja </text> <color_swatch label="Inni" name="agent"/> <text name="text_box2"> @@ -36,22 +33,10 @@ <text name="text_box7"> WÅ‚aÅ›ciciel </text> - <color_swatch label="Chmurka" name="background"/> - <text name="text_box8"> - Chmurka - </text> <color_swatch label="Linki" name="links"/> <text name="text_box9"> Linki </text> - <check_box label="Pokazuj ostrzeżenia i błędy skryptu w czacie" name="script_errors_as_chat" /> - <spinner label="Zamykaj czat w" name="fade_chat_time" /> - <slider label="Przeźroczystość" name="console_opacity" /> - <check_box label="Używaj peÅ‚nej szerokość ekranu (restart wymagany)" name="chat_full_width_check" /> - <check_box label="Zamknij panel czatu po naciÅ›niÄ™ciu Wróć" name="close_chat_on_return_check" /> - <check_box label="StrzaÅ‚ki sterujÄ… awatarem podczas czatu" name="arrow_keys_move_avatar_check" /> - <check_box label="Pokazuj czas w czacie" name="show_timestamps_check" /> - <check_box label="Używaj animacji podczas pisania" name="play_typing_animation" /> - <check_box label="Pokazuj chmurki w czacie" name="bubble_text_chat" /> - <slider label="Przeźroczystość" name="bubble_chat_opacity" /> + <check_box initial_value="true" label="Używaj animacji podczas pisania" name="play_typing_animation"/> + <check_box label="WysyÅ‚aj wszystkie wiadomoÅ›ci (IM) na mojÄ… skrzynkÄ™ pocztowÄ… kiedy jestem niedostÄ™pny" name="send_im_to_email"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml index 64e3acfcde7..f9b5d221a54 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml @@ -1,40 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Audio i Video" name="Preference Media panel"> - <slider label="Master" name="System Volume"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="DźwiÄ™ki" name="Preference Media panel"> + <slider label="Główny" name="System Volume"/> + <check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/> <slider label="Otoczenie" name="Wind Volume"/> - <slider label="DźwiÄ™ki" name="SFX Volume"/> + <slider label="Interfejs" name="UI Volume"/> <slider label="Media" name="Media Volume"/> - <slider label="UI" name="UI Volume"/> - <slider label="Muzyka" name="Music Volume"/> + <slider label="Efekty DźwiÄ™kowe" name="SFX Volume"/> + <slider label="Muzyka Strumieniowa" name="Music Volume"/> + <check_box label="GÅ‚os" name="enable_voice_check"/> <slider label="GÅ‚os" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - Rozmowy sÄ… NiedostÄ™pne - </text_editor> - <check_box label="Pozwól na Rozmowy" name="enable_voice_check"/> + <text name="Listen from"> + Odtwarzaj z: + </text> <radio_group name="ear_location"> - <radio_item name="0" label="Odtwarzaj gÅ‚os z pozycji kamery" /> - <radio_item name="1" label="Odtwarzaj gÅ‚os z pozycji awatara" /> + <radio_item label="Pozycji kamery" name="0"/> + <radio_item label="Pozycji Awatara" name="1"/> </radio_group> - <button label="Ustawienia SprzÄ™towe" name="device_settings_btn"/> - <text name="muting_text"> - GÅ‚oÅ›ność: - </text> - <text name="streaming_prefs_text"> - Ustawienia Strumieni: - </text> - <text name="audio_prefs_text"> - Ustawienia Audio: - </text> - <panel label="GÅ‚oÅ›ność" name="Volume Panel" /> - <check_box label="Odtwarzaj Strumienie Muzyki" - name="streaming_music" /> - <check_box label="Odtwarzaj Strumienie Video" - name="streaming_video" /> - <check_box label="Automatycznie Odtwarzaj Media" name="auto_streaming_video" /> - <check_box label="Wyciszaj Audio Podczas Minimalizacji Okna" name="mute_when_minimized" /> - <slider label="Efekt Dopplera" name="Doppler Effect" /> - <slider label="WpÅ‚yw Dystansu" name="Distance Factor" /> - <slider label="Wyciszanie" name="Rolloff Factor" /> - <spinner label="Próg Zmiany L$" name="L$ Change Threshold" /> - <spinner label="Próg Zmiany Statusu" name="Health Change Threshold" /> + <button label="WejÅ›ciowe/WyjÅ›ciowe UrzÄ…dzenia" name="device_settings_btn"/> + <panel label="Ustawienia SprzÄ™towe" name="device_settings_panel"> + <panel.string name="default_text"> + DomyÅ›lne + </panel.string> + <text name="Input"> + WejÅ›ciowe + </text> + <text name="My volume label"> + Moja gÅ‚oÅ›ność: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="ZmieÅ„ próg gÅ‚oÅ›noÅ›ci korzystajÄ…c z tego suwaka"/> + <text name="wait_text"> + ProszÄ™ czekać + </text> + <text name="Output"> + WyjÅ›ciowe + </text> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_world_map.xml b/indra/newview/skins/default/xui/pl/panel_world_map.xml index 608f102dc90..70479fe2090 100644 --- a/indra/newview/skins/default/xui/pl/panel_world_map.xml +++ b/indra/newview/skins/default/xui/pl/panel_world_map.xml @@ -1,5 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="world_map"> + <panel.string name="Loading"> + Åadowanie... + </panel.string> + <panel.string name="InvalidLocation"> + NiewÅ‚aÅ›ciwa Lokalizacja + </panel.string> <panel.string name="world_map_north"> N </panel.string> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 1f67944f86b..e8dcfac02d0 100755 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -4,9 +4,21 @@ For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> + <string name="SUPPORT_SITE"> + Portal Pomocy Second Life + </string> + <string name="StartupDetectingHardware"> + Wykrywanie dysku twardego... + </string> + <string name="StartupLoading"> + Åadowanie + </string> <string name="LoginInProgress"> Trwa logowanie. [APP_NAME] ProszÄ™ czekać. </string> + <string name="LoginInProgressNoFrozen"> + Logowanie... + </string> <string name="LoginAuthenticating"> Autoryzacja </string> @@ -25,8 +37,11 @@ <string name="LoginInitializingMultimedia"> Inicjalizacja multimediów... </string> + <string name="LoginInitializingFonts"> + Åadowanie czcionek... + </string> <string name="LoginVerifyingCache"> - Weryfikacja plików z bazy danych (może zająć 60-90 sekund)... + Weryfikacja bufora danych na dysku (może trwać od 60 do 90 sekund)... </string> <string name="LoginProcessingResponse"> Przetwarzanie Odpowiedzi... @@ -55,8 +70,11 @@ <string name="LoginDownloadingClothing"> Åadowanie ubrania... </string> + <string name="LoginFailedNoNetwork"> + Błąd sieci: Brak połączenia z sieciÄ…, sprawdź status swojego połączenia internetowego. + </string> <string name="Quit"> - Wyjdź + Wyłącz Program </string> <string name="AgentLostConnection"> Ten region może mieć problemy. Sprawdź podłączenie do Internetu. @@ -76,39 +94,9 @@ <string name="TooltipIsGroup"> (Grupa) </string> - <string name="TooltipFlagScript"> - Skrypt - </string> - <string name="TooltipFlagPhysics"> - Fizyka - </string> - <string name="TooltipFlagTouch"> - Dotyk - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - UsuÅ„ z Szafy - </string> - <string name="TooltipFlagPhantom"> - Fantom - </string> - <string name="TooltipFlagTemporary"> - Tymczasowy - </string> - <string name="TooltipFlagRightClickMenu"> - (Menu - wciÅ›nij prawy klawisz) - </string> - <string name="TooltipFreeToCopy"> - Za darmo - </string> <string name="TooltipForSaleL$"> Na Sprzedaż: L$[AMOUNT] </string> - <string name="TooltipForSaleMsg"> - Na Sprzedaż: [MESSAGE] - </string> <string name="TooltipFlagGroupBuild"> Budowanie Grupowe </string> @@ -136,6 +124,76 @@ <string name="TooltipMustSingleDrop"> Tylko pojedynczy obiekt może być tutaj przeciÄ…gniÄ™ty </string> + <string name="TooltipHttpUrl"> + Kliknij by zobaczyć zawartość tej strony internetowej + </string> + <string name="TooltipSLURL"> + Kliknij by zobaczyć szczegóły tego miejsca + </string> + <string name="TooltipAgentUrl"> + Kliknij by zobaczyć profil tego rezydenta + </string> + <string name="TooltipGroupUrl"> + Kliknij by zobaczyć opis tej grupy + </string> + <string name="TooltipEventUrl"> + Klinij by zobaczyć szczegóły tego wydarzenia + </string> + <string name="TooltipClassifiedUrl"> + Kliknij by zobaczyć tÄ™ reklamÄ™ + </string> + <string name="TooltipParcelUrl"> + Kliknij by zobaczyć opis tej posiadÅ‚oÅ›ci + </string> + <string name="TooltipTeleportUrl"> + Kliknij by teleportować siÄ™ do tego miejsca + </string> + <string name="TooltipObjectIMUrl"> + Kliknij by zobaczyć opis tego obiektu + </string> + <string name="TooltipMapUrl"> + Kliknij by zobaczyć to miejsce na mapie + </string> + <string name="TooltipSLAPP"> + Kliknij by uruchomić secondlife:// command + </string> + <string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teleportuj do + </string> + <string name="SLurlLabelShowOnMap"> + Pokaż na Mapie + </string> + <string name="BUTTON_CLOSE_DARWIN"> + Zamknij (⌘W) + </string> + <string name="BUTTON_CLOSE_WIN"> + Zamknij (Ctrl+W) + </string> + <string name="BUTTON_RESTORE"> + Odzyskaj + </string> + <string name="BUTTON_MINIMIZE"> + Minimalizuj + </string> + <string name="BUTTON_TEAR_OFF"> + Oderwij + </string> + <string name="BUTTON_DOCK"> + Przyłącz + </string> + <string name="BUTTON_UNDOCK"> + Odłącz + </string> + <string name="BUTTON_HELP"> + Pokaż Pomoc + </string> + <string name="Searching"> + Wyszukiwanie... + </string> + <string name="NoneFound"> + Nieodnaleziono. + </string> <string name="RetrievingData"> Odzyskiwanie danych... </string> @@ -190,8 +248,77 @@ <string name="AssetErrorUnknownStatus"> Status nieznany </string> - <string name="AvatarEditingApparance"> - (Edycja WyglÄ…du) + <string name="texture"> + tekstury + </string> + <string name="sound"> + dźwiÄ™ku + </string> + <string name="calling card"> + wizytówki + </string> + <string name="landmark"> + ulubionego miejsca + </string> + <string name="legacy script"> + skryptu + </string> + <string name="clothing"> + ubrania + </string> + <string name="object"> + obieku + </string> + <string name="note card"> + notatki + </string> + <string name="folder"> + folderu + </string> + <string name="root"> + podstawy + </string> + <string name="lsl2 script"> + skryptu LSL2 + </string> + <string name="lsl bytecode"> + kodu LSL + </string> + <string name="tga texture"> + tekstury typu tga + </string> + <string name="body part"> + części ciaÅ‚a + </string> + <string name="snapshot"> + zdjÄ™cia + </string> + <string name="lost and found"> + Zgubione i Odnalezione + </string> + <string name="targa image"> + obrau typu targa + </string> + <string name="trash"> + Kosz + </string> + <string name="jpeg image"> + obrazu typu jpeg + </string> + <string name="animation"> + animacji + </string> + <string name="gesture"> + gesturki + </string> + <string name="simstate"> + simstate + </string> + <string name="favorite"> + ulubione + </string> + <string name="symbolic link"> + link </string> <string name="AvatarAway"> Åšpi @@ -413,7 +540,19 @@ Åadowanie... </string> <string name="worldmap_offline"> - NiedostÄ™pna + Mapa Åšwiata jest NiedostÄ™pna + </string> + <string name="worldmap_results_none_found"> + Miejsce Nieodnalezione. + </string> + <string name="Ok"> + OK + </string> + <string name="Premature end of file"> + Przedwczesna koÅ„cówka pliku + </string> + <string name="ST_NO_JOINT"> + PODSTAWA lub ÅÄ„CZNIK nieodnaleziona/y </string> <string name="whisper"> szepcze: @@ -421,6 +560,57 @@ <string name="shout"> krzyczy: </string> + <string name="ringing"> + ÅÄ…czenie z rozmowami gÅ‚osem w Å›wiecie... + </string> + <string name="connected"> + Połączenie uzyskane. + </string> + <string name="unavailable"> + Niestety, rozmowy gÅ‚osem sÄ… niedozwolone w tym miejscu. + </string> + <string name="hang_up"> + Połączenie rozmowy utracone. + </string> + <string name="ScriptQuestionCautionChatGranted"> + '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[OWNERNAME]', poÅ‚ożenie: [REGIONNAME] [REGIONPOS], pozwala Ci na: [PERMISSIONS]. + </string> + <string name="ScriptQuestionCautionChatDenied"> + '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[OWNERNAME]', poÅ‚ożenie: [REGIONNAME] [REGIONPOS], nie pozwala Ci na: [PERMISSIONS]. + </string> + <string name="ScriptTakeMoney"> + Zabiera Lindeny (L$) od Ciebie + </string> + <string name="ActOnControlInputs"> + Używaj klawiszy sterowania + </string> + <string name="RemapControlInputs"> + ZmieÅ„ klawisze sterowania + </string> + <string name="AnimateYourAvatar"> + Animuj Awatara + </string> + <string name="AttachToYourAvatar"> + Dołącz do Awatara + </string> + <string name="ReleaseOwnership"> + UsuÅ„ prawo wÅ‚asnoÅ›ci (zmieÅ„ na publiczne) + </string> + <string name="LinkAndDelink"> + ÅÄ…cz / odłącz z innymi obiektów + </string> + <string name="AddAndRemoveJoints"> + Dodaj / usuÅ„ połączenia z innymi obiektami + </string> + <string name="ChangePermissions"> + Ustaw zezwolenia + </string> + <string name="TrackYourCamera"> + Chodź za kamerÄ… + </string> + <string name="ControlYourCamera"> + Kontroluj kamerÄ™ + </string> <string name="SIM_ACCESS_PG"> 'PG' </string> @@ -439,8 +629,6 @@ <string name="land_type_unknown"> (nieznane) </string> - <string name="covenant_never_modified">Ostatnia Modyfikacja: (nigdy)</string> - <string name="covenant_modified">Ostatnia Modyfikacja: </string> <string name="all_files"> Wszystkie Pliki </string> @@ -486,26 +674,122 @@ <string name="choose_the_directory"> Wybierz Katalog </string> - <string name="accel-mac-control"> - ⌃ + <string name="AvatarSetNotAway"> + Ustaw Nie Åšpij </string> - <string name="accel-mac-command"> - ⌘ + <string name="AvatarSetAway"> + Åšpij </string> - <string name="accel-mac-option"> - ⌥ + <string name="AvatarSetNotBusy"> + Ustawiaj Nie Pracuj </string> - <string name="accel-mac-shift"> - ⇧ + <string name="AvatarSetBusy"> + Pracuj </string> - <string name="accel-win-control"> - Ctrl+ + <string name="shape"> + KsztaÅ‚t </string> - <string name="accel-win-alt"> - Alt+ + <string name="skin"> + Skórka </string> - <string name="accel-win-shift"> - Shift+ + <string name="hair"> + WÅ‚osy + </string> + <string name="eyes"> + Oczy + </string> + <string name="shirt"> + Koszulka + </string> + <string name="pants"> + Spodnie + </string> + <string name="shoes"> + Buty + </string> + <string name="socks"> + Skarpetki + </string> + <string name="jacket"> + Kurtka + </string> + <string name="gloves"> + RÄ™kawiczki + </string> + <string name="undershirt"> + Podkoszulka + </string> + <string name="underpants"> + Bielizna + </string> + <string name="skirt"> + Spódnica + </string> + <string name="alpha"> + Ubranie Przezroczyste + </string> + <string name="tattoo"> + Tatuaż + </string> + <string name="invalid"> + niewÅ‚aÅ›ciwa funkcja + </string> + <string name="next"> + NastÄ™pne + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + OgÅ‚oszenie Grupowe + </string> + <string name="GroupNotifyGroupNotices"> + OgÅ‚oszenia Grupowe + </string> + <string name="GroupNotifySentBy"> + WysÅ‚ane przez + </string> + <string name="GroupNotifyAttached"> + Załączone: + </string> + <string name="GroupNotifyViewPastNotices"> + Zobacz poprzednie zawiadomienia lub otrzymanen wiadomoÅ›ci tutaj. + </string> + <string name="GroupNotifyOpenAttachment"> + Otwórz Załącznik + </string> + <string name="GroupNotifySaveAttachment"> + Zapisz Załącznik + </string> + <string name="TeleportOffer"> + Oferta teleportacji + </string> + <string name="StartUpNotification"> + [%d] nowe zawiadomienie zostaÅ‚o wysÅ‚ane kiedy byÅ‚eÅ› w trybie oddalenia... + </string> + <string name="StartUpNotifications"> + [%d] nowe zawiadomienia zostaÅ‚y wysÅ‚ane kiedy byÅ‚eÅ› w trybie oddalenia... + </string> + <string name="OverflowInfoChannelString"> + Masz jeszcze [%d] powiadomieÅ„ + </string> + <string name="BodyPartsRightArm"> + Prawe RamiÄ™ + </string> + <string name="BodyPartsHead"> + GÅ‚owa + </string> + <string name="BodyPartsLeftArm"> + Lewe RamiÄ™ + </string> + <string name="BodyPartsLeftLeg"> + Lewa Noga + </string> + <string name="BodyPartsTorso"> + Tułów + </string> + <string name="BodyPartsRightLeg"> + Prawa Noga </string> <string name="GraphicsQualityLow"> Niska @@ -516,72 +800,2400 @@ <string name="GraphicsQualityHigh"> Wysoka </string> - - <!-- PARCEL_CATEGORY_UI_STRING --> - <string name="Linden Location">Linden Lokacja</string> - <string name="Adult">'Adult'</string> - <string name="Arts&Culture">Sztuka i Kultura</string> - <string name="Business">Biznes</string> - <string name="Educational">Edukacyjna</string> - <string name="Gaming">Gra</string> - <string name="Hangout">Poznawanie ludzi</string> - <string name="Newcomer Friendly">Przyjazne dla nowych</string> - <string name="Parks&Nature">Park i Natura</string> - <string name="Residential">Mieszkalna</string> - <string name="Shopping">Zakupy</string> - <string name="Other">Inna</string> - - <string name="ringing"> - ÅÄ…czenie z rozmowami gÅ‚osem w Å›wiecie... + <string name="LeaveMouselook"> + Wybierz ESC by powrócić do trybu widoku normalne + </string> + <string name="InventoryNoMatchingItems"> + Brak wyników w szafie dla wpisanego sÅ‚owa. + </string> + <string name="InventoryNoTexture"> + Nie posiadasz kopi +tej tekstury w swojej szafie + </string> + <string name="no_transfer" value=" (brak oddawania)"/> + <string name="no_modify" value=" (brak modyfikowania)"/> + <string name="no_copy" value=" (brak kopiowania)"/> + <string name="worn" value=" (załóż)"/> + <string name="link" value=" (link)"/> + <string name="broken_link" value=" (broken_link)"/> + <string name="LoadingContents"> + Åadowanie zawartoÅ›ci... + </string> + <string name="NoContents"> + Brak zawartoÅ›ci + </string> + <string name="WornOnAttachmentPoint" value=" (zaÅ‚ożony na [ATTACHMENT_POINT])"/> + <string name="Chat" value=" Czat :"/> + <string name="Sound" value=" DźwiÄ™k :"/> + <string name="Wait" value=" --- Zaczekaj :"/> + <string name="AnimFlagStop" value=" Zatrzymaj AnimacjÄ™ :"/> + <string name="AnimFlagStart" value=" Rozpocznij AnimacjÄ™ :"/> + <string name="Wave" value=" Wave"/> + <string name="HelloAvatar" value=" Witaj, Awatarze!"/> + <string name="ViewAllGestures" value=" Zobacz Wszystkie >>"/> + <string name="Animations" value=" Animacje,"/> + <string name="Calling Cards" value=" Wizytówki,"/> + <string name="Clothing" value=" Ubrania,"/> + <string name="Gestures" value=" Gesturki,"/> + <string name="Landmarks" value=" Ulubione Miejsca,"/> + <string name="Notecards" value=" Notki,"/> + <string name="Objects" value=" Obiekty,"/> + <string name="Scripts" value=" Skrypty,"/> + <string name="Sounds" value=" DźwiÄ™ki,"/> + <string name="Textures" value=" Tekstury,"/> + <string name="Snapshots" value=" ZdjÄ™cia,"/> + <string name="No Filters" value="Nie "/> + <string name="Since Logoff" value=" - od wylogowania siÄ™"/> + <string name="InvFolder My Inventory"> + Moja Szafa + </string> + <string name="InvFolder My Favorites"> + Moje Ulubione + </string> + <string name="InvFolder Library"> + Biblioteka + </string> + <string name="InvFolder Textures"> + Tekstury + </string> + <string name="InvFolder Sounds"> + DźwiÄ™ki </string> - <string name="connected"> - Połączenie uzyskane. + <string name="InvFolder Calling Cards"> + Wizytówki </string> - <string name="unavailable"> - Niestety, rozmowy gÅ‚osem sÄ… niedozwolone w tym miejscu. + <string name="InvFolder Landmarks"> + Ulubione Miejsca </string> - <string name="hang_up"> - Połączenie rozmowy utracone. + <string name="InvFolder Scripts"> + Skrypty + </string> + <string name="InvFolder Clothing"> + Ubrania + </string> + <string name="InvFolder Objects"> + Obiekty + </string> + <string name="InvFolder Notecards"> + Noty + </string> + <string name="InvFolder New Folder"> + Nowy Folder + </string> + <string name="InvFolder Inventory"> + Szafa + </string> + <string name="InvFolder Uncompressed Images"> + Nieskompresowane Obrazy + </string> + <string name="InvFolder Body Parts"> + Części CiaÅ‚a + </string> + <string name="InvFolder Trash"> + Kosz + </string> + <string name="InvFolder Photo Album"> + Album ze ZdjÄ™ciami + </string> + <string name="InvFolder Lost And Found"> + Zagubione i Odnalezione + </string> + <string name="InvFolder Uncompressed Sounds"> + Nieskompresowane DźwiÄ™ki + </string> + <string name="InvFolder Animations"> + Animacje + </string> + <string name="InvFolder Gestures"> + Gesturki + </string> + <string name="InvFolder favorite"> + Ulubione + </string> + <string name="InvFolder Current Outfit"> + Obecne Ubranie + </string> + <string name="InvFolder My Outfits"> + Moje Ubranie + </string> + <string name="InvFolder Friends"> + Znajomi + </string> + <string name="InvFolder All"> + Wszystkie + </string> + <string name="Buy"> + Kup + </string> + <string name="BuyforL$"> + Kup za L$ + </string> + <string name="Stone"> + KamieÅ„ + </string> + <string name="Metal"> + Metal + </string> + <string name="Glass"> + SzkÅ‚o + </string> + <string name="Wood"> + Drewno + </string> + <string name="Flesh"> + Tkanka + </string> + <string name="Plastic"> + Plastik + </string> + <string name="Rubber"> + Guma + </string> + <string name="Light"> + Lekkie + </string> + <string name="KBShift"> + Shift + </string> + <string name="KBCtrl"> + Ctrl + </string> + <string name="Chest"> + Klatka Piersiowa + </string> + <string name="Skull"> + Czaszka + </string> + <string name="Left Shoulder"> + Lewe RamiÄ™ + </string> + <string name="Right Shoulder"> + Prawe RamiÄ™ + </string> + <string name="Left Hand"> + Lewa DÅ‚oÅ„ + </string> + <string name="Right Hand"> + Prawa DÅ‚oÅ„ + </string> + <string name="Left Foot"> + Lewa Stopa + </string> + <string name="Right Foot"> + Prawa Stopa + </string> + <string name="Spine"> + KrÄ™gosÅ‚up + </string> + <string name="Pelvis"> + Mednica + </string> + <string name="Mouth"> + Usta + </string> + <string name="Chin"> + SzczÄ™ka + </string> + <string name="Left Ear"> + Lewe Ucho + </string> + <string name="Right Ear"> + Prawe Ucho + </string> + <string name="Left Eyeball"> + Lewe Oko + </string> + <string name="Right Eyeball"> + Prawe Oko + </string> + <string name="Nose"> + Nos + </string> + <string name="R Upper Arm"> + P RamiÄ™ + </string> + <string name="R Forearm"> + P PrzedramiÄ™ + </string> + <string name="L Upper Arm"> + L RamiÄ™ + </string> + <string name="L Forearm"> + L PrzedramiÄ™ + </string> + <string name="Right Hip"> + Prawe Biodro + </string> + <string name="R Upper Leg"> + P Udo + </string> + <string name="R Lower Leg"> + P Dolna Noga + </string> + <string name="Left Hip"> + Lewe Biodro + </string> + <string name="L Upper Leg"> + L Udo + </string> + <string name="L Lower Leg"> + L Dolna Noga + </string> + <string name="Stomach"> + Brzuch + </string> + <string name="Left Pec"> + Left Pec + </string> + <string name="Right Pec"> + Right Pec + </string> + <string name="YearsMonthsOld"> + [AGEYEARS] [AGEMONTHS] + </string> + <string name="YearsOld"> + [AGEYEARS] + </string> + <string name="MonthsOld"> + [AGEMONTHS] + </string> + <string name="WeeksOld"> + [AGEWEEKS] + </string> + <string name="DaysOld"> + [AGEDAYS] + </string> + <string name="TodayOld"> + DołączyÅ‚ dzisiaj + </string> + <string name="AgeYearsA"> + [COUNT] rok + </string> + <string name="AgeYearsB"> + [COUNT] lat + </string> + <string name="AgeYearsC"> + [COUNT] lat + </string> + <string name="AgeMonthsA"> + [COUNT] miesiÄ…c + </string> + <string name="AgeMonthsB"> + [COUNT] miesiÄ™cy + </string> + <string name="AgeMonthsC"> + [COUNT] miesiÄ™cy + </string> + <string name="AgeWeeksA"> + [COUNT] tydzieÅ„ + </string> + <string name="AgeWeeksB"> + [COUNT] tygodni + </string> + <string name="AgeWeeksC"> + [COUNT] tygodni + </string> + <string name="AgeDaysA"> + [COUNT] dzieÅ„ + </string> + <string name="AgeDaysB"> + [COUNT] dni + </string> + <string name="AgeDaysC"> + [COUNT] dni + </string> + <string name="GroupMembersA"> + [COUNT] czÅ‚onek + </string> + <string name="GroupMembersB"> + [COUNT] czÅ‚onków + </string> + <string name="GroupMembersC"> + [COUNT] czÅ‚onków + </string> + <string name="AcctTypeResident"> + Rezydent + </string> + <string name="AcctTypeTrial"> + Proces + </string> + <string name="AcctTypeCharterMember"> + Wyróżniony CzÅ‚onek + </string> + <string name="AcctTypeEmployee"> + Pracownik Linden Lab + </string> + <string name="PaymentInfoUsed"> + Dane Konta Używane + </string> + <string name="PaymentInfoOnFile"> + Dane PÅ‚atnicze na Koncie + </string> + <string name="NoPaymentInfoOnFile"> + Brak Danych na Koncie + </string> + <string name="AgeVerified"> + Weryfikacja Wieku Przeprowadzona + </string> + <string name="NotAgeVerified"> + Brak Weryfikacji Wieku + </string> + <string name="Center 2"> + Åšrodek 2 + </string> + <string name="Top Right"> + Prawa Góra + </string> + <string name="Top"> + Góra + </string> + <string name="Top Left"> + Lewa Góra + </string> + <string name="Center"> + Åšrodek + </string> + <string name="Bottom Left"> + Lewy Dół + </string> + <string name="Bottom"> + Dół + </string> + <string name="Bottom Right"> + Prawy Dół + </string> + <string name="CompileQueueDownloadedCompiling"> + Pobieranie zakoÅ„czone, rozpoczÄ™cie kompilacji + </string> + <string name="CompileQueueScriptNotFound"> + Skrypt nie zostaÅ‚ odnaleziony na serwerze. + </string> + <string name="CompileQueueProblemDownloading"> + Problem z pobieraniem + </string> + <string name="CompileQueueInsufficientPermDownload"> + Brak odpowiedniej zgody do pobrania skryptu. + </string> + <string name="CompileQueueInsufficientPermFor"> + Brak odpowiedniej zgody dla + </string> + <string name="CompileQueueUnknownFailure"> + Nieznany błąd podczas próby pobierania + </string> + <string name="CompileQueueTitle"> + PostÄ™p Rekompilacji + </string> + <string name="CompileQueueStart"> + rekompiluj + </string> + <string name="ResetQueueTitle"> + Zresetuj + </string> + <string name="ResetQueueStart"> + zresetuj + </string> + <string name="RunQueueTitle"> + Ustaw Uruchomiaj Progres + </string> + <string name="RunQueueStart"> + ustaw uruchom + </string> + <string name="NotRunQueueTitle"> + Ustaw Nie Uruchamiaj Progres + </string> + <string name="NotRunQueueStart"> + ustaw nie uruchamiaj + </string> + <string name="CompileSuccessful"> + Kompliacja zakoÅ„czona pomyÅ›lnie! + </string> + <string name="CompileSuccessfulSaving"> + Komplilacja zakoÅ„czona pomyÅ›lnie, zapisywanie... + </string> + <string name="SaveComplete"> + Zapisywanie zakoÅ„czone. + </string> + <string name="ObjectOutOfRange"> + Skrypt (obiekt poza zasiÄ™giem) + </string> + <string name="GodToolsObjectOwnedBy"> + Obiekt [OBJECT] należący [OWNER] + </string> + <string name="GroupsNone"> + żadne + </string> + <string name="Group" value=" (groupa)"/> + <string name="Unknown"> + (nieznane) + </string> + <string name="SummaryForTheWeek" value="Podsumowanie dla tego tygodnia, poczÄ…wszy od "/> + <string name="NextStipendDay" value="NastÄ™pna wypÅ‚ata bÄ™dzie w "/> + <string name="GroupIndividualShare" value=" Groupa UdziaÅ‚y Indywidualne"/> + <string name="Balance"> + Stan + </string> + <string name="Credits"> + Kredyty + </string> + <string name="Debits"> + Debet + </string> + <string name="Total"> + Suma + </string> + <string name="NoGroupDataFound"> + Brak informacji na temat podanej grupy + </string> + <string name="IMParentEstate"> + parent estate + </string> + <string name="IMMainland"> + główny + </string> + <string name="IMTeen"> + dla niepeÅ‚noletnich + </string> + <string name="RegionInfoError"> + błąd + </string> + <string name="RegionInfoAllEstatesOwnedBy"> + wszystkie majÄ…tki, które sÄ… wÅ‚asnoÅ›ciÄ… [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn"> + wszystkie majÄ…tki, które posiadasz + </string> + <string name="RegionInfoAllEstatesYouManage"> + wszystkie majÄ…tki, które nadzorujesz dla [OWNER] + </string> + <string name="RegionInfoAllowedResidents"> + Rezydenci majÄ…cy dostÄ™p: ([ALLOWEDAGENTS], max [MAXACCESS]) + </string> + <string name="RegionInfoAllowedGroups"> + Grupy majÄ…ce dostÄ™p: ([ALLOWEDGROUPS], max [MAXACCESS]) + </string> + <string name="CursorPos"> + Linia [LINE], Kolumna [COLUMN] + </string> + <string name="PanelDirCountFound"> + [COUNT] odnalezionych + </string> + <string name="PanelContentsNewScript"> + Nowy Skrypt + </string> + <string name="MuteByName"> + (wedÅ‚ug nazwy) + </string> + <string name="MuteAgent"> + (rezydenta) + </string> + <string name="MuteObject"> + (obiekt) + </string> + <string name="MuteGroup"> + (grupÄ™) + </string> + <string name="RegionNoCovenant"> + Brak umowy dla tego majÄ…tku. + </string> + <string name="RegionNoCovenantOtherOwner"> + Brak umowy dla tego majÄ…tku. Każda posiadÅ‚ość w tym majÄ…tku zostaÅ‚a sprzedana przez WÅ‚aÅ›ciciela majÄ…tku nie Linden Lab. Skontaktuj siÄ™ z wÅ‚aÅ›cicielem majÄ…tku w celu uzuskania szczegółów sprzedaży. + </string> + <string name="covenant_last_modified"> + Ostatnia Modyfikacja: + </string> + <string name="none_text" value=" (żadne) "/> + <string name="never_text" value=" (nigdy) "/> + <string name="GroupOwned"> + WÅ‚asność Grupy + </string> + <string name="Public"> + Publiczny + </string> + <string name="ClassifiedClicksTxt"> + Kliknij: [TELEPORT] teleportuj, [MAP] mapa, [PROFILE] profil + </string> + <string name="ClassifiedUpdateAfterPublish"> + (zostanie zaktualizowane po publikacji) + </string> + <string name="MultiPreviewTitle"> + PodglÄ…d + </string> + <string name="MultiPropertiesTitle"> + WÅ‚aÅ›ciwoÅ›ci + </string> + <string name="InvOfferAnObjectNamed"> + Obiekt o nazwie + </string> + <string name="InvOfferOwnedByGroup"> + należacy do grupy + </string> + <string name="InvOfferOwnedByUnknownGroup"> + należący do nieznanej grupy + </string> + <string name="InvOfferOwnedBy"> + należy do + </string> + <string name="InvOfferOwnedByUnknownUser"> + należący do nieznanego wÅ‚aÅ›ciciela + </string> + <string name="InvOfferGaveYou"> + oddany Tobie + </string> + <string name="InvOfferYouDecline"> + Odrzucony przez Ciebie + </string> + <string name="InvOfferFrom"> + od + </string> + <string name="GroupMoneyTotal"> + Suma + </string> + <string name="GroupMoneyBought"> + zakupione + </string> + <string name="GroupMoneyPaidYou"> + zapÅ‚ać sobie + </string> + <string name="GroupMoneyPaidInto"> + zapÅ‚ać do + </string> + <string name="GroupMoneyBoughtPassTo"> + kup dostÄ™p do + </string> + <string name="GroupMoneyPaidFeeForEvent"> + zapÅ‚ać opÅ‚atÄ™ za wydarzenie + </string> + <string name="GroupMoneyPaidPrizeForEvent"> + zapÅ‚ać za wydarzenia + </string> + <string name="GroupMoneyBalance"> + Stan + </string> + <string name="GroupMoneyCredits"> + Kredyty + </string> + <string name="GroupMoneyDebits"> + Debet + </string> + <string name="ViewerObjectContents"> + Zawartość + </string> + <string name="AcquiredItems"> + Zdobyte Obiekty + </string> + <string name="Cancel"> + Anuluj + </string> + <string name="UploadingCosts"> + Koszty zaÅ‚adowania [%s] + </string> + <string name="UnknownFileExtension"> + Nieznane rozszerzenie dla pliku [.%s] +Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + </string> + <string name="AddLandmarkNavBarMenu"> + Dodaj Ulubione Miejsce... + </string> + <string name="EditLandmarkNavBarMenu"> + Edytuj Ulubione Miejce... + </string> + <string name="accel-mac-control">⌃</string> + <string name="accel-mac-command">⌘</string> + <string name="accel-mac-option">⌥</string> + <string name="accel-mac-shift">⇧</string> + <string name="accel-win-control"> + Ctrl+ + </string> + <string name="accel-win-alt"> + Alt+ + </string> + <string name="accel-win-shift"> + Shift+ + </string> + <string name="FileSaved"> + Zapisane Pliki + </string> + <string name="Receiving"> + Otrzymane + </string> + <string name="AM"> + AM + </string> + <string name="PM"> + PM + </string> + <string name="PST"> + PST + </string> + <string name="PDT"> + PDT + </string> + <string name="Forward"> + Do Przodu + </string> + <string name="Left"> + W Lewo + </string> + <string name="Right"> + W Prawo + </string> + <string name="Back"> + Wróć + </string> + <string name="North"> + Północ + </string> + <string name="South"> + PoÅ‚udnie + </string> + <string name="West"> + Zachód + </string> + <string name="East"> + Wschód + </string> + <string name="Up"> + W GórÄ™ + </string> + <string name="Down"> + W Dół + </string> + <string name="Any Category"> + Każda Kategoria + </string> + <string name="Shopping"> + Zakupy + </string> + <string name="Land Rental"> + Wynajem Ziemi + </string> + <string name="Property Rental"> + Wynajem PosiadÅ‚oÅ›ci + </string> + <string name="Special Attraction"> + Specjalne Oferty + </string> + <string name="New Products"> + Nowe Produkty + </string> + <string name="Employment"> + Praca + </string> + <string name="Wanted"> + Poszukiwane + </string> + <string name="Service"> + Serwis + </string> + <string name="Personal"> + Personalne + </string> + <string name="None"> + Å»adne + </string> + <string name="Linden Location"> + Linden Lokacja + </string> + <string name="Adult"> + 'Adult' + </string> + <string name="Arts&Culture"> + Sztuka i Kultura + </string> + <string name="Business"> + Biznes + </string> + <string name="Educational"> + Edukacyjna + </string> + <string name="Gaming"> + Gra + </string> + <string name="Hangout"> + Poznawanie ludzi + </string> + <string name="Newcomer Friendly"> + Przyjazne dla nowych + </string> + <string name="Parks&Nature"> + Park i Natura + </string> + <string name="Residential"> + Mieszkalna + </string> + <string name="Stage"> + Scena + </string> + <string name="Other"> + Inna + </string> + <string name="Any"> + Jakiekolwiek + </string> + <string name="You"> + Ty + </string> + <string name="Multiple Media"> + Multi Media + </string> + <string name="Play Media"> + Uruchom/Zatrzymaj Media + </string> + <string name="MBCmdLineError"> + Podczas realizacji podanej komendy, wystÄ…piÅ‚ błąd. +Prosimy odwiedzić stronÄ™ internetowÄ…: http://wiki.secondlife.com/wiki/Client_parameters +Błąd: + </string> + <string name="MBCmdLineUsg"> + [APP_NAME] zastosowana komenda: + </string> + <string name="MBUnableToAccessFile"> + Aplikacja [APP_NAME] nie odnalazÅ‚a poszukiwanego pliku. + +Może być to spowodowane aktywnoÅ›ciÄ… kilku kopii oprogramowania w tej samej chwili lub Twój system błędnie odczytuje proces zakoÅ„czenia dla uruchomionuch aplikacji. +Jeżeli nadal otrzymujesz ten komunikat, uruchom swój komputer ponownie. +Jeżeli problem nadal wystÄ™puje, proponujemy caÅ‚kowite odinstalowanie aplikacji [APP_NAME] oraz ponownÄ… jej instalacjÄ™. + </string> + <string name="MBFatalError"> + Błąd Krytyczny + </string> + <string name="MBRequiresAltiVec"> + Aplikacja [APP_NAME] wymaga procesora z AltiVec (wersja G4 lub starsza). + </string> + <string name="MBAlreadyRunning"> + Aplikacja [APP_NAME] zostaÅ‚a już uruchomiona. +Sprawdź czy Twój pasek aplikacji nie ma zminimaliwoanych okien programu. +Jeżeli nadal otrzymujesz ten komunikat, uruchom swój komputer ponownie. + </string> + <string name="MBFrozenCrashed"> + Aplikacja [APP_NAME] znajduje siÄ™ w trybie zatrzymania lub zawieszenia po poprzedniej próbie uruchomienia. +Czy chcesz wysÅ‚ać raport na temat zawieszenia? + </string> + <string name="MBAlert"> + Powiadomienie + </string> + <string name="MBNoDirectX"> + Aplikacja [APP_NAME] nie wykryÅ‚a oprogramowania DirectX 9.0b lub wersji nowszej. +[APP_NAME] używa oprogramowaniau DirectX w celu detekcji dysku twardego i/lub nieaktualizowanych dysków twardych, które mogÄ… przyczynić siÄ™ do obniżenia stabilnoÅ›ci, wydajnoÅ›ci systemoweu oraz zawieszeÅ„. Jeżeli chcesz uruchomić aplikacjÄ™ [APP_NAME] bez problemów, doradzamy korzystanie z uruchomionym oprogramowaniem min. DirectX 9.0b. + +Czy chcesz kontynuować? + </string> + <string name="MBWarning"> + Ostrzeżenie + </string> + <string name="MBNoAutoUpdate"> + Automatyczna aktualizacja nie zostaÅ‚a jeszcze zaimplementowana dla platformy Linux. +Prosimy o pobranie najnowszej wersji ze strony internetowej: www.secondlife.com. + </string> + <string name="MBRegClassFailed"> + błąd rejestru + </string> + <string name="MBError"> + Błąd + </string> + <string name="MBFullScreenErr"> + Niemożliwość uruchomienia trybu peÅ‚noekranowego w proporcji [WIDTH] x [HEIGHT]. +Uruchomione w oknie. + </string> + <string name="MBDestroyWinFailed"> + Błąd w próbie wyłączenia podczas zamykania okna (DestroyWindow() failed) + </string> + <string name="MBShutdownErr"> + Błąd w próbie wyłączenia + </string> + <string name="MBDevContextErr"> + Brak możliwoÅ›ci stworzenia zawartoÅ›ci GL dla sterownika + </string> + <string name="MBPixelFmtErr"> + Brak odnalezienia wÅ‚aÅ›ciwego formatu pikselowego + </string> + <string name="MBPixelFmtDescErr"> + Brak otrzymania formatu pikselowego opisu + </string> + <string name="MBTrueColorWindow"> + Aplikacja [APP_NAME] wymaga ustawienia Koloru na (32-bit) do uruchomienia. +Sprawdź swoje ustawienia dla wyÅ›wietlacza i ustaw tryb koloru na 32-bity. + </string> + <string name="MBAlpha"> + Aplikacja [APP_NAME] nie może zostać uruchomiona z powodu niemożliwoÅ›ci dostania siÄ™ na kanaÅ‚ 8 bitowy alpha. NajczeÅ›ciej jest to spowodowane błędami sterowników karty video. +Upewnij siÄ™, że posiadasz najnowsze aktualizacje sterowników karty video. +Dodatkowo, sprawdź czy Twój monitor posiada poprawnÄ… konfiguracjÄ™ koloru (32-bity) w Panelu Kontroli > Display > Ustawienia. +Jeżeli nadal otrzymujesz ten komunikat, skontaktuj siÄ™ z [SUPPORT_SITE]. + </string> + <string name="MBPixelFmtSetErr"> + Brak ustawienie formatu pikselowego + </string> + <string name="MBGLContextErr"> + Brak możliwoÅ›ci stworzenia renderowania zawartoÅ›ci GL + </string> + <string name="MBGLContextActErr"> + Brak aktywacji renderowania zawartoÅ›ci GL + </string> + <string name="MBVideoDrvErr"> + Aplikacja [APP_NAME] nie może zostać uruchomiona, ponieważ Twoja karta video jest niepoprawnie zainstalowana, nieaktualizowana lub przeznaczona jest dla innego rodzaju dysków twardych. Upewnij siÄ™, że Twoja karta video zostaÅ‚a zaktualizowana poprawnie lub spróbuj zainstalować ponownie. + +Jeżeli nadal otrzymujesz ten komunikat, skontaktuj siÄ™ z [SUPPORT_SITE]. + </string> + <string name="5 O'Clock Shadow"> + CieÅ„ o godzinie 5 + </string> + <string name="All White"> + Wszystko BiaÅ‚e + </string> + <string name="Anime Eyes"> + Animuj Oczy + </string> + <string name="Arced"> + Obrócony + </string> + <string name="Arm Length"> + DÅ‚ugość Ramienia + </string> + <string name="Attached"> + Dołączone + </string> + <string name="Attached Earlobes"> + PÅ‚atki Uszu Dołączone + </string> + <string name="Back Bangs"> + Tylnie Pasemka + </string> + <string name="Back Bangs Down"> + Tylnie Pasemka w Dół + </string> + <string name="Back Bangs Up"> + Tylnie Pasemka do Góry + </string> + <string name="Back Fringe"> + Tylnia Grzywka + </string> + <string name="Back Hair"> + Back Hair + </string> + <string name="Back Hair Down"> + Back Hair Down + </string> + <string name="Back Hair Up"> + Back Hair Up + </string> + <string name="Baggy"> + Wypchane + </string> + <string name="Bangs"> + Pasemka + </string> + <string name="Bangs Down"> + Pasemka w Dół + </string> + <string name="Bangs Up"> + Pasemka do Góry + </string> + <string name="Beady Eyes"> + Oczy ZaÅ‚zawione + </string> + <string name="Belly Size"> + Rozmiar Brzucha + </string> + <string name="Big"> + Duży + </string> + <string name="Big Butt"> + Duży PoÅ›ladek + </string> + <string name="Big Eyeball"> + Duża GaÅ‚ka Oczna + </string> + <string name="Big Hair Back"> + Duże WÅ‚osy: z TyÅ‚u + </string> + <string name="Big Hair Front"> + Duże WÅ‚osy: z Przodu + </string> + <string name="Big Hair Top"> + Duże WÅ‚osy: z Góry + </string> + <string name="Big Head"> + Duża GÅ‚owa + </string> + <string name="Big Pectorals"> + Duże Mięśnie Piersiowe + </string> + <string name="Big Spikes"> + Duże Kolce + </string> + <string name="Black"> + Czarne + </string> + <string name="Blonde"> + Blond + </string> + <string name="Blonde Hair"> + WÅ‚osy Koloru Blond + </string> + <string name="Blush"> + Rumieniec + </string> + <string name="Blush Color"> + Kolor RumieÅ„ca + </string> + <string name="Blush Opacity"> + Intensywność RumieÅ„ca + </string> + <string name="Body Definition"> + Detale CiaÅ‚a + </string> + <string name="Body Fat"> + Zawartość Tkanki TÅ‚uszczowej + </string> + <string name="Body Freckles"> + Piegi + </string> + <string name="Body Thick"> + ZagÄ™szczenie CiaÅ‚a + </string> + <string name="Body Thickness"> + Grubość CiaÅ‚a + </string> + <string name="Body Thin"> + SzczupÅ‚ość + </string> + <string name="Bow Legged"> + Bow Legged + </string> + <string name="Breast Buoyancy"> + JÄ™drność Piersi + </string> + <string name="Breast Cleavage"> + OdstÄ™p MiÄ™dzy Piersiami + </string> + <string name="Breast Size"> + Rozmiar Piersi + </string> + <string name="Bridge Width"> + Szerokość + </string> + <string name="Broad"> + Szerokie + </string> + <string name="Brow Size"> + Rozmiar CzoÅ‚a + </string> + <string name="Bug Eyes"> + Bug Eyes + </string> + <string name="Bugged Eyes"> + Bugged Eyes + </string> + <string name="Bulbous"> + Bulwiasty + </string> + <string name="Bulbous Nose"> + Bulwiasty Nos + </string> + <string name="Bushy Eyebrows"> + Bujne Brwi + </string> + <string name="Bushy Hair"> + Bujne WÅ‚osy + </string> + <string name="Butt Size"> + Rozmiar PoÅ›ladków + </string> + <string name="bustle skirt"> + Bustle Skirt + </string> + <string name="no bustle"> + No Bustle + </string> + <string name="more bustle"> + More Bustle + </string> + <string name="Chaplin"> + Chaplin + </string> + <string name="Cheek Bones"> + KoÅ›ci Policzkowe + </string> + <string name="Chest Size"> + Rozmiar Klatki Piersiowej + </string> + <string name="Chin Angle"> + KÄ…t Podbródka + </string> + <string name="Chin Cleft"> + DoÅ‚ek w Podbródku + </string> + <string name="Chin Curtains"> + ZasÅ‚oniÄ™cie Podbródka + </string> + <string name="Chin Depth"> + DÅ‚ugość Podbródka + </string> + <string name="Chin Heavy"> + Ciężar Podbródka + </string> + <string name="Chin In"> + Podbródek WewnÄ…trz + </string> + <string name="Chin Out"> + Podbródek ZewnÄ™trzny + </string> + <string name="Chin-Neck"> + Podwójny Podbródek + </string> + <string name="Clear"> + Wyczyść + </string> + <string name="Cleft"> + Rozszczepienie + </string> + <string name="Close Set Eyes"> + Close Set Eyes + </string> + <string name="Closed"> + ZamkniÄ™te + </string> + <string name="Closed Back"> + ZamkniÄ™te z TyÅ‚u + </string> + <string name="Closed Front"> + ZamkniÄ™te z Przodu + </string> + <string name="Closed Left"> + Lewe Oko ZamkniÄ™te + </string> + <string name="Closed Right"> + Prawe Oko ZamkniÄ™te + </string> + <string name="Coin Purse"> + Coin Purse + </string> + <string name="Collar Back"> + KoÅ‚nierz z TyÅ‚u + </string> + <string name="Collar Front"> + KoÅ‚nierz z Przodu + </string> + <string name="Corner Down"> + Corner Down + </string> + <string name="Corner Normal"> + Corner Normal + </string> + <string name="Corner Up"> + Corner Up + </string> + <string name="Creased"> + Pognieciony + </string> + <string name="Crooked Nose"> + Skrzywienie Nosa + </string> + <string name="Cropped Hair"> + PrzyciÄ™te WÅ‚osy + </string> + <string name="Cuff Flare"> + Cuff Flare + </string> + <string name="Dark"> + Ciemne + </string> + <string name="Dark Green"> + Ciemne Zielone + </string> + <string name="Darker"> + Ciemniejsze + </string> + <string name="Deep"> + GlÄ™bokie + </string> + <string name="Default Heels"> + DomyÅ›lne Buty na Obcasie + </string> + <string name="Default Toe"> + DomyÅ›lny Palec + </string> + <string name="Dense"> + GÄ™stość + </string> + <string name="Dense hair"> + GÄ™ste WÅ‚osy + </string> + <string name="Double Chin"> + Podwójny Podbródek + </string> + <string name="Downturned"> + Downturned + </string> + <string name="Duffle Bag"> + Duffle Bag + </string> + <string name="Ear Angle"> + Odstawanie Uszu + </string> + <string name="Ear Size"> + Rozmiar Uszu + </string> + <string name="Ear Tips"> + WierzchoÅ‚ki Uszu + </string> + <string name="Egg Head"> + Jajowata GÅ‚owa + </string> + <string name="Eye Bags"> + Woreczek Åzowy + </string> + <string name="Eye Color"> + Kolor Oczu + </string> + <string name="Eye Depth"> + Głębokość Osadzenia Oczu + </string> + <string name="Eye Lightness"> + Ustawienie JasnoÅ›ci Oczu + </string> + <string name="Eye Opening"> + Oczy Otwarte + </string> + <string name="Eye Pop"> + Różnica w WielkoÅ›ci Oczu + </string> + <string name="Eye Size"> + Rozmiar Oczu + </string> + <string name="Eye Spacing"> + Rozstaw Oczu + </string> + <string name="Eyeball Size"> + Wielkość GaÅ‚ki Ocznej + </string> + <string name="Eyebrow Arc"> + Åuk Brwiowy + </string> + <string name="Eyebrow Density"> + GÄ™stość Brwi + </string> + <string name="Eyebrow Height"> + Wysokość Brwi + </string> + <string name="Eyebrow Points"> + KsztaÅ‚t Brwi + </string> + <string name="Eyebrow Size"> + Rozmiar Brwi + </string> + <string name="Eyelash Length"> + DÅ‚ugość RzÄ™s + </string> + <string name="Eyeliner"> + Eyeliner + </string> + <string name="Eyeliner Color"> + Kolor Eyeliner'a + </string> + <string name="Eyes Back"> + Eyes Back + </string> + <string name="Eyes Bugged"> + Eyes Bugged + </string> + <string name="Eyes Forward"> + Eyes Forward + </string> + <string name="Eyes Long Head"> + Eyes Long Head + </string> + <string name="Eyes Shear Left Up"> + Eyes Shear Left Up + </string> + <string name="Eyes Shear Right Up"> + Eyes Shear Right Up + </string> + <string name="Eyes Short Head"> + Eyes Short Head + </string> + <string name="Eyes Spread"> + Rozmieszczenie Oczu + </string> + <string name="Eyes Sunken"> + Eyes Sunken + </string> + <string name="Eyes Together"> + Oczy Razem + </string> + <string name="Face Shear"> + UsuniÄ™cie Twarzy + </string> + <string name="Facial Definition"> + Detale Twarzy + </string> + <string name="Far Set Eyes"> + Far Set Eyes + </string> + <string name="Fat"> + Grubość + </string> + <string name="Fat Head"> + Gruba GÅ‚owa + </string> + <string name="Fat Lips"> + Grube Usta + </string> + <string name="Fat Lower"> + Fat Lower + </string> + <string name="Fat Lower Lip"> + Fat Lower Lip + </string> + <string name="Fat Torso"> + Gruby Tułów + </string> + <string name="Fat Upper"> + Fat Upper + </string> + <string name="Fat Upper Lip"> + Fat Upper Lip + </string> + <string name="Female"> + Kobieta + </string> + <string name="Fingerless"> + Fingerless + </string> + <string name="Fingers"> + Palce + </string> + <string name="Flared Cuffs"> + Flared Cuffs + </string> + <string name="Flat"> + PÅ‚askość + </string> + <string name="Flat Butt"> + PÅ‚askie PoÅ›ladki + </string> + <string name="Flat Head"> + PÅ‚aska GÅ‚owa + </string> + <string name="Flat Toe"> + PÅ‚aski Palec + </string> + <string name="Foot Size"> + Rozmiar Stopy + </string> + <string name="Forehead Angle"> + KsztaÅ‚t CzoÅ‚a + </string> + <string name="Forehead Heavy"> + Ciężar CzoÅ‚a + </string> + <string name="Freckles"> + Piegi + </string> + <string name="Front Bangs Down"> + Przednie Pasemka w Dół + </string> + <string name="Front Bangs Up"> + Przednie Pasemka do Góry + </string> + <string name="Front Fringe"> + Przednia Grzywka + </string> + <string name="Front Hair"> + Front Hair + </string> + <string name="Front Hair Down"> + Front Hair Down + </string> + <string name="Front Hair Up"> + Przednie WÅ‚osy do Góry + </string> + <string name="Full Back"> + GÄ™stość WÅ‚osów po Bokach + </string> + <string name="Full Eyeliner"> + GÄ™sty Eyeliner + </string> + <string name="Full Front"> + GÄ™sty Przód + </string> + <string name="Full Hair Sides"> + GÄ™ste WÅ‚osy po Bokach + </string> + <string name="Full Sides"> + GÄ™ste Boki + </string> + <string name="Glossy"> + BÅ‚yszczÄ…ce + </string> + <string name="Glove Fingers"> + RÄ™kawiczki + </string> + <string name="Glove Length"> + DÅ‚ugość RÄ™kawiczek + </string> + <string name="Hair"> + WÅ‚osy + </string> + <string name="Hair Back"> + WÅ‚osy: z TyÅ‚u + </string> + <string name="Hair Front"> + WÅ‚osy: z Przodu + </string> + <string name="Hair Sides"> + Hair: Boki + </string> + <string name="Hair Sweep"> + Kierunek Zaczesania + </string> + <string name="Hair Thickess"> + Grubość WÅ‚osów + </string> + <string name="Hair Thickness"> + Grubość WÅ‚osów + </string> + <string name="Hair Tilt"> + PrzesuniÄ™cie Fryzury + </string> + <string name="Hair Tilted Left"> + PrzesuniÄ™cie Fryzury w Lewo + </string> + <string name="Hair Tilted Right"> + PrzesuniÄ™cie Fryzury w Prawo + </string> + <string name="Hair Volume"> + WÅ‚osy: ObjÄ™tość + </string> + <string name="Hand Size"> + Rozmiar DÅ‚oni + </string> + <string name="Handlebars"> + Handlebars + </string> + <string name="Head Length"> + DÅ‚ugość GÅ‚owy + </string> + <string name="Head Shape"> + KsztaÅ‚t GÅ‚owy + </string> + <string name="Head Size"> + Rozmiar GÅ‚owy + </string> + <string name="Head Stretch"> + RozciÄ…gniÄ™cie GÅ‚owy + </string> + <string name="Heel Height"> + Wysokość Obcasa + </string> + <string name="Heel Shape"> + Ksztalt Obcasa + </string> + <string name="Height"> + Wysokość + </string> + <string name="High"> + Wysoka + </string> + <string name="High Heels"> + Wysokie Obcasy + </string> + <string name="High Jaw"> + High Jaw + </string> + <string name="High Platforms"> + High Platforms + </string> + <string name="High and Tight"> + High and Tight + </string> + <string name="Higher"> + Wyżej + </string> + <string name="Hip Length"> + DÅ‚ugość Bioder + </string> + <string name="Hip Width"> + Szerokość Bioder + </string> + <string name="In"> + W + </string> + <string name="In Shdw Color"> + WewnÄ™trzny Kolor Cienia + </string> + <string name="In Shdw Opacity"> + WewnÄ™trzna Intensywność Cienia + </string> + <string name="Inner Eye Corner"> + WenwÄ™trzny Bok Oka + </string> + <string name="Inner Eye Shadow"> + WewnÄ™trzny CieÅ„ Oka + </string> + <string name="Inner Shadow"> + WewnÄ™trzny CieÅ„ + </string> + <string name="Jacket Length"> + DÅ‚ugość Kurtki + </string> + <string name="Jacket Wrinkles"> + Zmarszczki na Kurtce + </string> + <string name="Jaw Angle"> + Jaw Angle + </string> + <string name="Jaw Jut"> + Jaw Jut + </string> + <string name="Jaw Shape"> + Jaw Shape + </string> + <string name="Join"> + Złącz + </string> + <string name="Jowls"> + Jowls + </string> + <string name="Knee Angle"> + KÄ…t Kolana + </string> + <string name="Knock Kneed"> + Knock Kneed + </string> + <string name="Large"> + Duże + </string> + <string name="Large Hands"> + Duże DÅ‚onie + </string> + <string name="Left Part"> + Left Part + </string> + <string name="Leg Length"> + DÅ‚ugość Nogi + </string> + <string name="Leg Muscles"> + Umięśnione Nogi + </string> + <string name="Less"> + Mniej + </string> + <string name="Less Body Fat"> + Mniejsza ZawartoÅ›ci Tkanki TÅ‚uszczowej + </string> + <string name="Less Curtains"> + Less Curtains + </string> + <string name="Less Freckles"> + Mniej Piegów + </string> + <string name="Less Full"> + Less Full + </string> + <string name="Less Gravity"> + Mniej Ciężaru + </string> + <string name="Less Love"> + Less Love + </string> + <string name="Less Muscles"> + Mniej Mięśni + </string> + <string name="Less Muscular"> + Mniej Umięśnienia + </string> + <string name="Less Rosy"> + Less Rosy + </string> + <string name="Less Round"> + Mniej ZaaokrÄ…glone + </string> + <string name="Less Saddle"> + Less Saddle + </string> + <string name="Less Square"> + Mniej Kwadratowe + </string> + <string name="Less Volume"> + Mniej ObjÄ™toÅ›ci + </string> + <string name="Less soul"> + Less soul + </string> + <string name="Lighter"> + Lżejsze + </string> + <string name="Lip Cleft"> + Szerokość Rozszczepienia Górnej Wargi + </string> + <string name="Lip Cleft Depth"> + Głębokość Rozszczepienia Górnej Wargi + </string> + <string name="Lip Fullness"> + PeÅ‚ność Ust + </string> + <string name="Lip Pinkness"> + Róż Ust + </string> + <string name="Lip Ratio"> + Proporcje Ust + </string> + <string name="Lip Thickness"> + Grubość Ust + </string> + <string name="Lip Width"> + Szerokość Ust + </string> + <string name="Lipgloss"> + PoÅ‚ysk + </string> + <string name="Lipstick"> + Szminka + </string> + <string name="Lipstick Color"> + Kolor Szminki + </string> + <string name="Long"> + Dlugość + </string> + <string name="Long Head"> + DÅ‚uga GÅ‚owa + </string> + <string name="Long Hips"> + DÅ‚ugie Biodra + </string> + <string name="Long Legs"> + DÅ‚ugie Nogi + </string> + <string name="Long Neck"> + DÅ‚ugi Kark + </string> + <string name="Long Pigtails"> + DÅ‚ugi Warkocz + </string> + <string name="Long Ponytail"> + DÅ‚ugi Kucyk + </string> + <string name="Long Torso"> + DÅ‚ugi Tułów + </string> + <string name="Long arms"> + Dlugie Ramiona + </string> + <string name="Longcuffs"> + DÅ‚ugie RÄ™kawy + </string> + <string name="Loose Pants"> + Luźne Spodnie + </string> + <string name="Loose Shirt"> + Luźna Koszulka + </string> + <string name="Loose Sleeves"> + Luźne RÄ™kawy + </string> + <string name="Love Handles"> + Love Handles + </string> + <string name="Low"> + Nisko + </string> + <string name="Low Heels"> + Niskie Obcasy + </string> + <string name="Low Jaw"> + Niska SzczÄ™ka + </string> + <string name="Low Platforms"> + Low Platforms + </string> + <string name="Low and Loose"> + Niskie i Luźne + </string> + <string name="Lower"> + Niżej + </string> + <string name="Lower Bridge"> + Lower Bridge + </string> + <string name="Lower Cheeks"> + Lower Cheeks + </string> + <string name="Male"> + Mężczyzna + </string> + <string name="Middle Part"> + Część Åšrodkowa + </string> + <string name="More"> + WiÄ™cej + </string> + <string name="More Blush"> + More Blush + </string> + <string name="More Body Fat"> + WiÄ™cej ZawartoÅ›ci Tkanki TÅ‚uszczowej + </string> + <string name="More Curtains"> + More Curtains + </string> + <string name="More Eyeshadow"> + More Eyeshadow + </string> + <string name="More Freckles"> + WiÄ™cej Piegów + </string> + <string name="More Full"> + More Full + </string> + <string name="More Gravity"> + WiÄ™cej Ciężaru + </string> + <string name="More Lipstick"> + WiÄ™cej Szminki + </string> + <string name="More Love"> + More Love + </string> + <string name="More Lower Lip"> + WiÄ™cej Dolnej Wargi + </string> + <string name="More Muscles"> + WiÄ™cej Mięśni + </string> + <string name="More Muscular"> + WiÄ™cej Umięśnienia + </string> + <string name="More Rosy"> + More Rosy + </string> + <string name="More Round"> + WiÄ™cej ZaokrÄ…glenia + </string> + <string name="More Saddle"> + More Saddle + </string> + <string name="More Sloped"> + More Sloped + </string> + <string name="More Square"> + WiÄ™cej Kwadratowy + </string> + <string name="More Upper Lip"> + WiÄ™cej Górnej Wargi + </string> + <string name="More Vertical"> + More Vertical + </string> + <string name="More Volume"> + WiÄ™cej ObjÄ™toÅ›ci + </string> + <string name="More soul"> + More soul + </string> + <string name="Moustache"> + WÄ…sy + </string> + <string name="Mouth Corner"> + KÄ…ciki Ust + </string> + <string name="Mouth Position"> + Pozycja Ust + </string> + <string name="Mowhawk"> + Mowhawk + </string> + <string name="Muscular"> + Umięśnienie + </string> + <string name="Mutton Chops"> + Mutton Chops + </string> + <string name="Nail Polish"> + Lakier na Paznokciach + </string> + <string name="Nail Polish Color"> + Kolor Lakieru na Paznokciach + </string> + <string name="Narrow"> + WÄ…skie + </string> + <string name="Narrow Back"> + WÄ…ski TyÅ‚ + </string> + <string name="Narrow Front"> + WÄ…ski Przód + </string> + <string name="Narrow Lips"> + WÄ…skie Usta + </string> + <string name="Natural"> + Naturalne + </string> + <string name="Neck Length"> + DÅ‚ugość Karku + </string> + <string name="Neck Thickness"> + Grubość Karku + </string> + <string name="No Blush"> + No Blush + </string> + <string name="No Eyeliner"> + Brak Eyeliner's + </string> + <string name="No Eyeshadow"> + Brak Cienia pod PowiekÄ… + </string> + <string name="No Heels"> + Brak Obcasów + </string> + <string name="No Lipgloss"> + Brak PoÅ‚ysku + </string> + <string name="No Lipstick"> + Brak Szminki + </string> + <string name="No Part"> + No Part + </string> + <string name="No Polish"> + Brak Lakieru + </string> + <string name="No Red"> + Brak Czerwieni + </string> + <string name="No Spikes"> + Brak Szpiców + </string> + <string name="No White"> + Brak BiaÅ‚ego + </string> + <string name="No Wrinkles"> + Brak Zmarszczek + </string> + <string name="Normal Lower"> + Dół Normalny + </string> + <string name="Normal Upper"> + Góra Normalna + </string> + <string name="Nose Left"> + Nos w StronÄ™ LewÄ… + </string> + <string name="Nose Right"> + Nos w StronÄ™ PrawÄ… + </string> + <string name="Nose Size"> + Rozmiar Nosa + </string> + <string name="Nose Thickness"> + Grubość Nosa + </string> + <string name="Nose Tip Angle"> + KÄ…t Czubka Nosa + </string> + <string name="Nose Tip Shape"> + KsztaÅ‚t Czubka Nosa + </string> + <string name="Nose Width"> + Szerokość Nosa + </string> + <string name="Nostril Division"> + Przegroda Nosa + </string> + <string name="Nostril Width"> + Wielkość Dziurek w Nosie + </string> + <string name="Old"> + Stare + </string> + <string name="Opaque"> + Intensywność + </string> + <string name="Open"> + Otwarte + </string> + <string name="Open Back"> + Otwarte z TyÅ‚u + </string> + <string name="Open Front"> + Otwarte z Przodu + </string> + <string name="Open Left"> + Otwarte z Lewej + </string> + <string name="Open Right"> + Otwarte z Prawej + </string> + <string name="Orange"> + PomaraÅ„czowe + </string> + <string name="Out"> + ZewnÄ™trznie + </string> + <string name="Out Shdw Color"> + ZewnÄ™trzny Kolor Cienia + </string> + <string name="Out Shdw Opacity"> + ZewnÄ™trzna Grubość Cienia + </string> + <string name="Outer Eye Corner"> + ZewnÄ™trzny Bok Oka + </string> + <string name="Outer Eye Shadow"> + ZewnÄ™trzny CieÅ„ Oka + </string> + <string name="Outer Shadow"> + ZewnÄ™trzny CieÅ„ + </string> + <string name="Overbite"> + Overbite + </string> + <string name="Package"> + Package + </string> + <string name="Painted Nails"> + Pomalowane Paznokcie + </string> + <string name="Pale"> + Pale + </string> + <string name="Pants Crotch"> + Krocze Spodni + </string> + <string name="Pants Fit"> + Pants Fit + </string> + <string name="Pants Length"> + DÅ‚ugość Spodni + </string> + <string name="Pants Waist"> + Talia Spodni + </string> + <string name="Pants Wrinkles"> + Zmarszczki Spodni + </string> + <string name="Part"> + Część + </string> + <string name="Part Bangs"> + Part Bangs + </string> + <string name="Pectorals"> + Mięśnie Klatki Piersiowej + </string> + <string name="Pigment"> + Pigment + </string> + <string name="Pigtails"> + Pigtails + </string> + <string name="Pink"> + Różowe + </string> + <string name="Pinker"> + Róż + </string> + <string name="Platform Height"> + Platform Height + </string> + <string name="Platform Width"> + Platform Width + </string> + <string name="Pointy"> + Pointy + </string> + <string name="Pointy Heels"> + Pointy Heels + </string> + <string name="Pointy Toe"> + Pointy Toe + </string> + <string name="Ponytail"> + Kucyk + </string> + <string name="Poofy Skirt"> + Poofy Skirt + </string> + <string name="Pop Left Eye"> + Pop Left Eye + </string> + <string name="Pop Right Eye"> + Pop Right Eye + </string> + <string name="Puffy"> + Puffy + </string> + <string name="Puffy Eyelids"> + SpuchniÄ™te Powieki + </string> + <string name="Rainbow Color"> + Kolor TÄ™czy + </string> + <string name="Red Hair"> + Czerwone WÅ‚osy + </string> + <string name="Red Skin"> + Czerwona Skóra + </string> + <string name="Regular"> + Regularne + </string> + <string name="Regular Muscles"> + Regularne Mięśnie + </string> + <string name="Right Part"> + Prawa Cześć + </string> + <string name="Rosy Complexion"> + Kompleksowość Różu + </string> + <string name="Round"> + ZaokrÄ…glenie + </string> + <string name="Round Forehead"> + ZaokrÄ…glenie na Czole + </string> + <string name="Ruddiness"> + Rudowatość + </string> + <string name="Ruddy"> + Rudy + </string> + <string name="Rumpled Hair"> + WÅ‚osy w NieÅ‚adzie + </string> + <string name="Saddle Bags"> + Saddle Bags + </string> + <string name="Saddlebags"> + Saddlebags + </string> + <string name="Scrawny"> + Scrawny + </string> + <string name="Scrawny Leg"> + Scrawny Leg + </string> + <string name="Separate"> + Odzielne + </string> + <string name="Shading"> + Cieniowanie + </string> + <string name="Shadow hair"> + Cieniowane WÅ‚osy + </string> + <string name="Shallow"> + PÅ‚ytkie + </string> + <string name="Shear Back"> + Tylne UsuniÄ™cie WÅ‚osów + </string> + <string name="Shear Face"> + UsuniÄ™cie Twarzy + </string> + <string name="Shear Front"> + Przednie UsuniÄ™cie WÅ‚osów + </string> + <string name="Shear Left"> + UsuniÄ™cie z Lewej Strony + </string> + <string name="Shear Left Up"> + UsuniÄ™cie od Lewej Strony do Góry + </string> + <string name="Shear Right"> + UsuniÄ™cie z Prawej Strony + </string> + <string name="Shear Right Up"> + UsuniÄ™cie od Prawej Strony do Góry + </string> + <string name="Sheared Back"> + Tylnie UsuniÄ™cie WÅ‚osów + </string> + <string name="Sheared Front"> + Przednie UsuniÄ™cie WÅ‚osów + </string> + <string name="Shift Left"> + PrzesuÅ„ w Lewo + </string> + <string name="Shift Mouth"> + PrzesuÅ„ Usta + </string> + <string name="Shift Right"> + PrzesuÅ„ w Prawo + </string> + <string name="Shirt Bottom"> + Dolna Część Koszulki + </string> + <string name="Shirt Fit"> + Shirt Fit + </string> + <string name="Shirt Wrinkles"> + Zmarszczki na Koszulce + </string> + <string name="Shoe Height"> + Wysokość Buta + </string> + <string name="Short"> + Krótkie + </string> + <string name="Short Arms"> + Krótkie Ramiona + </string> + <string name="Short Legs"> + Krótkie Nogi + </string> + <string name="Short Neck"> + Krótki Kark + </string> + <string name="Short Pigtails"> + Short Pigtails + </string> + <string name="Short Ponytail"> + Krótki Kucyk + </string> + <string name="Short Sideburns"> + Krótkie Baczki + </string> + <string name="Short Torso"> + Krótki Tułów + </string> + <string name="Short hips"> + Krótkie Biodra + </string> + <string name="Shoulders"> + Ramiona + </string> + <string name="Side Bangs"> + Boczne Pasemka + </string> + <string name="Side Bangs Down"> + Boczne Pasemka w Dół + </string> + <string name="Side Bangs Up"> + Boczne Pasemka do Góry + </string> + <string name="Side Fringe"> + Boczna Grzywka + </string> + <string name="Sideburns"> + Baczki + </string> + <string name="Sides Hair"> + Boczne WÅ‚osy + </string> + <string name="Sides Hair Down"> + Boczne WÅ‚osy w Dół + </string> + <string name="Sides Hair Up"> + Boczne WÅ‚osy do Góry + </string> + <string name="Skinny"> + SmukÅ‚ość + </string> + <string name="Skinny Neck"> + SmukÅ‚y Kark + </string> + <string name="Skirt Fit"> + Skirt Fit + </string> + <string name="Skirt Length"> + DÅ‚ugość Spódnicy + </string> + <string name="Slanted Forehead"> + UkoÅ›ne CzoÅ‚o + </string> + <string name="Sleeve Length"> + DÅ‚ugość RÄ™kawów + </string> + <string name="Sleeve Looseness"> + Luźność RÄ™kawów + </string> + <string name="Slit Back"> + Slit: Back + </string> + <string name="Slit Front"> + Slit: Front + </string> + <string name="Slit Left"> + Slit: Left + </string> + <string name="Slit Right"> + Slit: Right + </string> + <string name="Small"> + MaÅ‚e + </string> + <string name="Small Hands"> + MaÅ‚e DÅ‚onie + </string> + <string name="Small Head"> + MaÅ‚a GÅ‚owa + </string> + <string name="Smooth"> + GÅ‚adkie + </string> + <string name="Smooth Hair"> + GÅ‚adkie WÅ‚osy + </string> + <string name="Socks Length"> + DÅ‚ugość Skarpetek + </string> + <string name="Some"> + Some + </string> + <string name="Soulpatch"> + Soulpatch + </string> + <string name="Sparse"> + Sparse + </string> + <string name="Spiked Hair"> + Kolczaste WÅ‚osy + </string> + <string name="Square"> + Kwadratowe + </string> + <string name="Square Toe"> + Kwadratowy Palec + </string> + <string name="Squash Head"> + ÅšciÅ›niÄ™ta GÅ‚owa + </string> + <string name="Squash/Stretch Head"> + ÅšciÅ›niÄ™ta/RozciÄ…gniÄ™ta GÅ‚owa + </string> + <string name="Stretch Head"> + RozciÄ…gniÄ™ta GÅ‚owa + </string> + <string name="Sunken"> + Sunken + </string> + <string name="Sunken Chest"> + Sunken Chest + </string> + <string name="Sunken Eyes"> + Sunken Eyes + </string> + <string name="Sweep Back"> + Sweep Back + </string> + <string name="Sweep Forward"> + Sweep Forward + </string> + <string name="Swept Back"> + Swept Back + </string> + <string name="Swept Back Hair"> + Swept Back Hair + </string> + <string name="Swept Forward"> + Swept Forward + </string> + <string name="Swept Forward Hair"> + Swept Forward Hair + </string> + <string name="Tall"> + Wysokość + </string> + <string name="Taper Back"> + Taper Back + </string> + <string name="Taper Front"> + Taper Front + </string> + <string name="Thick Heels"> + Grube Obcasy + </string> + <string name="Thick Neck"> + Gruby Kark + </string> + <string name="Thick Toe"> + Gruby Palec + </string> + <string name="Thickness"> + Grubość + </string> + <string name="Thin"> + WÄ…ski + </string> + <string name="Thin Eyebrows"> + WÄ…skie Brwi + </string> + <string name="Thin Lips"> + WÄ…skie Usta + </string> + <string name="Thin Nose"> + WÄ…ski Nos + </string> + <string name="Tight Chin"> + ObcisÅ‚y Podbródek + </string> + <string name="Tight Cuffs"> + ObcisÅ‚e RÄ™kawy + </string> + <string name="Tight Pants"> + ObciesÅ‚e Spodnie + </string> + <string name="Tight Shirt"> + ObcisÅ‚y Podkoszulek + </string> + <string name="Tight Skirt"> + Tight Skirt + </string> + <string name="Tight Sleeves"> + ObcisÅ‚e RÄ™kawy + </string> + <string name="Tilt Left"> + PrzesuÅ„ w Lewo + </string> + <string name="Tilt Right"> + PrzesuÅ„ w Prawo + </string> + <string name="Toe Shape"> + KsztaÅ‚t Palca + </string> + <string name="Toe Thickness"> + Grubość Palca + </string> + <string name="Torso Length"> + DÅ‚ugość TuÅ‚owia + </string> + <string name="Torso Muscles"> + Mięśnie TuÅ‚owia + </string> + <string name="Torso Scrawny"> + Wychudzony Tułów + </string> + <string name="Unattached"> + Nieprzyłączone + </string> + <string name="Uncreased"> + Uncreased + </string> + <string name="Underbite"> + Underbite + </string> + <string name="Unnatural"> + Nienaturalne + </string> + <string name="Upper Bridge"> + Górny Mostek + </string> + <string name="Upper Cheeks"> + Górne Policzki + </string> + <string name="Upper Chin Cleft"> + Roszczepienie Górnego Podbródka + </string> + <string name="Upper Eyelid Fold"> + Górna Powieka + </string> + <string name="Upturned"> + Zadarta + </string> + <string name="Very Red"> + Bardzo Czerwona + </string> + <string name="Waist Height"> + Wysokość Tali + </string> + <string name="Well-Fed"> + Well-Fed + </string> + <string name="White Hair"> + BiaÅ‚e WÅ‚osy + </string> + <string name="Wide"> + Szerokie + </string> + <string name="Wide Back"> + Szeroki TyÅ‚ + </string> + <string name="Wide Front"> + Szeroki Przód + </string> + <string name="Wide Lips"> + Szerokie Usta + </string> + <string name="Wild"> + Dzikość + </string> + <string name="Wrinkles"> + Zmarszczki + </string> + <string name="LocationCtrlAddLandmarkTooltip"> + Dodaj do Zapisanych Miejsc + </string> + <string name="LocationCtrlEditLandmarkTooltip"> + Edytuj Zapisane Miejsca + </string> + <string name="LocationCtrlInfoBtnTooltip"> + Zobacz wiÄ™cej szczegółów na temat obecnej lokalizacji + </string> + <string name="LocationCtrlComboBtnTooltip"> + Historia odwiedzonych miejsc + </string> + <string name="UpdaterWindowTitle"> + [APP_NAME] Aktualizacja + </string> + <string name="UpdaterNowUpdating"> + Pobieranie [APP_NAME]... + </string> + <string name="UpdaterNowInstalling"> + Instalizacja [APP_NAME]... + </string> + <string name="UpdaterUpdatingDescriptive"> + Twoja [APP_NAME] wersja klienta jest aktualizowana do najnowszej wersji. Prosimy o cierpliwość. + </string> + <string name="UpdaterProgressBarTextWithEllipses"> + Pobieranie aktualizacji... + </string> + <string name="UpdaterProgressBarText"> + Pobieranie aktualizacji + </string> + <string name="UpdaterFailDownloadTitle"> + Pobieranie aktualizacji nie powiodÅ‚o siÄ™ + </string> + <string name="UpdaterFailUpdateDescriptive"> + Podczas aktualizacji [APP_NAME] wystÄ…piÅ‚ błąd. Prosimy o pobranie najnowszej wersji klienta ze strony internetowej: www.secondlife.com. + </string> + <string name="UpdaterFailInstallTitle"> + Instalacja aktualizacji nie powiodÅ‚a siÄ™ + </string> + <string name="UpdaterFailStartTitle"> + Uruchomienie klienta nie powiodÅ‚o siÄ™ + </string> + <string name="IM_logging_string"> + -- Zapisywanie logów rozmowy aktywowane -- + </string> + <string name="IM_typing_start_string"> + [NAME] pisze... + </string> + <string name="Unnamed"> + (Brak nazwy) + </string> + <string name="IM_moderated_chat_label"> + (Moderacja: Komunikacja gÅ‚osowa wyłączona domyÅ›lnie) + </string> + <string name="IM_unavailable_text_label"> + Czat tekstowy jest nieaktywny dla tej rozmowy. + </string> + <string name="IM_muted_text_label"> + Twój tekst w czacie grupowym zostaÅ‚ wyłączony przez Moderatora Grupy. + </string> + <string name="IM_default_text_label"> + Klknij tutaj by wysÅ‚ać wiadomość prywatnÄ… (IM). + </string> + <string name="IM_to_label"> + Do + </string> + <string name="IM_moderator_label"> + (Moderator) </string> - <string name="ScriptQuestionCautionChatGranted"> - '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[OWNERNAME]', poÅ‚ożenie: [REGIONNAME] [REGIONPOS], pozwala Ci na: [PERMISSIONS]. - </string> - <string name="ScriptQuestionCautionChatDenied"> - '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[OWNERNAME]', poÅ‚ożenie: [REGIONNAME] [REGIONPOS], nie pozwala Ci na: [PERMISSIONS]. - </string> - <string name="ScriptTakeMoney"> - Zabiera Lindeny (L$) od Ciebie - </string> - <string name="ActOnControlInputs"> - Używaj klawiszy sterowania - </string> - <string name="RemapControlInputs"> - ZmieÅ„ klawisze sterowania - </string> - <string name="AnimateYourAvatar"> - Animuj Awatara - </string> - <string name="AttachToYourAvatar"> - Dołącz do Awatara - </string> - <string name="ReleaseOwnership"> - UsuÅ„ prawo wÅ‚asnoÅ›ci (zmieÅ„ na publiczne) - </string> - <string name="LinkAndDelink"> - ÅÄ…cz / odłącz z innymi obiektów - </string> - <string name="AddAndRemoveJoints"> - Dodaj / usuÅ„ połączenia z innymi obiektami - </string> - <string name="ChangePermissions"> - Ustaw zezwolenia - </string> - <string name="TrackYourCamera"> - Chodź za kamerÄ… - </string> - <string name="ControlYourCamera"> - Kontroluj kamerÄ™ - </string> <string name="only_user_message"> JesteÅ› jedynÄ… osobÄ… w tej konferencji. </string> @@ -624,31 +3236,4 @@ <string name="close_on_no_ability"> Nie posiadasz praw by uczestniczyć w tej konferencji. </string> - <string name="AcctTypeResident"> - Rezydent - </string> - <string name="AcctTypeTrial"> - Próbne - </string> - <string name="AcctTypeCharterMember"> - CzÅ‚onek-zalożyciel - </string> - <string name="AcctTypeEmployee"> - Pracownik Linden Lab - </string> - <string name="PaymentInfoUsed"> - Dane Konta Używane - </string> - <string name="PaymentInfoOnFile"> - Dane Konta DostÄ™pne - </string> - <string name="NoPaymentInfoOnFile"> - Brak Danych Konta - </string> - <string name="AgeVerified"> - Wiek Zweryfikowany - </string> - <string name="NotAgeVerified"> - Brak Weryfikacji Wieku - </string> </strings> diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml index 3384ae30b77..906978effec 100755 --- a/indra/newview/skins/default/xui/pl/teleport_strings.xml +++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml @@ -1,15 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> - WystÄ…piÅ‚ problem z teleportacjÄ…. Wyloguj siÄ™ i zaloguj ponownie. -JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: -www.secondlife.com/support. + Przepraszamy, ale pojawiÅ‚ siÄ™ błąd podczas Twojej próby teleportacji. By ponowić teleportacjÄ™, wyloguj siÄ™ i zaloguj ponownie. +Jeżeli nadal otrzymujesz komunikat błędu teleportacji, sprawdź [SUPPORT_SITE]. </message> <message name="invalid_region_handoff"> - WystÄ…piÅ‚ problem ze zmianÄ… regionu. Wyloguj siÄ™ i zaloguj ponownie. -JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: -www.secondlife.com/support. + Przepraszamy, ale pojawiÅ‚ siÄ™ błąd podczas próby zmiany regionu. By ponowić próbÄ™ przejÅ›cia na drugi region, wyloguj siÄ™ i zaloguj ponownie. +Jeżeli nadal otrzymujesz komunikat błędu podczas przejÅ›cia na drugi region, sprawdź [SUPPORT_SITE]. </message> <message name="blocked_tport"> Przepraszamy, teleportacja jest chwilowo niedostÄ™pna. Spróbuj jeszcze raz. -- GitLab From 5b53eb9ab1b04d7febe6fe9b01516ef725c4d2d7 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 18:06:54 -0500 Subject: [PATCH 374/521] Fixed reference to "first_tab" graphics. http://jira.secondlife.com/browse/EXT-4225 --- indra/newview/skins/default/xui/en/widgets/tab_container.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml index 3f5a4b8379d..32bfc505a19 100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -14,8 +14,8 @@ label_pad_left - padding to the left of tab button labels tab_top_image_selected="TabTop_Left_Selected" tab_bottom_image_unselected="Toolbar_Left_Off" tab_bottom_image_selected="Toolbar_Left_Selected" - tab_left_image_unselected="TabTop_Middle_Off" - tab_left_image_selected="TabTop_Middle_Selected"/> + tab_left_image_unselected="SegmentedBtn_Left_Disabled" + tab_left_image_selected="SegmentedBtn_Left_Off"/> <middle_tab tab_top_image_unselected="TabTop_Middle_Off" tab_top_image_selected="TabTop_Middle_Selected" tab_bottom_image_unselected="Toolbar_Middle_Off" @@ -29,3 +29,4 @@ label_pad_left - padding to the left of tab button labels tab_left_image_unselected="SegmentedBtn_Left_Disabled" tab_left_image_selected="SegmentedBtn_Left_Off"/> </tab_container> +--> -- GitLab From 6554708c1e16619d1a336260a85719bc6962c0cf Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sat, 30 Jan 2010 18:08:18 -0500 Subject: [PATCH 375/521] Removed extra closing comment tag. --- indra/newview/skins/default/xui/en/widgets/tab_container.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml index 32bfc505a19..597c4e83b60 100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -29,4 +29,3 @@ label_pad_left - padding to the left of tab button labels tab_left_image_unselected="SegmentedBtn_Left_Disabled" tab_left_image_selected="SegmentedBtn_Left_Off"/> </tab_container> ---> -- GitLab From c6d78de21abaa4dca92bb36e8173a13915680692 Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Sat, 30 Jan 2010 15:17:33 -0800 Subject: [PATCH 376/521] TEMPORARILY remove a bunch of untranslatable strings from the code, in order to create a Localization point that will not extract such strings. I will revert this commit momentarily. This is a workaround to the bug DEV- 38858. --- .../skins/default/xui/en/floater_aaa.xml | 57 - .../default/xui/en/floater_test_button.xml | 111 -- .../default/xui/en/floater_test_checkbox.xml | 154 -- .../default/xui/en/floater_test_combobox.xml | 158 -- .../xui/en/floater_test_inspectors.xml | 138 -- .../default/xui/en/floater_test_layout.xml | 91 -- .../xui/en/floater_test_line_editor.xml | 106 -- .../default/xui/en/floater_test_list_view.xml | 12 - .../xui/en/floater_test_navigation_bar.xml | 20 - .../xui/en/floater_test_radiogroup.xml | 84 - .../default/xui/en/floater_test_slider.xml | 101 -- .../default/xui/en/floater_test_spinner.xml | 97 -- .../xui/en/floater_test_text_editor.xml | 31 - .../default/xui/en/floater_test_textbox.xml | 254 --- .../default/xui/en/floater_test_widgets.xml | 451 ----- .../default/xui/en/floater_ui_preview.xml | 408 ----- .../newview/skins/default/xui/en/strings.xml | 1447 ----------------- 17 files changed, 3720 deletions(-) delete mode 100644 indra/newview/skins/default/xui/en/floater_aaa.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_button.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_checkbox.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_combobox.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_inspectors.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_layout.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_line_editor.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_list_view.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_radiogroup.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_slider.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_spinner.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_text_editor.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_textbox.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_test_widgets.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_ui_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml deleted file mode 100644 index 7236351f2e0..00000000000 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_minimize="false" - can_tear_off="false" - can_resize="true" - can_drag_on_left="false" - can_close="true" - can_dock="true" - bevel_style="in" - height="300" - layout="topleft" - name="Test Floater" - save_rect="true" - title="TEST FLOATER" - save_dock_state="true" - save_visibility="true" - single_instance="true" - width="320"> - <string name="nudge_parabuild" translate="false">Nudge 1</string> - <string name="test_the_vlt">This string CHANGE2 is extracted.</string> - <string name="testing_eli">Just a test. change here. more change.</string> - <chat_history - allow_html="true" - bg_readonly_color="ChatHistoryBgColor" - bg_writeable_color="ChatHistoryBgColor" - border_visible="false" - follows="all" - font="SansSerif" - left="1" - top="20" - layout="topleft" - height="260" - name="chat_history" - parse_highlights="true" - text_color="ChatHistoryTextColor" - text_readonly_color="ChatHistoryTextColor" - translate="false" - width="320"> -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. - </chat_history> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml deleted file mode 100644 index bf0a774e766..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_button.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="500" - layout="topleft" - name="floater_test_button" - help_topic="floater_test_button" - translate="false" - width="500"> - <button - height="23" - label="Generic Button" - layout="topleft" - left="10" - name="generic_button" - top="20" - width="150" /> - <button - bottom_delta="30" - height="23" - label="Bottom delta" - layout="topleft" - name="bottom_delta_button" /> - <button - bottom_delta="30" - height="23" - label="SansSerifSmall" - layout="topleft" - name="sans_serif_small_button" /> - <button - auto_resize="true" - bottom_delta="30" - height="23" - label="Auto Resize" - layout="topleft" - name="auto_resize_button" /> - <button - bottom_delta="30" - height="23" - is_toggle="true" - label="Click Change Label" - label_selected="New Label" - layout="topleft" - name="label_selected_button" /> - <button - bottom_delta="30" - height="23" - label="No Label Shadow" - label_shadow="false" - layout="topleft" - name="label_shadow_button" /> - <button - bottom_delta="30" - height="23" - label="EmphasisColor Label" - label_color="EmphasisColor" - layout="topleft" - name="label_color_button" /> - <button - bottom_delta="30" - height="23" - is_toggle="true" - label="Toggle" - label_color_selected="EmphasisColor" - label_selected="Toggle on" - layout="topleft" - name="label_color_selected_button" /> - <button - bottom_delta="30" - enabled="false" - height="23" - label="Disabled" - label_color_disabled="EmphasisColor" - label_selected="Selected" - layout="topleft" - name="label_color_disabled_button" /> - <button - bottom_delta="30" - height="23" - highlight_color="EmphasisColor" - label="Highlight" - layout="topleft" - name="highlight_color_button" /> - <button - bottom_delta="30" - height="23" - hover_glow_amount="0" - label="No Hover Glow" - layout="topleft" - name="hover_glow_amount_button" /> - <button - height="16" - image_selected="Move_Run_Off" - image_unselected="Move_Run_Off" - layout="topleft" - left="200" - name="image_button" - top="20" - width="16" /> - <button - height="16" - image_color="EmphasisColor" - image_selected="Move_Run_Off" - image_unselected="Move_Run_Off" - layout="topleft" - left_delta="0" - name="image_color_button" - top_pad="10" - width="16" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml deleted file mode 100644 index c828f6b284f..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ /dev/null @@ -1,154 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="400" - layout="topleft" - name="floater_test_checkbox" - help_topic="floater_test_checkbox" - translate="false" - width="400"> - <check_box - control_name="ShowStartLocation" - height="15" - initial_value="true" - label="Oh look it's a checkbox!" - layout="topleft" - left="10" - name="show_location_checkbox" - top="28" - width="256" /> - <check_box - height="15" - label="Minimal Checkbox" - layout="topleft" - left_delta="0" - name="minimal_checkbox" - top_pad="14" - width="150" /> - <check_box - enabled="false" - height="15" - label="Disabled Checkbox" - layout="topleft" - left_delta="0" - name="disabled_checkbox" - top_pad="14" - width="150" /> - <check_box - height="15" - label="Text Enabled Color" - layout="topleft" - left_delta="0" - name="text_enabled_color_checkbox" - text_enabled_color="EmphasisColor" - top_pad="14" - width="150" /> - <check_box - enabled="false" - height="15" - label="Text Disabled Color" - layout="topleft" - left_delta="0" - name="text_disabled_color_checkbox" - text_disabled_color="EmphasisColor_35" - top_pad="14" - width="150" /> - <check_box - height="15" - initial_value="true" - label="Initial Value Checked" - layout="topleft" - left_delta="0" - name="initial_value_checkbox" - top_pad="14" - width="150" /> - <check_box - font="Monospace" - height="15" - label="Font Monospace" - layout="topleft" - left_delta="0" - name="font_checkbox" - top_pad="14" - width="150" /> - -<chiclet_im_p2p - height="25" - name="im_p2p_chiclet" - show_speaker="false" - width="25"> - <chiclet_im_p2p.chiclet_button - height="25" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - name="chiclet_button" - tab_stop="false" - width="25"/> - <chiclet_im_p2p.speaker - auto_update="true" - draw_border="false" - height="25" - left="25" - name="speaker" - visible="false" - width="20" /> - <chiclet_im_p2p.avatar_icon - bottom="3" - follows="left|top|bottom" - height="20" - left="2" - mouse_opaque="false" - name="avatar_icon" - width="21" /> - <chiclet_im_p2p.unread_notifications - height="25" - font_halign="center" - left="25" - mouse_opaque="false" - name="unread" - text_color="white" - v_pad="5" - visible="false" - width="20"/> - <chiclet_im_p2p.new_message_icon - bottom="11" - height="14" - image_name="Unread_Chiclet" - left="12" - name="new_message_icon" - visible="false" - width="14" /> -</chiclet_im_p2p> - - -<chiclet_offer - height="25" - name="offer_chiclet" - width="25"> - <chiclet_offer.chiclet_button - height="25" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - name="chiclet_button" - tab_stop="false" - width="25"/> - <chiclet_offer.icon - bottom="3" - default_icon="Generic_Object_Small" - follows="all" - height="19" - left="3" - mouse_opaque="false" - name="chiclet_icon" - width="19" /> - <chiclet_offer.new_message_icon - bottom="11" - height="14" - image_name="Unread_Chiclet" - left="12" - name="new_message_icon" - visible="false" - width="14" /> -</chiclet_offer> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml deleted file mode 100644 index 45e2e34da76..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml +++ /dev/null @@ -1,158 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="400" - layout="topleft" - name="floater_test_combobox" - help_topic="floater_test_combobox" - translate="false" - width="400"> - <text - type="string" - length="1" - height="16" - layout="topleft" - left="10" - top="24" - width="200"> - Real world usage (login location): - </text> - <combo_box - allow_text_entry="true" - control_name="LoginLocation" - follows="left|bottom" - height="18" - layout="topleft" - left_delta="0" - max_chars="128" - name="start_location_combo" - top_pad="2" - width="155"> - <combo_box.item - label="My Last Location" - name="MyLastLocation" - value="last" /> - <combo_box.item - label="My Home" - name="MyHome" - value="home" /> - <combo_box.item - label="<Type region name>" - name="Typeregionname" - value="" /> - </combo_box> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="24" - width="200"> - Minimal combobox: - </text> - <combo_box - height="18" - layout="topleft" - left_delta="0" - name="minimal_combo" - top_pad="2" - width="150"> - <combo_box.item - label="First Item" - name="item1" - value="first" /> - <combo_box.item - label="Second Item" - name="item2" - value="second" /> - </combo_box> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="24" - width="200"> - Allow text input: - </text> - <combo_box - allow_text_entry="true" - height="18" - layout="topleft" - left_delta="0" - name="text_entry_combo" - top_pad="2" - width="150"> - <combo_box.item - label="First Item" - name="item1" - value="first" /> - <combo_box.item - label="Second Item" - name="item2" - value="second" /> - </combo_box> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="24" - width="200"> - Allow text input, default to second item: - </text> - <combo_box - allow_text_entry="true" - height="18" - initial_value="second" - layout="topleft" - left_delta="0" - name="text_entry_combo2" - top_pad="2" - width="150"> - <combo_box.item - label="First Item" - name="item1" - value="first" /> - <combo_box.item - label="Second Item" - name="item2" - value="second" /> - </combo_box> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="24" - width="200"> - Two character max input: - </text> - <combo_box - allow_text_entry="true" - height="16" - layout="topleft" - left_delta="0" - max_chars="2" - name="state_combo" - top_pad="4" - width="150"> - <combo_box.item - label="CA" - name="item1" - value="ca" /> - <combo_box.item - label="NY" - name="item2" - value="ny" /> - <combo_box.item - label="TX" - name="item3" - value="tx" /> - </combo_box> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml deleted file mode 100644 index 0f5c5f2be07..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="false" - height="400" - layout="topleft" - name="floater_test_inspectors" - help_topic="floater_test_inspectors" - title="TEST INSPECTORS" - translate="false" - width="400"> - <text - height="20" - left="10" - name="test_inspectors" - top="30" - width="300"> - Click to spawn an inspector: - </text> - <button - name="avatar_2d_btn1" - label="Avatar 2D" - top="50" - left="10" - height="20" - width="100" - commit_callback.function="ShowAvatarInspector" - commit_callback.parameter="22df1dcb-810a-4975-aab9-0159958fe155" /> - <!-- InspectorA Tester --> - <button - name="avatar_2d_btn5" - label="Avatar 2D" - top_pad="10" - left="10" - height="20" - width="100" - commit_callback.function="ShowAvatarInspector" - commit_callback.parameter="927e68e0-e52d-4bb8-b1a9-add97a57c86a" /> - <!-- InspectorB Tester --> - <button - name="avatar_2d_btn2" - label="Avatar 2D" - top_pad="10" - left="10" - height="20" - width="100" - commit_callback.function="ShowAvatarInspector" - commit_callback.parameter="9a2300ca-e251-45dd-bb61-e33139f6e4eb" /> - <!-- InspectorC Tester --> - <button - name="avatar_2d_btn3" - label="Avatar 2D" - top_pad="10" - left="10" - height="20" - width="100" - commit_callback.function="ShowAvatarInspector" - commit_callback.parameter="8024f082-34cc-48a3-a42e-c42f345efd74" /> - <!-- jarvtest Bombastic 2009-10-3 --> - <button - name="avatar_2d_btn4" - label="Avatar 2D" - top_pad="10" - left="10" - height="20" - width="100" - commit_callback.function="ShowAvatarInspector" - commit_callback.parameter="e7dc3c83-1e11-4fa7-beeb-4b18adfb4efa" /> - <button - name="avatar_3d_btn" - label="Avatar 3D" - top="50" - left="150" - height="20" - width="100"/> - <button - name="object_2d_btn" - label="Object 2D" - top_pad="10" - left_delta="0" - height="20" - width="100"/> - <button - name="object_3d_btn" - label="Object 3D" - top_pad="10" - left_delta="0" - height="20" - width="100" - commit_callback.function="ShowObjectInspector" - commit_callback.parameter="" /> - <button - name="group_btn" - label="Group" - top_pad="10" - left_delta="0" - height="20" - width="100" - commit_callback.function="ShowGroupInspector" - commit_callback.parameter="" /> - <button - name="place_btn" - label="Place" - top_pad="10" - left_delta="0" - height="20" - width="100"/> - <button - name="event_btn" - label="Event" - top_pad="10" - left_delta="0" - height="20" - width="100"/> - <text - follows="left|top" - font="SansSerif" - height="20" - left="0" - max_length="65536" - name="slurl" - top_pad="4" - width="150"> - secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect - </text> - <text - follows="left|top" - font="SansSerif" - height="20" - left="0" - max_length="65536" - name="slurl_group" - top_pad="4" - width="150"> - secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect - </text> - -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml deleted file mode 100644 index 94f7e0b7980..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_layout.xml +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="500" - layout="topleft" - name="floater_test_layout" - help_topic="floater_test_layout" - translate="false" - width="500"> - <text - type="string" - length="1" - height="16" - layout="topleft" - left="10" - top="84" - width="200"> - bottom 400 left 10 - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="4" - width="200"> - Bottom delta -20 - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_delta="0" - top_pad="64" - width="200"> - bottom 300 left 10, should delta_bottom - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_pad="40" - top_delta="0" - width="200"> - bottom 300 left 250, should delta_left - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left="10" - top="204" - width="200"> - bottom 280 left 10, should absolute position - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left_pad="40" - top_delta="-2" - width="200"> - bottom 282 left 250, should delta_left and delta_bottom - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left="10" - top="234" - width="200"> - bottom 250 left 10, should absolute position - </text> - <text - type="string" - length="1" - height="16" - layout="topleft" - left="250" - top="244" - width="200"> - bottom 240 left 250, should absolute position - </text> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml deleted file mode 100644 index 2894ad2a325..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="500" - layout="topleft" - name="floater_test_line_editor" - help_topic="floater_test_line_editor" - translate="false" - width="400"> - <line_editor - height="20" - layout="topleft" - left="10" - name="enabled_line_editor" - top="40" - tool_tip="enabled line editor" - width="200"> - Enabled line editor - </line_editor> - <line_editor - height="20" - layout="topleft" - left_delta="0" - name="ascii_line_editor" - prevalidate_callback="ascii" - tool_tip="ascii line editor" - top_pad="10" - width="200"> - ASCII only line editor - </line_editor> - <line_editor - enabled="false" - height="20" - layout="topleft" - left_delta="0" - name="disabled_line_editor" - top_pad="10" - tool_tip="disabled line editor" - width="200"> - Disabled line editor - </line_editor> - <line_editor - height="20" - layout="topleft" - left_delta="0" - name="enabled_colored_line_editor" - text_color="1 0 0 1" - top_pad="10" - tool_tip="enabled colored line editor" - width="200"> - Enabled red-text line editor - </line_editor> - <line_editor - enabled="false" - height="20" - layout="topleft" - left_delta="0" - name="disabled_colored_line_editor" - text_readonly_color="1 0 0 1" - top_pad="10" - tool_tip="disabled colored line editor" - width="200"> - Disabled red-text line editor - </line_editor> - <line_editor - height="20" - left_delta="0" - name="left_pad_editor" - text_pad_left="25" - top_pad="10" - width="200"> - 25 px left text padding - </line_editor> - <line_editor - height="20" - left_delta="0" - name="left_pad_editor" - text_pad_right="75" - top_pad="10" - width="200"> - 75 px right text padding - </line_editor> - <line_editor - height="20" - left_delta="0" - name="left_pad_editor" - text_pad_left="25" - text_pad_right="75" - top_pad="10" - width="200"> - 25 px left 75 px right text padding - </line_editor> - <!-- "search_editor" is a specialized line_editor that shows read-only - help text until the user clicks in the widget. --> - <search_editor - follows="left|top|right" - height="20" - label="Type here to search" - layout="topleft" - left_delta="0" - name="search editor" - tool_tip="search editor" - top_pad="10" - width="200" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml deleted file mode 100644 index 32ccc31dfd4..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="400" - layout="topleft" - name="floater_test_list_view" - help_topic="floater_test_list_view" - translate="false" - width="400"> - <!-- intentionally empty --> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml deleted file mode 100644 index f4a50ecc962..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="200" - layout="topleft" - name="floater_test_navigation_bar" - help_topic="floater_test_navigation_bar" - translate="false" - width="900"> - <panel - name="navigation_bar" - filename="panel_navigation_bar.xml" - left="10" - right="-10" - top="30" - height="100" - border="true" - /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml deleted file mode 100644 index db14ecae831..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="400" - layout="topleft" - name="floater_test_radiogroup" - help_topic="floater_test_radiogroup" - translate="false" - width="400"> - <radio_group - height="54" - layout="topleft" - left="10" - name="parcel_voice_channel" - top="46" - width="219"> - <radio_item - height="16" - label="Use the Estate spatial channel" - layout="topleft" - left="3" - name="Estate" - top="3" - width="463" /> - <radio_item - height="16" - label="Use a private spatial channel" - layout="topleft" - left_delta="0" - name="Private" - top_delta="16" - width="463" /> - <radio_item - height="16" - label="Disable spatial audio on this parcel" - layout="topleft" - left_delta="0" - name="Disabled" - top_delta="16" - width="463" /> - </radio_group> - <radio_group - height="50" - layout="topleft" - left_delta="0" - name="simple_radio_group" - top_pad="50" - width="150"> - <radio_item - bottom="20" - height="16" - label="Label in label attribute" - layout="topleft" - name="label_radio_item" /> - <radio_item - bottom_delta="20" - height="16" - label="Label in text contents" - layout="topleft" - name="contents_radio_item" /> - </radio_group> - <radio_group - draw_border="false" - height="50" - layout="topleft" - left_delta="0" - name="no_border_radio_group" - top_pad="50" - width="150"> - <radio_item - bottom="20" - height="16" - label="No Border Foo" - layout="topleft" - name="foo_radio_item" /> - <radio_item - bottom_delta="20" - height="16" - label="No Border Bar" - layout="topleft" - name="bar_item" /> - </radio_group> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml deleted file mode 100644 index 20bd555a032..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_slider.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="500" - layout="topleft" - name="floater_test_slider" - help_topic="floater_test_slider" - translate="false" - width="450"> - <slider - height="20" - label="Generic Slider" - layout="topleft" - left="10" - name="generic_slider" - top="40" - width="250" /> - <slider - height="20" - label="Callback Slider" - layout="topleft" - left_delta="0" - name="callback_slider" - top_pad="20" - width="400"> - <slider.mouse_up_callback - function="Test.TestCallback" - parameter="test" /> - </slider> - <slider - height="20" - increment="1" - initial_value="2.0" - label="Value Slider" - layout="topleft" - left_delta="0" - max_val="5" - min_val="1" - name="value_slider" - top_pad="20" - width="250" /> - <slider - height="20" - label="Mini Slider 1" - layout="topleft" - left_delta="0" - name="mini_slider_1" - top_pad="20" - width="200" /> - <slider - height="20" - label="Mini Slider 2" - layout="topleft" - left_pad="20" - name="mini_slider_2" - top_delta="0" - width="200" /> - <slider_bar - bottom="320" - height="100" - left="20" - name="slider_bar_vertical" - orientation="vertical" - width="20" /> - <slider_bar - bottom="300" - height="20" - increment="1" - initial_value="2.0" - label="Slider Bar" - layout="topleft" - max_val="5" - min_val="1" - left_pad="20" - name="slider_bar" - width="300" /> - <slider - bottom="360" - decimal_digits="1" - height="20" - label="Red Slider" - label_width="100" - layout="topleft" - name="red_slider" - text_color="red" - text_width="40" /> - <slider - width ="140" - bottom="490" - decimal_digits="1" - height="100" - left="20" - label="Red Slider Vertical" - label_width="100" - layout="topleft" - name="red_slider_vertical" - text_color="red" - orientation="vertical" - text_width="20" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml deleted file mode 100644 index acd49aa492e..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="400" - layout="topleft" - name="floater_test_spinner" - help_topic="floater_test_spinner" - translate="false" - width="450"> - <spinner - height="32" - label="Generic Spinner" - layout="topleft" - left="10" - label_width="100" - name="generic_spinner" - top="40" - width="350" /> - <spinner - height="20" - label="Callback Spinner" - label_width="100" - layout="topleft" - left_delta="0" - name="callback_spinner" - top_pad="20" - width="400" /> - <spinner - height="20" - label="Colorful Spinner" - layout="topleft" - left_delta="0" - name="colorful_spinner" - top_pad="20" - width="250" /> - <spinner - height="20" - increment="1" - initial_value="2.0" - label="Value Spinner" - layout="topleft" - left_delta="0" - max_val="5" - min_val="1" - name="value_spinner" - top_pad="20" - width="250" /> - <spinner - height="20" - label="Mini Spinner 1" - layout="topleft" - left_delta="0" - name="mini_spinner_1" - top_pad="20" - width="200" /> - <spinner - height="20" - label="Mini Spinner 2" - layout="topleft" - left_pad="20" - name="mini_spinner_2" - top_delta="0" - width="200" /> - <spinner - control_name="RenderFogRatio" - decimal_digits="1" - height="20" - label="Control Spinner" - layout="topleft" - left="10" - max_val="20" - min_val="10" - name="control_spinner" - top="260" - width="250" /> - <spinner - follows="left" - height="20" - label="Follows Left" - label_width="85" - layout="topleft" - left_delta="0" - name="follows_left" - top_pad="20" - width="250" /> - <spinner - follows="right" - height="20" - label="Follows Right" - label_width="85" - layout="topleft" - left_delta="0" - name="follows_right" - top_pad="20" - width="250" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml deleted file mode 100644 index dc8f00d5f36..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="600" - layout="topleft" - name="floater_test_text_editor" - translate="false" - width="800"> - <text_editor - height="50" - follows="top|left|bottom" - left="10" - name="test_text_editor" - tool_tip="text editor" - top="25" - width="200"> - Text Editor - </text_editor> - <text_editor - height="50" - follows="top|left|bottom" - font="SansSerif" - left="10" - name="test_text_editor" - tool_tip="text editor" - top_pad="10" - width="200"> - This contains long text and should scroll horizontally to the right - </text_editor> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml deleted file mode 100644 index 2df9bb35fe8..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ /dev/null @@ -1,254 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="600" - layout="topleft" - name="floater_test_textbox" - help_topic="floater_test_textbox" - translate="false" - width="800"> - <text - type="string" - length="1" - height="90" - layout="topleft" - left="10" - top_pad="30" - width="300"> - First line of multiple lines -Second line of multiple lines -Third line of multiple lines -Fourth line of multiple lines -Fifth line of multiple lines - </text> - <text - clip_partial="true" - top_pad="10" - left="10" - width="267" - height="28" - layout="topleft" - follows="right|left" - text_color="white" - use_ellipses="true" - word_wrap="true" - mouse_opaque="false" - name="title" > - This text has word_wrap set true, use_ellipses set true, and clip_partial set true, so it should wrap around, spilling over to the last line, then clip the last partial line and show ellipses to indicate there is more text - </text> - - <text - font="SansSerif" - font.style="BOLD" - height="10" - layout="topleft" - left_delta="0" - top_pad="10" - width="300"> - SansSerif BOLD - </text> - <text - font="SansSerif" - font.style="BOLD|UNDERLINE" - height="10" - layout="topleft" - left_delta="0" - top_pad="10" - width="300"> - SansSerif BOLD UNDERLINE - </text> - <text - bottom="390" - left="10" - name="right_aligned_text" - width="300" - halign="right" - top_pad="10"> - Right aligned text - </text> - <text - bottom="390" - left="10" - name="centered_text" - width="300" - halign="center" - top_pad="10"> - Centered text - </text> - <text - left="10" - name="left_aligned_text" - width="300" - halign="left" - top_pad="10"> - Left aligned text - </text> - <text - left="10" - name="v_pad_text" - height="40" - width="300" - halign="left" - top_pad="10" - v_pad="10"> - v_pad = 10, height = 40 - </text> - <text - left="10" - name="v_pad_text" - height="40" - width="300" - halign="left" - top_pad="10" - h_pad="30"> - h_pad = 30, height = 40 - </text> - <text - top_pad="10" - left="10" - right="-10" - height="20" - follows="top|left" - font.name="SansSerifSmall" - name="test_text10" - tool_tip="text"> - SansSerifSmall - The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. - </text> - <text - top_pad="10" - left="10" - right="-10" - height="25" - follows="top|left" - font.name="SansSerifMedium" - name="test_text11" - tool_tip="text"> - SansSerif - The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. - </text> - <text - top_pad="10" - left="10" - right="-10" - follows="top|left" - height="26" - font.name="SansSerifLarge" - name="test_text12" - tool_tip="text"> - SansSerifLarge - The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. - </text> - <text - top_pad="10" - left="10" - height="35" - right="-10" - follows="top|left" - font.name="SansSerifHuge" - name="test_text13" - tool_tip="text"> - SansSerifHuge - The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. - </text> - -<!-- next column --> - <text_editor - height="50" - follows="top|left|bottom" - left="400" - name="test_text_editor" - tool_tip="text editor" - top="25" - width="200"> - Text Editor - </text_editor> - <text_editor - height="50" - follows="top|left|bottom" - left_delta="0" - name="long_text_editor" - tool_tip="text editor" - top_pad="10" - width="200"> -Text Editor -with multiple -lines of text -and hence a -scroll bar - </text_editor> - <text_editor - height="50" - follows="top|left|bottom" - left_delta="0" - max_length="65536" - name="blob_text_editor" - tool_tip="text editor" - top_pad="10" - width="200" - word_wrap="true"> -Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. - </text_editor> - <text_editor - height="50" - follows="top|left|bottom" - font="Monospace" - left_delta="0" - name="monospace_text_editor" - tool_tip="text editor" - top_pad="10" - width="200"> -Text Editor -with multiple -lines of text -and hence a -scroll bar gjyrrr - </text_editor> - <text_editor - border_visible="true" - height="50" - follows="top|left|bottom" - font="Monospace" - left_delta="0" - name="monospace_text_editor" - tool_tip="text editor" - top_pad="10" - width="200"> -Text Editor -with multiple -lines of text -and hence a -scroll bar gjyrrr - </text_editor> - <text_editor - height="50" - follows="top|left|bottom" - font="SansSerif" - left_delta="0" - name="sansserif_text_editor" - tool_tip="text editor" - top_pad="10" - width="200"> -Text Editor -with multiple -lines of text -and hence a -scroll bar gjyrrr - </text_editor> - - <text - height="40" - follows="top|left|bottom" - layout="topleft" - name="test_text_box" - tool_tip="text box" - top_pad="5" - width="200"> -Text box -with -multiple lines -and too many lines -to actually fit - </text> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml deleted file mode 100644 index 447bd7f599b..00000000000 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ /dev/null @@ -1,451 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<!-- Sample "floater" window with examples of common widgets. - - Notes: - XML UI (XUI) files use spaces for indentation, not tabs. - All position values are in pixels. - For now, each widget must contain attribute layout="topleft". - 0,0 is the top-left corner of the floater. - Each widget must have a unique name attribute. - If a widget is aligned with the one before it, use relative positioning: - top_pad - top_delta - left_pad - left_delta - Otherwise specify location with left and top attributes. ---> -<floater - legacy_header_height="18" - can_dock="true" - can_resize="true" - title="TEST FLOATER" - height="500" - min_width="850" - min_height="500" - layout="topleft" - name="floater_test_widgets" - help_topic="floater_test_widgets" - translate="false" - width="850"> - - <!-- Strings are used by C++ code for localization. They are not visible - unless the C++ code uses them to fill in another widget. --> - <floater.string - name="sample_string" - value="Sample String" /> - <floater.string - name="other_string" - value="Other String" /> - - <!-- Floaters can contain drop-down menus. - The menu_bar widget contains the inividual menus. - The width is automatically computed to fit the labels. --> - <menu_bar - height="18" - layout="topleft" - follows="top|left" - tool_tip="menu" - left="2" - name="test_menu_bar" - top="16"> - <menu - height="16" - label="Menu" - layout="topleft" - tear_off="true" - left="0" - name="Menu" - top="-32" - width="128"> - <!-- menu_item_call will trigger a function call in the C++ code --> - <menu_item_call - label="Menu Item 1" - layout="topleft" - name="test_menu_item_1" /> - <!-- menu_item_separator is a horizontal line used to separate sections - of a menu. In general, menus should be divided into chunks of - no more than 7 items separated by menu_item_separators. --> - <menu_item_separator/> - <menu_item_call - label="Menu Item 2" - layout="topleft" - name="test_menu_item_2" /> - </menu> - </menu_bar> - - <!-- "text" is one or more read-only lines of text. - It can be made clickable but this requires C++ code - support. URLs are not automatically underlined. --> - <text - bottom="55" - layout="topleft" - follows="top|left" - left="10" - height="16"> - For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets - </text> - - <!-- First column --> - - <button - height="20" - follows="top|left" - label="Button" - layout="topleft" - left_delta="0" - name="test_button" - tool_tip="button" - top="80" - width="100" /> - <!-- "flyout_button" is a button that can spawn a menu --> - <flyout_button - follows="top|left" - height="20" - label="Flyout" - layout="topleft" - left_delta="0" - name="fly_btn" - top_pad="15" - tool_tip="flyout button" - width="100"> - <flyout_button.item - label="Item 1" - value="shout" /> - <flyout_button.item - label="Item 2" - value="say" /> - <flyout_button.item - label="Item 3" - value="whisper" /> - </flyout_button> - <check_box - bottom_delta="35" - label="Checkbox" - layout="topleft" - tool_tip="checkbox" - name="test_checkbox" /> - <check_box - top_pad="5" - enabled="false" - label="Checkbox Disabled" - tool_tip="checkbox disabled" - name="test_checkbox_disabled" /> - <!-- "combo_box" is a pop-menu of items. Optionally the box itself can - contain a general purpose line input editor, allowing the user to - provide input that is not a list item. --> - <combo_box - bottom_delta="35" - follows="top|left" - height="16" - width="150" - label="Combobox" - layout="topleft" - tool_tip="combo box" - name="test_combo_box"> - <combo_box.item - name="item1" - label="Combobox Item 1" /> - <combo_box.item - name="item2" - label="Combobox Item 2" /> - </combo_box> - <!-- "icon" is a read-only image. The image_name must match an entry - in textures.xml. We support TGA and PNG for UI images. --> - <icon - height="16" - image_name="icon_avatar_online.tga" - layout="topleft" - left_delta="0" - tool_tip="icon" - name="test_icon" - top_pad="40" - width="16" /> - <!-- "line_editor" allows a single line of editable text input. - The contents of this XML node are used as the initial value for - the text. --> - <line_editor - height="20" - follows="top|left" - layout="topleft" - left_delta="0" - name="test_line_editor" - top_pad="20" - tool_tip="line editor" - width="200"> - Line Editor Sample Text - </line_editor> - <!-- "filter_editor" is a specialized line_editor that shows read-only - help text until the user clicks in the widget. --> - <filter_editor - follows="left|top" - height="20" - label="Type here to search" - layout="topleft" - left_delta="0" - name="search editor" - tool_tip="search editor" - top_pad="30" - width="200" /> - <!-- "progress_bar" percent completed gets set in C++ code --> - <progress_bar - height="16" - follows="top|left" - layout="topleft" - left_delta="0" - name="test_progress_bar" - top_pad="30" - tool_tip="progress bar" - width="200" /> - <!-- "stat_view" is a container for statistics graphs. It is only used - for debugging/diagnostic displays. --> - <stat_view - height="250" - label="Statistics View" - layout="topleft" - left_delta="0" - name="axis_view" - show_label="true" - top_pad="30" - tool_tip="stat view" - width="200"> - <stat_bar - width="100" - bar_max="100" - bottom_delta="30" - label="Test Stat" - layout="topleft" - stat="stat" - bar_min="20" - name="test_stat_bar" /> - </stat_view> - - <!-- New column --> - - <!-- "radio_group" is a set of mutually exclusive choices, like the buttons - on a car radio that allow a single radio station to be chosen. --> - <radio_group - height="40" - layout="topleft" - left_pad="90" - name="size_radio_group" - tool_tip="radio group" - top="80" - width="200"> - <radio_item - bottom="20" - label="Radio 1" - layout="topleft" - name="small_radio_item" /> - <radio_item - label="Radio 2" - layout="topleft" - name="large_radio_item" /> - </radio_group> - <!-- "scroll_list" is a scrolling list of columnar data. --> - <scroll_list - bottom_delta="100" - follows="top|left" - height="80" - draw_heading="true" - tool_tip="scroll list" - layout="topleft"> - <scroll_list.columns - dynamic_width="true" - name="first_column" - label="Column A"/> - <scroll_list.columns - dynamic_width="true" - name="second_column" - label="Column B"/> - <row> - <column column="first_column">short text</column> - <column column="second_column">more short text</column> - </row> - <row> - <column column="first_column">this is some longer text</column> - <column column="second_column">and here is some more long text</column> - </row> - </scroll_list> - <!-- "slider" is a horizontal input widget for numerical data. --> - <slider - bottom_delta="45" - follows="top|left" - layout="topleft" - min_val="0" - max_val="100" - initial_value="20" - label="Slider" - name="test_slider" - tool_tip="slider" - width="200" /> - <!-- "spinner" is a numerical input widget with an up and down arrow to - change the value. --> - <spinner - bottom_delta="35" - follows="top|left" - label="Spinner" - layout="topleft" - label_width="45" - name="test_spinner" - tool_tip="spinner"/> - <text - bottom_delta="50" - follows="top|left" - font.name="SansSerifSmall" - font.style = "UNDERLINE" - layout="topleft" - name="test_text" - tool_tip="text"> - Text (underlined) - </text> - <text - top_pad="10" - follows="top|left" - layout="topleft" - width="60" - use_ellipses="true" - name="test_text" - tool_tip="text"> - Truncated text here - </text> - <!-- "text_editor" is a multi-line text input widget, similar to - textarea in HTML. --> - <text_editor - height="40" - follows="top|left|bottom" - layout="topleft" - left_delta="0" - name="test_text_editor" - tool_tip="text editor" - top_pad="25" - width="200"> - Text Editor - </text_editor> - <text - height="40" - follows="top|left|bottom" - layout="topleft" - name="test_text_box" - tool_tip="text box" - top_pad="5" - width="200"> - Text box -with -multiple lines -and too -many -line to actually fit - </text> - <!-- And a third column --> - - <!-- "tab_container" is a holder for multiple panels of UI widgets. - Tabs can appear at the top, bottom, or left of the container. --> - <tab_container - follows="all" - height="400" - halign="center" - layout="topleft" - left="525" - name="group_tab_container" - tab_position="top" - tab_height="20" - tool_tip="tab container" - top="80" - width="300"> - <!-- "panel" is a container for widgets. It is automatically resized to - fit the parent tab_container. --> - <panel - border="true" - label="Tab 1 - Color" - layout="topleft" - name="panel2"> - <!-- "color_swatch" displays a color and spawns a color picker when - clicked. --> - <color_swatch - can_apply_immediately="true" - color="0.3 0.6 0.9 1" - follows="left|top" - height="90" - layout="topleft" - left="10" - label="Color Swatch 1" - name="swatch1" - tool_tip="Color Swatch: Click to open Color Picker" - top="10" - width="80" /> - <color_swatch - can_apply_immediately="true" - color="1 0 1 1" - follows="left|top" - height="90" - label="Color Swatch 2" - layout="topleft" - left_pad="10" - name="swatch2" - tool_tip="Color Swatch: Click to open Color Picker" - top_delta="0" - width="80" /> - <text - top_pad="10" - left="10" - width="250" - follows="top|left" - font.name="Monospace" - name="test_text10" - tool_tip="text"> - Monospace Button Flyout Checkbox - </text> - <text - top_pad="10" - left="10" - width="250" - follows="top|left" - font.name="SansSerifSmall" - name="test_text10" - tool_tip="text"> - SansSerifSmall. РуÑÑкий 䏿–‡ (简体) - </text> - <text - top_pad="10" - left="10" - width="250" - follows="top|left" - font.name="SansSerif" - name="test_text11" - tool_tip="text"> - SansSerif. РуÑÑкий 䏿–‡ (简体) - </text> - <text - top_pad="10" - left="10" - width="250" - follows="top|left" - font.name="SansSerifLarge" - name="test_text12" - tool_tip="text"> - SansSerifLarge. РуÑÑкий 䏿–‡ (简体) - </text> - <text - top_pad="10" - left="10" - width="250" - follows="top|left" - font.name="SansSerifHuge" - name="test_text13" - tool_tip="text"> - SansSerifHuge. РуÑÑкий 䏿–‡ (简体) - </text> - </panel> - <!-- panels can also refer to other floaters or panels --> - <panel - border="true" - filename="floater_test_checkbox.xml" - height="225" - label="Tab 2 - Checkbox" - layout="topleft" - left_delta="0" - name="tab2" - top_delta="159" - width="250" /> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml deleted file mode 100644 index e86cb23c1eb..00000000000 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ /dev/null @@ -1,408 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - height="640" - layout="topleft" - min_height="230" - min_width="650" - name="gui_preview_tool" - help_topic="gui_preview_tool" - single_instance="true" - title="XUI PREVIEW TOOL" - translate="false" - width="750"> - <panel - bottom="640" - follows="left|top|right|bottom" - layout="topleft" - left="0" - mouse_opaque="false" - name="main_panel" - right="750" - top="0"> - <text - type="string" - length="1" - follows="top|left" - font="SansSerif" - height="30" - layout="topleft" - left="10" - name="select_language_label" - top="25" - width="130"> - Primary Language: - </text> - <combo_box - follows="top|left" - height="20" - layout="topleft" - left_pad="5" - name="language_select_combo" - top_delta="0" - width="55"> - <combo_box.item - label="en" - name="item1" - value="en" /> - </combo_box> - <button - follows="left|top" - height="25" - label="Show" - label_selected="Show" - layout="topleft" - left_pad="10" - name="display_floater" - tool_tip="Display the XUI floater defined by the selected XML file" - top_delta="-2" - width="95" /> - <button - enabled="false" - follows="left|top" - height="25" - label="Hide" - label_selected="Hide" - layout="topleft" - left_pad="10" - name="close_displayed_floater" - tool_tip="Closes the currently-displayed floater, if one exists" - top_delta="0" - width="85" /> - <button - follows="left|top" - height="25" - label="Edit..." - label_selected="Edit..." - layout="topleft" - left_pad="10" - name="edit_floater" - tool_tip="Edit the XUI floater defined by the selected XML file (opens external editor). Opens en version if no localized version exists." - top_delta="0" - width="95" /> - <button - follows="left|top" - height="25" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="5" - name="save_floater" - tool_tip="Save the XUI floater defined by the selected XML file" - top_delta="0" - width="85" /> - <button - follows="left|top" - height="25" - label="Save All" - label_selected="Save All" - layout="topleft" - left_pad="10" - name="save_all_floaters" - tool_tip="Save all XUI floaters defined by the selected language" - top_delta="0" - width="85" /> - <button - follows="right|top" - height="25" - is_toggle="true" - label="> >" - label_selected="< <" - layout="topleft" - left_pad="15" - name="toggle_overlap_panel" - tool_tip="Toggle highlighting and display panel for overlapping elements; right click an element to select it for this feature. The selected element is marked by a red rectangle." - top_delta="0" - width="30" /> - <text - type="string" - length="1" - follows="top|left" - font="SansSerif" - height="30" - layout="topleft" - left="10" - name="select_language_label_2" - right="-50" - top="53" - width="105"> - Secondary Language: - </text> - <combo_box - follows="top|left" - height="20" - layout="topleft" - left_delta="135" - name="language_select_combo_2" - top_delta="0" - width="55"> - <combo_box.item - label="en" - name="item1" - value="en" /> - </combo_box> - <button - follows="left|top" - height="25" - label="Show" - layout="topleft" - left_pad="10" - name="display_floater_2" - tool_tip="Display the XUI floater defined by the selected XML file" - top_delta="-2" - width="95" /> - <button - enabled="false" - follows="left|top" - height="25" - label="Hide" - layout="topleft" - left_pad="10" - name="close_displayed_floater_2" - tool_tip="Closes the currently-displayed floater, if one exists" - top_delta="0" - width="85" /> - <button - follows="left|top" - height="25" - label="Export Schema" - layout="topleft" - left_pad="10" - name="export_schema" - top_delta="0" - width="120" /> - <check_box - follows="left|top" - label="Show Rectangles" - name="show_rectangles" - left_pad="10" - top_delta="0" - height="25" - width="120" /> - - <scroll_list - bottom="525" - column_padding="0" - draw_heading="true" - draw_stripes="false" - follows="left|top|bottom|right" - label="Name" - layout="topleft" - left="10" - name="name_list" - right="-10" - search_column="1" - top="80"> - <scroll_list.columns - label="Title" - name="title_column" - width="150" /> - <scroll_list.columns - label="File" - name="file_column" - width="150" /> - <scroll_list.columns - dynamic_width="true" - label="Top-Level Node" - name="top_level_node_column" /> - </scroll_list> - <panel - bevel_style="in" - bg_alpha_color="0 0 0 0" - bg_opaque_color="0 0 0 0.3" - border="true" - bottom_delta="65" - follows="left|right|bottom" - height="60" - layout="topleft" - left="10" - name="editor_panel" - right="-10"> - <text - type="string" - length="1" - follows="left|bottom" - font="SansSerif" - height="30" - layout="topleft" - left="10" - left_delta="10" - name="editor_path_label" - top="10" - width="100"> - Editor Path: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|bottom" - font="SansSerif" - handle_edit_keys_directly="true" - height="20" - layout="topleft" - left_delta="100" - max_length="300" - name="executable_path_field" - select_on_focus="true" - tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)" - top_delta="-2" - width="315" /> - <button - follows="left|bottom" - height="25" - label="Browse..." - label_selected="Browse..." - layout="topleft" - left_pad="5" - name="browse_for_executable" - tool_tip="Browse for an editor (executable) to edit floater XML files" - top_delta="-2" - width="75" /> - <text - type="string" - length="1" - follows="left|bottom" - font="SansSerif" - height="30" - layout="topleft" - left="10" - left_delta="-420" - name="executable_args_label" - top="36" - width="100"> - Editor Arguments: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|bottom" - font="SansSerif" - handle_edit_keys_directly="true" - height="20" - layout="topleft" - left_delta="100" - max_length="300" - name="executable_args_field" - select_on_focus="true" - tool_tip="Command-line arguments to the editor; use '%FILE%' to refer to the target file; 'YourProgram.exe FileName.xml' will be run if this field is empty" - top_delta="-2" - width="315" /> - </panel> - <panel - bevel_style="in" - bg_alpha_color="0 0 0 0" - bg_opaque_color="0 0 0 0.3" - border="true" - bottom_delta="40" - follows="left|right|bottom" - height="35" - layout="topleft" - left="10" - name="vlt_panel" - right="-10"> - <text - type="string" - length="1" - follows="left|bottom" - font="SansSerif" - height="30" - layout="topleft" - left="10" - left_delta="10" - name="diff_file_label" - top="10" - width="200"> - Delta File: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|bottom" - font="SansSerif" - handle_edit_keys_directly="true" - height="20" - layout="topleft" - left_delta="65" - max_length="300" - name="vlt_diff_path_field" - select_on_focus="true" - tool_tip="The full path to an XML D0 or D1 localization difference file generated by the Viewer Localization Toolkit" - top_delta="-2" - width="235" /> - <button - follows="left|bottom" - height="25" - label="Browse..." - label_selected="Browse..." - layout="topleft" - left_pad="5" - name="browse_for_vlt_diffs" - tool_tip="Browse for a VLT-generated D0 or D1 difference file to highlight changed files and elements" - top_delta="-2" - width="75" /> - <button - follows="left|bottom" - height="25" - is_toggle="true" - label="Highlight Diffs" - label_selected="Unhighlight Diffs" - layout="topleft" - left_pad="5" - name="toggle_vlt_diff_highlight" - tool_tip="Toggle highlighting of files and elements containing changed localization data" - top_delta="0" - width="110" /> - </panel> - </panel> - <scroll_container - follows="top|right|bottom" - height="600" - layout="topleft" - left="750" - name="overlap_scroll" - reserve_scroll_corner="true" - top="20" - width="300"> - <panel - border="true" - name="overlap_dummy_panel" - top="0" - left="0" - width="300" - height="600" - > - <overlap_panel - background_opaque="true" - background_visible="true" - bevel_style="in" - bg_alpha_color="0 0 0 1" - bg_opaque_color="1 1 1 1" - border="true" - follows="top|right|bottom" - height="600" - label="Overlap Panel" - layout="topleft" - left="0" - min_width="300" - name="overlap_panel" - tool_tip="This panel displays the currently-selected element and all of the elements that overlap it, separated by horizontal lines" - top="0" - visible="false" - width="300" /> - <text - type="string" - length="1" - follows="top|right" - font="SansSerif" - height="30" - layout="topleft" - left="10" - name="overlap_panel_label" - top="10" - width="150"> - Overlapping Elements: - </text> - </panel> - </scroll_container> -</floater> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b378944e48a..ada702cffef 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -299,1453 +299,6 @@ <!-- LSL Usage Hover Tips --> <!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window). This has no effect on viewer code, but prevents Linden Lab internal localization tool from scraping these strings. --> - <string name="LSLTipSleepTime" translate="false"> -Sleeps script for [SLEEP_TIME] seconds. - </string> - - <string name="LSLTipText_llSin" translate="false"> -float llSin(float theta) -Returns the sine of theta (theta in radians) - </string> - <string name="LSLTipText_llCos" translate="false"> -float llCos(float theta) -Returns the cosine of theta (theta in radians) - </string> - <string name="LSLTipText_llTan" translate="false"> -float llTan(float theta) -Returns the tangent of theta (theta in radians) - </string> - <string name="LSLTipText_llAtan2" translate="false"> -float llAtan2(float y, float x) -Returns the arctangent2 of y, x - </string> - <string name="LSLTipText_llSqrt" translate="false"> -float llSqrt(float val) -Returns the square root of val, or returns 0 and triggers a Math Error for imaginary results - </string> - <string name="LSLTipText_llPow" translate="false"> -float llPow(float base, float exponent) -Returns the base raised to the power exponent, or returns 0 and triggers Math Error for imaginary results - </string> - <string name="LSLTipText_llAbs" translate="false"> -integer llAbs(integer val) -Returns the positive version of val - </string> - <string name="LSLTipText_llFabs" translate="false"> -float llFabs(float val) -Returns the positive version of val - </string> - <string name="LSLTipText_llFrand" translate="false"> -float llFrand(float mag) -Returns a pseudo random number in the range [0,mag) or (mag,0] - </string> - <string name="LSLTipText_llFloor" translate="false"> -integer llFloor(float val) -Returns largest integer value <= val - </string> - <string name="LSLTipText_llCeil" translate="false"> -integer llCeil(float val) -Returns smallest integer value >= val - </string> - <string name="LSLTipText_llRound" translate="false"> -integer llRound(float val) -Returns val rounded to the nearest integer - </string> - <string name="LSLTipText_llVecMag" translate="false"> -float llVecMag(vector v) -Returns the magnitude of v - </string> - <string name="LSLTipText_llVecNorm" translate="false"> -vector llVecNorm(vector v) -Returns the v normalized - </string> - <string name="LSLTipText_llVecDist" translate="false"> -float llVecDist(vector v1, vector v2) -Returns the 3D distance between v1 and v2 - </string> - <string name="LSLTipText_llRot2Euler" translate="false"> -vector llRot2Euler(rotation q) -Returns the Euler representation (roll, pitch, yaw) of q - </string> - <string name="LSLTipText_llEuler2Rot" translate="false"> -rotation llEuler2Rot(vector v) -Returns the rotation representation of Euler Angles v - </string> - <string name="LSLTipText_llAxes2Rot" translate="false"> -rotation llAxes2Rot(vector fwd, vector left, vector up) -Returns the rotation defined by the coordinate axes - </string> - <string name="LSLTipText_llRot2Fwd" translate="false"> -vector llRot2Fwd(rotation q) -Returns the forward vector defined by q - </string> - <string name="LSLTipText_llRot2Left" translate="false"> -vector llRot2Left(rotation q) -Returns the left vector defined by q - </string> - <string name="LSLTipText_llRot2Up" translate="false"> -vector llRot2Up(rotation q) -Returns the up vector defined by q - </string> - <string name="LSLTipText_llRotBetween" translate="false"> -rotation llRotBetween(vector v1, vector v2) -Returns the rotation to rotate v1 to v2 - </string> - <string name="LSLTipText_llWhisper" translate="false"> -llWhisper(integer channel, string msg) -Whispers the text of msg on channel - </string> - <string name="LSLTipText_llSay" translate="false"> -llSay(integer channel, string msg) -Says the text of msg on channel - </string> - <string name="LSLTipText_llShout" translate="false"> -llShout(integer channel, string msg) -Shouts the text of msg on channel - </string> - <string name="LSLTipText_llListen" translate="false"> -integer llListen(integer channel, string name, key id, string msg) -Sets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen - </string> - <string name="LSLTipText_llListenControl" translate="false"> -llListenControl(integer number, integer active) -Makes a listen event callback active or inactive - </string> - <string name="LSLTipText_llListenRemove" translate="false"> -llListenRemove(integer number) -Removes listen event callback number - </string> - <string name="LSLTipText_llSensor" translate="false"> -llSensor(string name, key id, integer type, float range, float arc) -Performs a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) - </string> - <string name="LSLTipText_llSensorRepeat" translate="false"> -llSensorRepeat(string name, key id, integer type, float range, float arc, float rate) -Sets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds - </string> - <string name="LSLTipText_llSensorRemove" translate="false"> -llSensorRemove() -Removes the sensor setup by llSensorRepeat - </string> - <string name="LSLTipText_llDetectedName" translate="false"> -string llDetectedName(integer number) -Returns the name of detected object number (returns empty string if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedKey" translate="false"> -key llDetectedKey(integer number) -Returns the key of detected object number (returns empty key if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedOwner" translate="false"> -key llDetectedOwner(integer number) -Returns the key of detected object's owner (returns empty key if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedType" translate="false"> -integer llDetectedType(integer number) -Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedPos" translate="false"> -vector llDetectedPos(integer number) -Returns the position of detected object number (returns <0,0,0> if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedVel" translate="false"> -vector llDetectedVel(integer number) -Returns the velocity of detected object number (returns <0,0,0> if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedGrab" translate="false"> -vector llDetectedGrab(integer number) -Returns the grab offset of the user touching object (returns <0,0,0> if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedRot" translate="false"> -rotation llDetectedRot(integer number) -Returns the rotation of detected object number (returns <0,0,0,1> if number is not a valid sensed object) - </string> - <string name="LSLTipText_llDetectedGroup" translate="false"> -integer llDetectedGroup(integer number) -Returns TRUE if detected object is part of same group as owner - </string> - <string name="LSLTipText_llDetectedLinkNumber" translate="false"> -integer llDetectedLinkNumber(integer number) -Returns the link position of the triggered event for touches and collisions only - </string> - <string name="LSLTipText_llDie" translate="false"> -llDie() -Deletes the object - </string> - <string name="LSLTipText_llGround" translate="false"> -float llGround(vector offset) -Returns the ground height below the object position + offset - </string> - <string name="LSLTipText_llCloud" translate="false"> -float llCloud(vector offset) -Returns the cloud density at the object position + offset - </string> - <string name="LSLTipText_llWind" translate="false"> -vector llWind(vector offset) -Returns the wind velocity at the object position + offset - </string> - <string name="LSLTipText_llSetStatus" translate="false"> -llSetStatus(integer status, integer value) -Sets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value - </string> - <string name="LSLTipText_llGetStatus" translate="false"> -integer llGetStatus(integer status) -Returns value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) - </string> - <string name="LSLTipText_llSetScale" translate="false"> -llSetScale(vector scale) -Sets the scale of the prim - </string> - <string name="LSLTipText_llGetScale" translate="false"> -vector llGetScale() -Returns the scale of the prim - </string> - <string name="LSLTipText_llSetColor" translate="false"> -llSetColor(vector color, integer face) -Sets the color on face of the prim - </string> - <string name="LSLTipText_llGetAlpha" translate="false"> -float llGetAlpha(integer face) -Returns the alpha of face - </string> - <string name="LSLTipText_llSetAlpha" translate="false"> -llSetAlpha(float alpha, integer face) -Sets the alpha on face - </string> - <string name="LSLTipText_llGetColor" translate="false"> -vector llGetColor(integer face) -Returns the color on face - </string> - <string name="LSLTipText_llSetTexture" translate="false"> -llSetTexture(string texture, integer face) -Sets the texture of face or ALL_SIDES - </string> - <string name="LSLTipText_llScaleTexture" translate="false"> -llScaleTexture(float u, float v, integer face) -Sets the texture u & v scales for the chosen face or ALL_SIDES - </string> - <string name="LSLTipText_llOffsetTexture" translate="false"> -llOffsetTexture(float u, float v, integer face) -Sets the texture u & v offsets for the chosen face or ALL_SIDES - </string> - <string name="LSLTipText_llRotateTexture" translate="false"> -llRotateTexture(float rotation, integer face) -Sets the texture rotation for the chosen face - </string> - <string name="LSLTipText_llGetTexture" translate="false"> -string llGetTexture(integer face) -Returns a string that is the texture on face (the inventory name if it is a texture in the prim's inventory, otherwise the key) - </string> - <string name="LSLTipText_llSetPos" translate="false"> -llSetPos(vector pos) -Moves the object or prim towards pos without using physics (if the script isn't physical) - </string> - <string name="LSLTipText_llGetPos" translate="false"> -vector llGetPos() -Returns the position of the task in region coordinates - </string> - <string name="LSLTipText_llGetLocalPos" translate="false"> -vector llGetLocalPos() -Returns the position relative to the root - </string> - <string name="LSLTipText_llSetRot" translate="false"> -llSetRot(rotation rot) -Sets the rotation - </string> - <string name="LSLTipText_llGetRot" translate="false"> -rotation llGetRot() -Returns the rotation relative to the region's axes - </string> - <string name="LSLTipText_llGetLocalRot" translate="false"> -rotation llGetLocalRot() -Returns the rotation local to the root - </string> - <string name="LSLTipText_llSetForce" translate="false"> -llSetForce(vector force, integer local) -Applies force to the object (if the script is physical), in local coords if local == TRUE - </string> - <string name="LSLTipText_llGetForce" translate="false"> -vector llGetForce() -Returns the force (if the script is physical) - </string> - <string name="LSLTipText_llTarget" translate="false"> -integer llTarget(vector position, float range) -Sets positions within range of position as a target and return an ID for the target - </string> - <string name="LSLTipText_llTargetRemove" translate="false"> -llTargetRemove(integer number) -Removes positional target number registered with llTarget - </string> - <string name="LSLTipText_llRotTarget" translate="false"> -integer llRotTarget(rotation rot, float error) -Set rotations with error of rot as a rotational target and return an ID for the rotational target - </string> - <string name="LSLTipText_llRotTargetRemove" translate="false"> -llRotTargetRemove(integer number) -Removes rotational target number registered with llRotTarget - </string> - <string name="LSLTipText_llMoveToTarget" translate="false"> -llMoveToTarget(vector target, float tau) -Critically damps to target in tau seconds (if the script is physical) - </string> - <string name="LSLTipText_llStopMoveToTarget" translate="false"> -llStopMoveToTarget() -Stops critically damped motion - </string> - <string name="LSLTipText_llApplyImpulse" translate="false"> -llApplyImpulse(vector force, integer local) -Applies impulse to object (if the script is physical), in local coords if local == TRUE - </string> - <string name="LSLTipText_llApplyRotationalImpulse" translate="false"> -llApplyRotationalImpulse(vector force, integer local) -Applies rotational impulse to object (if the script is physical), in local coords if local == TRUE - </string> - <string name="LSLTipText_llSetTorque" translate="false"> -llSetTorque(vector torque, integer local) -Sets the torque of object (if the script is physical), in local coords if local == TRUE - </string> - <string name="LSLTipText_llGetTorque" translate="false"> -vector llGetTorque() -Returns the torque (if the script is physical) - </string> - <string name="LSLTipText_llSetForceAndTorque" translate="false"> -llSetForceAndTorque(vector force, vector torque, integer local) -Sets the force and torque of object (if the script is physical), in local coords if local == TRUE - </string> - <string name="LSLTipText_llGetVel" translate="false"> -vector llGetVel() -Returns the velocity of the object - </string> - <string name="LSLTipText_llGetAccel" translate="false"> -vector llGetAccel() -Returns the acceleration of the object relative to the region's axes - </string> - <string name="LSLTipText_llGetOmega" translate="false"> -vector llGetOmega() -Returns the rotation velocity in radians per second - </string> - <string name="LSLTipText_llGetTimeOfDay" translate="false"> -float llGetTimeOfDay() -Returns the time in seconds since [SECOND_LIFE] server midnight or since region up-time, whichever is smaller - </string> - <string name="LSLTipText_llGetWallclock" translate="false"> -float llGetWallclock() -Returns the time in seconds since midnight California Pacific time (PST/PDT) - </string> - <string name="LSLTipText_llGetTime" translate="false"> -float llGetTime() -Returns the time in seconds since the last region reset, script reset, or call to either llResetTime or llGetAndResetTime - </string> - <string name="LSLTipText_llResetTime" translate="false"> -llResetTime() -Sets the script timer to zero - </string> - <string name="LSLTipText_llGetAndResetTime" translate="false"> -float llGetAndResetTime() -Returns the script time in seconds and then resets the script timer to zero - </string> - <string name="LSLTipText_llSoplayund" translate="false"> -llSound(string sound, float volume, integer queue, integer loop) -Plays sound at volume and whether it should loop or not - </string> - <string name="LSLTipText_llPlaySound" translate="false"> -llPlaySound(string sound, float volume) -Plays attached sound once at volume (0.0 - 1.0) - </string> - <string name="LSLTipText_llLoopSound" translate="false"> -llLoopSound(string sound, float volume) -Plays attached sound looping indefinitely at volume (0.0 - 1.0) - </string> - <string name="LSLTipText_llLoopSoundMaster" translate="false"> -llLoopSoundMaster(string sound, float volume) -Plays attached sound looping at volume (0.0 - 1.0), declares it a sync master - </string> - <string name="LSLTipText_llLoopSoundSlave" translate="false"> -llLoopSoundSlave(string sound, float volume) -Plays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master - </string> - <string name="LSLTipText_llPlaySoundSlave" translate="false"> -llPlaySoundSlave(string sound, float volume) -Plays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master - </string> - <string name="LSLTipText_llTriggerSound" translate="false"> -llTriggerSound(string sound, float volume) -Plays sound at volume (0.0 - 1.0), centered at but not attached to object - </string> - <string name="LSLTipText_llStopSound" translate="false"> -llStopSound() -Stops currently attached sound - </string> - <string name="LSLTipText_llPreloadSound" translate="false"> -llPreloadSound(string sound) -Preloads a sound on viewers within range - </string> - <string name="LSLTipText_llGetSubString" translate="false"> -string llGetSubString(string src, integer start, integer end) -Returns the indicated substring - </string> - <string name="LSLTipText_llDeleteSubString" translate="false"> -string llDeleteSubString(string src, integer start, integer end) -Removes the indicated substring and returns the result - </string> - <string name="LSLTipText_llInsertString" translate="false"> -string llInsertString(string dst, integer position, string src) -Returns a destination string dst with the string src inserted starting at position pos - </string> - <string name="LSLTipText_llToUpper" translate="false"> -string llToUpper(string src) -Returns a string that is src with all upper-case characters - </string> - <string name="LSLTipText_llToLower" translate="false"> -string llToLower(string src) -Returns a string that is src with all lower-case characters - </string> - <string name="LSLTipText_llGiveMoney" translate="false"> -llGiveMoney(key destination, integer amount) -Transfers amount of L$ from script owner to destination - </string> - <string name="LSLTipText_llMakeExplosion" translate="false"> -llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) -Makes a round explosion of particles - </string> - <string name="LSLTipText_llMakeFountain" translate="false"> -llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset) -Makes a fountain of particles - </string> - <string name="LSLTipText_llMakeSmoke" translate="false"> -llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) -Makes smoke like particles - </string> - <string name="LSLTipText_llMakeFire" translate="false"> -llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) -Makes fire like particles - </string> - <string name="LSLTipText_llRezObject" translate="false"> -llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param) -Instantiates owner's inventory object at pos with velocity vel and rotation rot with start parameter param - </string> - <string name="LSLTipText_llLookAt" translate="false"> -llLookAt(vector target, float strength, float damping) -Causes object to point its up axis (positive z) towards target, while keeping its forward axis (positive x) below the horizon - </string> - <string name="LSLTipText_llStopLookAt" translate="false"> -llStopLookAt() -Stops causing object to point at a target - </string> - <string name="LSLTipText_llSetTimerEvent" translate="false"> -llSetTimerEvent(float sec) -Causes the timer event to be triggered a maximum of once every sec seconds - </string> - <string name="LSLTipText_llSleep" translate="false"> -llSleep(float sec) -Puts the script to sleep for sec seconds - </string> - <string name="LSLTipText_llGetMass" translate="false"> -float llGetMass() -Returns the mass of object that the script is attached to - </string> - <string name="LSLTipText_llCollisionFilter" translate="false"> -llCollisionFilter(string name, key id, integer accept) -Sets the collision filter, exclusively or inclusively. If accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id - </string> - <string name="LSLTipText_llTakeControls" translate="false"> -llTakeControls(integer controls, integer accept, integer pass_on) -Allows for intercepting keyboard and mouse clicks from the agent the script has permissions for - </string> - <string name="LSLTipText_llReleaseControls" translate="false"> -llReleaseControls() -Stops taking inputs that were taken with llTakeControls - </string> - <string name="LSLTipText_llAttachToAvatar" translate="false"> -llAttachToAvatar(integer attach_point) -Attaches the object to the avatar who has granted permission to the script - </string> - <string name="LSLTipText_llDetachFromAvatar" translate="false"> -llDetachFromAvatar() -Detaches object from avatar - </string> - <string name="LSLTipText_llTakeCamera" translate="false"> -llTakeCamera(key avatar) -Moves avatar's viewpoint to task - </string> - <string name="LSLTipText_llReleaseCamera" translate="false"> -llReleaseCamera(key avatar) -Returns camera to agent avatar - </string> - <string name="LSLTipText_llGetOwner" translate="false"> -key llGetOwner() -Returns the object owner's UUID - </string> - <string name="LSLTipText_llInstantMessage" translate="false"> -llInstantMessage(key user, string message) -Sends the specified string as an Instant Message to the user - </string> - <string name="LSLTipText_llEmail" translate="false"> -llEmail(string address, string subject, string message) -Sends an email to address with the subject and message - </string> - <string name="LSLTipText_llGetNextEmail" translate="false"> -llGetNextEmail(string address, string subject) -Gets the next waiting email that comes from address, with specified subject - </string> - <string name="LSLTipText_llGetKey" translate="false"> -key llGetKey() -Returns the key of the prim the script is attached to - </string> - <string name="LSLTipText_llSetBuoyancy" translate="false"> -llSetBuoyancy(float buoyancy) -Sets the buoyancy of the task or object (0 is disabled, < 1.0 sinks, 1.0 floats, > 1.0 rises) - </string> - <string name="LSLTipText_llSetHoverHeight" translate="false"> -llSetHoverHeight(float height, integer water, float tau) -Critically damps to a height above the ground (or water) in tau seconds - </string> - <string name="LSLTipText_llStopHover" translate="false"> -llStopHover() -Stops hovering to a height - </string> - <string name="LSLTipText_llMinEventDelay" translate="false"> -llMinEventDelay(float delay) -Sets the minimum time between events being handled - </string> - <string name="LSLTipText_llSoundPreload" translate="false"> -llSoundPreload(string sound) -Preloads a sound on viewers within range - </string> - <string name="LSLTipText_llRotLookAt" translate="false"> -llRotLookAt(rotation target, float strength, float damping) -Causes object to point its forward axis towards target - </string> - <string name="LSLTipText_llStringLength" translate="false"> -integer llStringLength(string str) -Returns the length of string - </string> - <string name="LSLTipText_llStartAnimation" translate="false"> -llStartAnimation(string anim) -Starts animation anim for agent that granted PERMISSION_TRIGGER_ANIMATION if the permission has not been revoked - </string> - <string name="LSLTipText_llStopAnimation" translate="false"> -llStopAnimation(string anim) -Stops animation anim for agent that granted permission - </string> - <string name="LSLTipText_llPointAt" translate="false"> -llPointAt(vector pos) -Makes agent that owns object point at pos - </string> - <string name="LSLTipText_llStopPointAt" translate="false"> -llStopPointAt() -Stops pointing agent that owns object - </string> - <string name="LSLTipText_llTargetOmega" translate="false"> -llTargetOmega(vector axis, float spinrate, float gain) -Rotates the object around axis at spinrate with strength gain - </string> - <string name="LSLTipText_llGetStartParameter" translate="false"> -integer llGetStartParameter() -Returns an integer that is the script start/rez parameter - </string> - <string name="LSLTipText_llGodLikeRezObject" translate="false"> -llGodLikeRezObject(key inventory, vector pos) -Rezzes directly off of UUID if owner is in God Mode - </string> - <string name="LSLTipText_llRequestPermissions" translate="false"> -llRequestPermissions(key agent, integer perm) -Asks the agent for permission to run certain classes of functions - </string> - <string name="LSLTipText_llGetPermissionsKey" translate="false"> -key llGetPermissionsKey() -Returns the key of the avatar that last granted permissions to the script - </string> - <string name="LSLTipText_llGetPermissions" translate="false"> -integer llGetPermissions() -Returns an integer bitfield with the permissions that have been granted - </string> - <string name="LSLTipText_llGetLinkNumber" translate="false"> -integer llGetLinkNumber() -Returns the link number of the prim containing the script (0 means not linked, 1 the prim is the root, 2 the prim is the first child, etc) - </string> - <string name="LSLTipText_llSetLinkColor" translate="false"> -llSetLinkColor(integer linknumber, vector color, integer face) -Sets face to color if a task exists in the link chain at linknumber - </string> - <string name="LSLTipText_llCreateLink" translate="false"> -llCreateLink(key target, integer parent) -Attempts to link the script's object with the target (requires that PERMISSION_CHANGE_LINKS be granted). If parent == TRUE, then the script's object becomes the root - </string> - <string name="LSLTipText_llBreakLink" translate="false"> -llBreakLink(integer linknum) -Delinks the prim with the given link number in a linked object set (requires that PERMISSION_CHANGE_LINKS be granted) - </string> - <string name="LSLTipText_llBreakAllLinks" translate="false"> -llBreakAllLinks() -Delinks all prims in the link set (requires that PERMISSION_CHANGE_LINKS be granted) - </string> - <string name="LSLTipText_llGetLinkKey" translate="false"> -key llGetLinkKey(integer linknumber) -Returns the key of the linked prim linknumber - </string> - <string name="LSLTipText_llGetLinkName" translate="false"> -string llGetLinkName(integer linknumber) -Returns the name of linknumber in a link set - </string> - <string name="LSLTipText_llGetInventoryNumber" translate="false"> -integer llGetInventoryNumber(integer type) -Returns the number of items of a given type (INVENTORY_* flag) in the prim's inventory - </string> - <string name="LSLTipText_llGetInventoryName" translate="false"> -string llGetInventoryName(integer type, integer number) -Returns the name of the inventory item number of a given type - </string> - <string name="LSLTipText_llSetScriptState" translate="false"> -llSetScriptState(string name, integer run) -Sets the running state of the specified script - </string> - <string name="LSLTipText_llGetEnergy" translate="false"> -float llGetEnergy() -Returns how much energy is in the object as a percentage of maximum - </string> - <string name="LSLTipText_llGiveInventory" translate="false"> -llGiveInventory(key destination, string inventory) -Gives inventory to destination - </string> - <string name="LSLTipText_llRemoveInventory" translate="false"> -llRemoveInventory(string item) -Removes the named inventory item - </string> - <string name="LSLTipText_llSetText" translate="false"> -llSetText(string text, vector color, float alpha) -Displays text that hovers over the prim with specific color and translucency specified with alpha - </string> - <string name="LSLTipText_llWater" translate="false"> -float llWater(vector offset) -Returns the water height below the object position + offset - </string> - <string name="LSLTipText_llPassTouches" translate="false"> -llPassTouches(integer pass) -If pass == TRUE, touches are passed from children on to parents - </string> - <string name="LSLTipText_llRequestAgentData" translate="false"> -key llRequestAgentData(key id, integer data) -Requests data about agent id. When data is available the dataserver event will be raised. - </string> - <string name="LSLTipText_llRequestInventoryData" translate="false"> -key llRequestInventoryData(string name) -Requests data from object's inventory object. When data is available the dataserver event will be raised. - </string> - <string name="LSLTipText_llSetDamage" translate="false"> -llSetDamage(float damage) -Sets the amount of damage that will be done when this object hits an avatar. - </string> - <string name="LSLTipText_llTeleportAgentHome" translate="false"> -llTeleportAgentHome(key id) -Teleports avatar on the owner's land to their home location without any warning - </string> - <string name="LSLTipText_llModifyLand" translate="false"> -llModifyLand(integer action, integer brush) -Modifies land using the specified action on the specified brush size of land - </string> - <string name="LSLTipText_llCollisionSound" translate="false"> -llCollisionSound(string impact_sound, float impact_volume) -Suppresses default collision sounds, replaces default impact sounds with impact_sound at the volume impact_volume - </string> - <string name="LSLTipText_llCollisionSprite" translate="false"> -llCollisionSprite(string impact_sprite) -Suppresses default collision sprites, replaces default impact sprite with impact_sprite (use an empty string to just suppress) - </string> - <string name="LSLTipText_llGetAnimation" translate="false"> -string llGetAnimation(key id) -Returns the name of the currently playing locomotion animation for avatar id - </string> - <string name="LSLTipText_llResetScript" translate="false"> -llResetScript() -Resets the script - </string> - <string name="LSLTipText_llMessageLinked" translate="false"> -llMessageLinked(integer linknum, integer num, string str, key id) -Allows scripts in the same object to communicate. Triggers a link_message event with the same parameters num, str, and id in all scripts in the prim(s) described by linknum. - </string> - <string name="LSLTipText_llPushObject" translate="false"> -llPushObject(key id, vector impulse, vector ang_impulse, integer local) -Applies impulse and ang_impulse to object id - </string> - <string name="LSLTipText_llPassCollisions" translate="false"> -llPassCollisions(integer pass) -If pass == TRUE, collisions are passed from children on to parents (default is FALSE) - </string> - <string name="LSLTipText_llGetScriptName" translate="false"> -string llGetScriptName() -Returns the name of the script that this function is used in - </string> - <string name="LSLTipText_llGetNumberOfSides" translate="false"> -integer llGetNumberOfSides() -Returns the number of faces (or sides) of the prim - </string> - <string name="LSLTipText_llAxisAngle2Rot" translate="false"> -rotation llAxisAngle2Rot(vector axis, float angle) -Returns the rotation that is a generated angle about axis - </string> - <string name="LSLTipText_llRot2Axis" translate="false"> -vector llRot2Axis(rotation rot) -Returns the rotation axis represented by rot - </string> - <string name="LSLTipText_llRot2Angle" translate="false"> -float llRot2Angle(rotation rot) -Returns the rotation angle represented by rot - </string> - <string name="LSLTipText_llAcos" translate="false"> -float llAcos(float val) -Returns the arccosine in radians of val - </string> - <string name="LSLTipText_llAsin" translate="false"> -float llAsin(float val) -Returns the arcsine in radians of val - </string> - <string name="LSLTipText_llAngleBetween" translate="false"> -float llAngleBetween(rotation a, rotation b) -Returns angle between rotation a and b - </string> - <string name="LSLTipText_llGetInventoryKey" translate="false"> -key llGetInventoryKey(string name) -Returns the key that is the UUID of the inventory name - </string> - <string name="LSLTipText_llAllowInventoryDrop" translate="false"> -llAllowInventoryDrop(integer add) -If add == TRUE, users without modify permissions can still drop inventory items onto a prim - </string> - <string name="LSLTipText_llGetSunDirection" translate="false"> -vector llGetSunDirection() -Returns a normalized vector of the direction of the sun in the region - </string> - <string name="LSLTipText_llGetTextureOffset" translate="false"> -vector llGetTextureOffset(integer face) -Returns the texture offset of face in the x and y components of a vector - </string> - <string name="LSLTipText_llGetTextureScale" translate="false"> -vector llGetTextureScale(integer side) -Returns the texture scale of side in the x and y components of a vector - </string> - <string name="LSLTipText_llGetTextureRot" translate="false"> -float llGetTextureRot(integer side) -Returns the texture rotation of side - </string> - <string name="LSLTipText_llSubStringIndex" translate="false"> -integer llSubStringIndex(string source, string pattern) -Returns an integer that is the index in source where pattern first appears. -(Returns -1 if not found) - </string> - <string name="LSLTipText_llGetOwnerKey" translate="false"> -key llGetOwnerKey(key id) -Returns the owner of object id - </string> - <string name="LSLTipText_llGetCenterOfMass" translate="false"> -vector llGetCenterOfMass() -Returns the prim's center of mass (unless called from the root prim, where it returns the object's center of mass) - </string> - <string name="LSLTipText_llListSort" translate="false"> -list llListSort(list src, integer stride, integer ascending) -Sorts the list into blocks of stride, in ascending order if ascending == TRUE. -The sort order is affected by type. - </string> - <string name="LSLTipText_llGetListLength" translate="false"> -integer llGetListLength(list src) -Returns the number of elements in the list - </string> - <string name="LSLTipText_llList2Integer" translate="false"> -integer llList2Integer(list src, integer index) -Copies the integer at index in the list - </string> - <string name="LSLTipText_llList2Float" translate="false"> -float llList2Float(list src, integer index) -Copies the float at index in the list - </string> - <string name="LSLTipText_llList2String" translate="false"> -string llList2String(list src, integer index) -Copies the string at index in the list - </string> - <string name="LSLTipText_llList2Key" translate="false"> -key llList2Key(list src, integer index) -Copies the key at index in the list - </string> - <string name="LSLTipText_llList2Vector" translate="false"> -vector llList2Vector(list src, integer index) -Copies the vector at index in the list - </string> - <string name="LSLTipText_llList2Rot" translate="false"> -rotation llList2Rot(list src, integer index) -Copies the rotation at index in the list - </string> - <string name="LSLTipText_llList2List" translate="false"> -list llList2List(list src, integer start, integer end) -Copies the slice of the list from start to end - </string> - <string name="LSLTipText_llDeleteSubList" translate="false"> -list llDeleteSubList(list src, integer start, integer end) -Removes the slice from start to end and returns the remainder of the list - </string> - <string name="LSLTipText_llGetListEntryType" translate="false"> -integer llGetListEntryType(list src, integer index) -Returns the type of the index entry in the list -(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list) - </string> - <string name="LSLTipText_llList2CSV" translate="false"> -string llList2CSV(list src) -Creates a string of comma separated values from list - </string> - <string name="LSLTipText_llCSV2List" translate="false"> -list llCSV2List(string src) -Creates a list from a string of comma separated values - </string> - <string name="LSLTipText_llListRandomize" translate="false"> -list llListRandomize(list src, integer stride) -Returns a randomized list of blocks of size stride - </string> - <string name="LSLTipText_llList2ListStrided" translate="false"> -list llList2ListStrided(list src, integer start, integer end, integer stride) -Copies the strided slice of the list from start to end - </string> - <string name="LSLTipText_llGetRegionCorner" translate="false"> -vector llGetRegionCorner() -Returns a vector in meters that is the global location of the south-west corner of the region which the object is in - </string> - <string name="LSLTipText_llListInsertList" translate="false"> -list llListInsertList(list dest, list src, integer start) -Returns a list that contains all the elements from dest but with the elements from src inserted at position start - </string> - <string name="LSLTipText_llListFindList" translate="false"> -integer llListFindList(list src, list test) -Returns the index of the first instance of test in src. -(Returns -1 if not found) - </string> - <string name="LSLTipText_llGetObjectName" translate="false"> -string llGetObjectName() -Returns the name of the prim which the script is attached to - </string> - <string name="LSLTipText_llSetObjectName" translate="false"> -llSetObjectName(string name) -Sets the prim's name to the name parameter - </string> - <string name="LSLTipText_llGetDate" translate="false"> -string llGetDate() -Returns the current date in the UTC time zone in the format YYYY-MM-DD - </string> - <string name="LSLTipText_llEdgeOfWorld" translate="false"> -integer llEdgeOfWorld(vector pos, vector dir) -Checks to see whether the border hit by dir from pos is the edge of the world (has no neighboring region) - </string> - <string name="LSLTipText_llGetAgentInfo" translate="false"> -integer llGetAgentInfo(key id) -Returns an integer bitfield containing the agent information about id. -Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING and/or AGENT_IN_AIR. - </string> - <string name="LSLTipText_llAdjustSoundVolume" translate="false"> -llAdjustSoundVolume(float volume) -Adjusts volume of attached sound (0.0 - 1.0) - </string> - <string name="LSLTipText_llSetSoundQueueing" translate="false"> -llSetSoundQueueing(integer queue) -Sets whether attached sounds wait for the current sound to finish (If queue == TRUE then queuing is enabled, if FALSE queuing is disabled [default]) - </string> - <string name="LSLTipText_llSetSoundRadius" translate="false"> -llSetSoundRadius(float radius) -Establishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered) - </string> - <string name="LSLTipText_llKey2Name" translate="false"> -string llKey2Name(key id) -Returns the name of the prim or avatar specified by id. -(The id must be a valid rezzed prim or avatar key in the current simulator, otherwise an empty string is returned.) - </string> - <string name="LSLTipText_llSetTextureAnim" translate="false"> -llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate) -Animates the texture on the specified face/faces - </string> - <string name="LSLTipText_llTriggerSoundLimited" translate="false"> -llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west) -Plays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to the box defined by vectors top_north_east and bottom_south_west - </string> - <string name="LSLTipText_llEjectFromLand" translate="false"> -llEjectFromLand(key avatar) -Ejects avatar from the parcel - </string> - <string name="LSLTipText_llParseString2List" translate="false"> -list llParseString2List(string src, list separators, list spacers) -Breaks src into a list, discarding separators, keeping spacers -(separators and spacers must be lists of strings, maximum of 8 each) - </string> - <string name="LSLTipText_llOverMyLand" translate="false"> -integer llOverMyLand(key id) -Returns TRUE if id is over land owned by the script owner, otherwise FALSE - </string> - <string name="LSLTipText_llGetLandOwnerAt" translate="false"> -key llGetLandOwnerAt(vector pos) -Returns the key of the land owner, returns NULL_KEY if public - </string> - <string name="LSLTipText_llGetNotecardLine" translate="false"> -key llGetNotecardLine(string name, integer line) -Returns line line of notecard name via the dataserver event - </string> - <string name="LSLTipText_llGetAgentSize" translate="false"> -vector llGetAgentSize(key id) -If the avatar is in the same region, returns the size of the bounding box of the requested avatar by id, otherwise returns ZERO_VECTOR - </string> - <string name="LSLTipText_llSameGroup" translate="false"> -integer llSameGroup(key id) -Returns TRUE if avatar id is in the same region and has the same active group, otherwise FALSE - </string> - <string name="LSLTipText_llUnSit" translate="false"> -key llUnSit(key id) -If avatar identified by id is sitting on the object the script is attached to or is over land owned by the object's owner, the avatar is forced to stand up - </string> - <string name="LSLTipText_llGroundSlope" translate="false"> -vector llGroundSlope(vector offset) -Returns the ground slope below the object position + offset - </string> - <string name="LSLTipText_llGroundNormal" translate="false"> -vector llGroundNormal(vector offset) -Returns the ground normal below the object position + offset - </string> - <string name="LSLTipText_llGroundContour" translate="false"> -vector llGroundCountour(vector offset) -Returns the ground contour direction below the object position + offset - </string> - <string name="LSLTipText_llGetAttached" translate="false"> -integer llGetAttached() -Returns the object's attachment point, or 0 if not attached - </string> - <string name="LSLTipText_llGetFreeMemory" translate="false"> -integer llGetFreeMemory() -Returns the number of free bytes of memory the script can use - </string> - <string name="LSLTipText_llGetRegionName" translate="false"> -string llGetRegionName() -Returns the current region name - </string> - <string name="LSLTipText_llGetRegionTimeDilation" translate="false"> -float llGetRegionTimeDilation() -Returns the current time dilation as a float between 0.0 (full dilation) and 1.0 (no dilation) - </string> - <string name="LSLTipText_llGetRegionFPS" translate="false"> -float llGetRegionFPS() -Returns the mean region frames per second - </string> - <string name="LSLTipText_llParticleSystem" translate="false"> -llParticleSystem(list rules) -Creates a particle system based on rules. An empty list removes the particle system. -List format is [ rule1, data1, rule2, data2 . . . rulen, datan ] - </string> - <string name="LSLTipText_llGroundRepel" translate="false"> -llGroundRepel(float height, integer water, float tau) -Critically damps to height if within height*0.5 of level (either above ground level, or above the higher of land and water if water == TRUE) - </string> - <string name="LSLTipText_llGiveInventoryList" translate="false"> -llGiveInventoryList(key target, string folder, list inventory) -Gives inventory items to target, creating a new folder to put them in - </string> - <string name="LSLTipText_llSetVehicleType" translate="false"> -llSetVehicleType(integer type) -Sets the vehicle to one of the default types - </string> - <string name="LSLTipText_llSetVehicleFloatParam" translate="false"> -llSetVehicleFloatParam(integer param, float value) -Sets the specified vehicle float parameter - </string> - <string name="LSLTipText_llSetVehicleVectorParam" translate="false"> -llSetVehicleVectorParam(integer param, vector vec) -Sets the specified vehicle vector parameter - </string> - <string name="LSLTipText_llSetVehicleRotationParam" translate="false"> -llSetVehicleVectorParam(integer param, rotation rot) -Sets the specified vehicle rotation parameter - </string> - <string name="LSLTipText_llSetVehicleFlags" translate="false"> -llSetVehicleFlags(integer flags) -Sets the enabled bits in 'flags' - </string> - <string name="LSLTipText_llRemoveVehicleFlags" translate="false"> -llRemoveVehicleFlags(integer flags) -Removes the enabled bits in 'flags' - </string> - <string name="LSLTipText_llSitTarget" translate="false"> -llSitTarget(vector offset, rotation rot) -Sets the sit location for the prim. If offset == <0,0,0> then the sit target is removed. - </string> - <string name="LSLTipText_llAvatarOnSitTarget" translate="false"> -key llAvatarOnSitTarget() -If an avatar is seated on the sit target, returns the avatar's key, otherwise NULL_KEY - </string> - <string name="LSLTipText_llAddToLandPassList" translate="false"> -llAddToLandPassList(key avatar, float hours) -Adds avatar to the land pass list for hours, or indefinitely if hours is 0 - </string> - <string name="LSLTipText_llSetTouchText" translate="false"> -llSetTouchText(string text) -Displays text rather than the default 'Touch' in the pie menu - </string> - <string name="LSLTipText_llSetSitText" translate="false"> -llSetSitText(string text) -Displays text rather than the default 'Sit Here' in the pie menu - </string> - <string name="LSLTipText_llSetCameraEyeOffset" translate="false"> -llSetCameraEyeOffset(vector offset) -Sets the camera eye offset for avatars that sit on the object - </string> - <string name="LSLTipText_llSetCameraAtOffset" translate="false"> -llSetCameraAtOffset(vector offset) -Sets the point the camera is looking at to offset for avatars that sit on the object - </string> - <string name="LSLTipText_llDumpList2String" translate="false"> -string llDumpList2String(list src, string separator) -Returns the list in a single string, using separator between the entries - </string> - <string name="LSLTipText_llScriptDanger" translate="false"> -integer llScriptDanger(vector pos) -Returns TRUE if pos is over public land, sandbox land, land that doesn't allow everyone to edit and build, or land that doesn't allow outside scripts - </string> - <string name="LSLTipText_llDialog" translate="false"> -llDialog(key avatar, string message, list buttons, integer chat_channel -Shows a dialog box on the avatar's screen with a message and up to 12 buttons. -If a button is pressed, the avatar says the text of the button label on chat_channel. - </string> - <string name="LSLTipText_llVolumeDetect" translate="false"> -llVolumeDetect(integer detect) -If detect = TRUE, object works much like Phantom, but triggers collision_start and collision_end events when other objects start and stop interpenetrating. -Must be applied to the root prim. - </string> - <string name="LSLTipText_llResetOtherScript" translate="false"> -llResetOtherScript(string name) -Resets script name - </string> - <string name="LSLTipText_llGetScriptState" translate="false"> -integer llGetScriptState(string name) -Returns TRUE if the script name is running - </string> - <string name="LSLTipText_llRemoteLoadScript" translate="false"> -DEPRECATED! Please use llRemoteLoadScriptPin instead. - </string> - <string name="LSLTipText_llSetRemoteScriptAccessPin" translate="false"> -llSetRemoteScriptAccessPin(integer pin) -If pin is set to a non-zero number, allows a prim to have scripts remotely loaded via llRemoteLoadScriptPin when it passes in the correct pin. Otherwise, llRemoteLoadScriptPin is ignored. - </string> - <string name="LSLTipText_llRemoteLoadScriptPin" translate="false"> -llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param) -Copies script name onto target, if the owner of this scripted object can modify target and is in the same region, and the matching pin is used. -If running == TRUE, starts the script with start_param - </string> - <string name="LSLTipText_llOpenRemoteDataChannel" translate="false"> -llOpenRemoteDataChannel() -Creates a channel to listen for XML-RPC calls, and will trigger a remote_data event with channel id once it is available - </string> - <string name="LSLTipText_llSendRemoteData" translate="false"> -key llSendRemoteData(key channel, string dest, integer idata, string sdata) -Sends an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata. -Returns a key that is the message_id for the resulting remote_data events. - </string> - <string name="LSLTipText_llRemoteDataReply" translate="false"> -llRemoteDataReply(key channel, key message_id, string sdata, integer idata) -Sends an XML-RPC reply to message_id on channel with payload of string sdata and integer idata - </string> - <string name="LSLTipText_llCloseRemoteDataChannel" translate="false"> -llCloseRemoteDataChannel(key channel) -Closes XML-RPC channel - </string> - <string name="LSLTipText_llMD5String" translate="false"> -string llMD5String(string src, integer nonce) -Returns a string of 32 hex characters that is a RSA Data Security, Inc. MD5 Message-Digest Algorithm of src with nonce - </string> - <string name="LSLTipText_llSetPrimitiveParams" translate="false"> -llSetPrimitiveParams(list rules) -Sets the prim's parameters according to rules - </string> - <string name="LSLTipText_llStringToBase64" translate="false"> -string llStringToBase64(string str) -Converts a string to the Base64 representation of the string - </string> - <string name="LSLTipText_llBase64ToString" translate="false"> -string llBase64ToString(string str) -Converts a Base64 string to a conventional string. -If the conversion creates any unprintable characters, they are converted to spaces. - </string> - <string name="LSLTipText_llXorBase64Strings" translate="false"> -string llXorBase64Strings(string s1, string s2) -DEPRECATED! Please use llXorBase64StringsCorrect instead. -Incorrectly performs an exclusive or on two Base64 strings and returns a Base64 string. s2 repeats if it is shorter than s1. Retained for backwards compatability. - </string> - <string name="LSLTipText_llRemoteDataSetRegion" translate="false"> -llRemoteDataSetRegion() -DEPRECATED! Please use llOpenRemoteDataChannel instead. -If an object using remote data channels changes regions, you must call this function to reregister the remote data channels. This call is not needed if the prim does not change regions. - </string> - <string name="LSLTipText_llLog10" translate="false"> -float llLog10(float val) -Returns the base 10 logarithm of val. Returns zero if val <= 0. - </string> - <string name="LSLTipText_llLog" translate="false"> -float llLog(float val) -Returns the natural logarithm of val. Returns zero if val <= 0. - </string> - <string name="LSLTipText_llGetAnimationList" translate="false"> -list llGetAnimationList(key id) -Returns a list of keys of playing animations for avatar described by id - </string> - <string name="LSLTipText_llSetParcelMusicURL" translate="false"> -llSetParcelMusicURL(string url) -Sets the streaming audio URL for the parcel which the object is on - </string> - <string name="LSLTipText_llGetRootPosition" translate="false"> -vector llGetRootPosition() -Returns the position (in region coordinates) of the root prim of the object which the script is attached to - </string> - <string name="LSLTipText_llGetRootRotation" translate="false"> -rotation llGetRootRotation() -Returns the rotation (relative to the region) of the root prim of the object which the script is attached to - </string> - <string name="LSLTipText_llGetObjectDesc" translate="false"> -string llGetObjectDesc() -Returns the description of the prim the script is attached to - </string> - <string name="LSLTipText_llSetObjectDesc" translate="false"> -llSetObjectDesc(string name) -Sets the prim's description - </string> - <string name="LSLTipText_llGetCreator" translate="false"> -key llGetCreator() -Returns a key for the creator of the prim - </string> - <string name="LSLTipText_llGetTimestamp" translate="false"> -string llGetTimestamp() -Returns the timestamp in the UTC time zone in the format: YYYY-MM-DDThh:mm:ss.ff..fZ - </string> - <string name="LSLTipText_llSetLinkAlpha" translate="false"> -llSetLinkAlpha(integer linknumber, float alpha, integer face) -If a prim exists in the link chain at linknumber, sets face to alpha - </string> - <string name="LSLTipText_llGetNumberOfPrims" translate="false"> -integer llGetNumberOfPrims() -Returns the number of prims in a link set the script is attached to - </string> - <string name="LSLTipText_llGetNumberOfNotecardLines" translate="false"> -key llGetNumberOfNotecardLines(string name) -Returns number of lines in notecard name via the dataserver event (cast return value to integer) - </string> - <string name="LSLTipText_llGetBoundingBox" translate="false"> -list llGetBoundingBox(key object) -Returns the bounding box around the object (including any linked prims) relative to its root prim, in a list in the format [ (vector) min_corner, (vector) max_corner ] - </string> - <string name="LSLTipText_llGetGeometricCenter" translate="false"> -vector llGetGeometricCenter() -Returns the geometric center of the linked set the script is attached to. - </string> - <string name="LSLTipText_llGetPrimitiveParams" translate="false"> -list llGetPrimitiveParams(list params) -Returns the primitive parameters specified in the params list. - </string> - <string name="LSLTipText_llIntegerToBase64" translate="false"> -string llIntegerToBase64(integer number) -Returns a string that is a Base64 big endian encode of number - </string> - <string name="LSLTipText_llBase64ToInteger" translate="false"> -integer llBase64ToInteger(string str) -Returns an integer that is the str Base64 decoded as a big endian integer - </string> - <string name="LSLTipText_llGetGMTclock" translate="false"> -float llGetGMTclock() -Returns the time in seconds since midnight GMT - </string> - <string name="LSLTipText_llGetSimulatorHostname" translate="false"> -string llGetSimulatorHostname() -Returns the hostname of the machine which the script is running on (same as string in viewer Help dialog) - </string> - <string name="LSLTipText_llSetLocalRot" translate="false"> -llSetLocalRot(rotation rot) -Sets the rotation of a child prim relative to the root prim - </string> - <string name="LSLTipText_llParseStringKeepNulls" translate="false"> -list llParseStringKeepNulls(string src, list separators, list spacers) -Breaks src into a list, discarding separators, keeping spacers, keeping any null values generated. -(separators and spacers must be lists of strings, maximum of 8 each) - </string> - <string name="LSLTipText_llRezAtRoot" translate="false"> -llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param) -Instantiates owner's inventory object rotated to rot with its root at pos, moving at vel, using param as the start parameter - </string> - <string name="LSLTipText_llGetObjectPermMask" translate="false"> -integer llGetObjectPermMask(integer mask) -Returns the requested permission mask for the root object the task is attached to - </string> - <string name="LSLTipText_llSetObjectPermMask" translate="false"> -llSetObjectPermMask(integer mask, integer value) -Sets the given permission mask to the new value on the root object the task is attached to (requires God Mode) - </string> - <string name="LSLTipText_llGetInventoryPermMask" translate="false"> -integer llGetInventoryPermMask(string item, integer mask) -Returns the requested permission mask for the inventory item - </string> - <string name="LSLTipText_llSetInventoryPermMask" translate="false"> -llSetInventoryPermMask(string item, integer mask, integer value) -Sets the given permission mask to the new value on the inventory item (requires God Mode) - </string> - <string name="LSLTipText_llGetInventoryCreator" translate="false"> -key llGetInventoryCreator(string item) -Returns a key for the creator of the inventory item - </string> - <string name="LSLTipText_llOwnerSay" translate="false"> -llOwnerSay(string msg) -Says msg to owner only. (Owner must be in the same region.) - </string> - <string name="LSLTipText_llRequestSimulatorData" translate="false"> -key llRequestSimulatorData(string simulator, integer data) -Requests data about simulator. When data is available the dataserver event will be raised. - </string> - <string name="LSLTipText_llForceMouselook" translate="false"> -llForceMouselook(integer mouselook) -If mouselook is TRUE, any avatar that sits upon the prim will be forced into mouselook mode - </string> - <string name="LSLTipText_llGetObjectMass" translate="false"> -float llGetObjectMass(key id) -Returns the mass of the avatar or object in the region - </string> - <string name="LSLTipText_llListReplaceList" translate="false"> -list llListReplaceList(list dest, list src, integer start, integer end) -Returns a list that is dest with start through end removed and src inserted at start - </string> - <string name="LSLTipText_llLoadURL" translate="false"> -llLoadURL(key avatar, string message, string url) -Shows a dialog to avatar offering to load the web page at url with a message. -If user clicks yes, launches the page in their web browser. - </string> - <string name="LSLTipText_llParcelMediaCommandList" translate="false"> -llParcelMediaCommandList(list command) -Sends a list of commands, some with arguments, to a parcel to control the playback of movies and other media - </string> - <string name="LSLTipText_llParcelMediaQuery" translate="false"> -list llParcelMediaQuery(list query) -Returns a list containing results of the sent query - </string> - <string name="LSLTipText_llModPow" translate="false"> -integer llModPow(integer a, integer b, integer c) -Returns a raised to the b power, mod c. ( (a**b)%c ) -b is capped at 0xFFFF (16 bits). - </string> - <string name="LSLTipText_llGetInventoryType" translate="false"> -integer llGetInventoryType(string name) -Returns the type of the inventory item name - </string> - <string name="LSLTipText_llSetPayPrice" translate="false"> -llSetPayPrice(integer price, list quick_pay_buttons) -Sets the default amount on the dialog that appears when someone chooses to pay this prim - </string> - <string name="LSLTipText_llGetCameraPos" translate="false"> -vector llGetCameraPos() -Returns the current camera position for the agent the task has permissions for - </string> - <string name="LSLTipText_llGetCameraRot" translate="false"> -rotation llGetCameraRot() -Returns the current camera orientation for the agent the task has permissions for - </string> - <string name="LSLTipText_llSetPrimURL" translate="false"> -llSetPrimURL(string url) -Updates the URL for the web page shown on the sides of the object - </string> - <string name="LSLTipText_llRefreshPrimURL" translate="false"> -llRefreshPrimURL() -Reloads the web page shown on the sides of the object - </string> - <string name="LSLTipText_llEscapeURL" translate="false"> -string llEscapeURL(string url) -Returns an escaped/encoded version of url, replacing spaces with %20 etc. - </string> - <string name="LSLTipText_llUnescapeURL" translate="false"> -string llUnescapeURL(string url) -Returns an unescaped/ unencoded version of url, replacing %20 with spaces etc. - </string> - <string name="LSLTipText_llMapDestination" translate="false"> -llMapDestination(string simname, vector pos, vector look_at) -Opens the World Map centered on the region simname with pos highlighted. (NOTE: look_at currently does nothing.) -Only works for scripts attached to avatar, or during touch events. - </string> - <string name="LSLTipText_llAddToLandBanList" translate="false"> -llAddToLandBanList(key avatar, float hours) -Adds avatar to the land ban list for hours, or indefinitely if hours is 0 - </string> - <string name="LSLTipText_llRemoveFromLandPassList" translate="false"> -llRemoveFromLandPassList(key avatar) -Removes avatar from the land pass list - </string> - <string name="LSLTipText_llRemoveFromLandBanList" translate="false"> -llRemoveFromLandBanList(key avatar) -Removes avatar from the land ban list - </string> - <string name="LSLTipText_llSetCameraParams" translate="false"> -llSetCameraParams(list rules) -Sets multiple camera parameters at once. -List format is [ rule1, data1, rule2, data2 . . . rulen, datan ] - </string> - <string name="LSLTipText_llClearCameraParams" translate="false"> -llClearCameraParams() -Resets all camera parameters to default values and turns off scripted camera control - </string> - <string name="LSLTipText_llListStatistics" translate="false"> -float llListStatistics(integer operation, list src) -Performs statistical aggregate functions on list src using LIST_STAT_* operations - </string> - <string name="LSLTipText_llGetUnixTime" translate="false"> -integer llGetUnixTime() -Returns the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock - </string> - <string name="LSLTipText_llGetParcelFlags" translate="false"> -integer llGetParcelFlags(vector pos) -Returns a mask of the parcel flags (PARCEL_FLAG_*) for the parcel that includes the point pos - </string> - <string name="LSLTipText_llGetRegionFlags" translate="false"> -integer llGetRegionFlags() -Returns the region flags (REGION_FLAG_*) for the region the object is in - </string> - <string name="LSLTipText_llXorBase64StringsCorrect" translate="false"> -string llXorBase64StringsCorrect(string s1, string s2) -Correctly performs an exclusive or on two Base64 strings and returns a Base64 string. -s2 repeats if it is shorter than s1. - </string> - <string name="LSLTipText_llHTTPRequest" translate="false"> -llHTTPRequest(string url, list parameters, string body) -Sends an HTTP request to the specified url with the body of the request and parameters - </string> - <string name="LSLTipText_llResetLandBanList" translate="false"> -llResetLandBanList() -Removes all Residents from the land ban list - </string> - <string name="LSLTipText_llResetLandPassList" translate="false"> -llResetLandPassList() -Removes all Residents from the land access/pass list - </string> - <string name="LSLTipText_llGetObjectPrimCount" translate="false"> -integer llGetObjectPrimCount(key object_id) -Returns the total number of prims for an object in the region - </string> - <string name="LSLTipText_llGetParcelPrimOwners" translate="false"> -list llGetParcelPrimOwners(vector pos) -Returns a list of all Residents who own objects on the parcel at pos and with individual prim counts. -Requires owner-like permissions for the parcel. - </string> - <string name="LSLTipText_llGetParcelPrimCount" translate="false"> -integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) -Returns the number of prims on the parcel at pos of the given category. -Categories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP - </string> - <string name="LSLTipText_llGetParcelMaxPrims" translate="false"> -integer llGetParcelMaxPrims(vector pos, integer sim_wide) -Returns the maximum number of prims allowed on the parcel at pos - </string> - <string name="LSLTipText_llGetParcelDetails" translate="false"> -list llGetParcelDetails(vector pos, list params) -Returns the parcel details specified in params for the parcel at pos. -Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA - </string> - <string name="LSLTipText_llSetLinkPrimitiveParams" translate="false"> -llSetLinkPrimitiveParams(integer linknumber, list rules) -Sets primitive parameters for linknumber based on rules - </string> - <string name="LSLTipText_llSetLinkTexture" translate="false"> -llSetLinkTexture(integer linknumber, string texture, integer face) -Sets the texture of face for a task that exists in the link chain at linknumber - </string> - <string name="LSLTipText_llStringTrim" translate="false"> -string llStringTrim(string src, integer trim_type) -Trims the leading and/or trailing white spaces from a string. -trim_type can be STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL. - </string> - <string name="LSLTipText_llRegionSay" translate="false"> -llRegionSay(integer channel, string msg) -Broadcasts msg on channel (not 0) that can be heard anywhere in the region by a script listening on channel - </string> - <string name="LSLTipText_llGetObjectDetails" translate="false"> -list llGetObjectDetails(key id, list params) -Returns the object details specified in params for the object with key id. -Params are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR - </string> - <string name="LSLTipText_llSetClickAction" translate="false"> -llSetClickAction(integer action) -Sets the action performed when a prim is clicked upon - </string> - <string name="LSLTipText_llGetRegionAgentCount" translate="false"> -integer llGetRegionAgentCount() -Returns the number of avatars in the region - </string> - <string name="LSLTipText_llTextBox" translate="false"> -llTextBox(key avatar, string message, integer chat_channel -Shows a dialog box on the avatar's screen with the message. -It contains a text box for input, and if entered that text is chatted on chat_channel. - </string> - <string name="LSLTipText_llGetAgentLanguage" translate="false"> -string llGetAgentLanguage(key avatar) -Returns the language code of the preferred interface language of the avatar - </string> - <string name="LSLTipText_llDetectedTouchUV" translate="false"> -vector llDetectedTouchUV(integer index) -Returns the u and v coordinates in the first two components of a vector, for the texture coordinates where the prim was touched in a triggered touch event - </string> - <string name="LSLTipText_llDetectedTouchFace" translate="false"> -integer llDetectedTouchFace(integer index) -Returns the index of the face where the avatar clicked in a triggered touch event - </string> - <string name="LSLTipText_llDetectedTouchPos" translate="false"> -vector llDetectedTouchPos(integer index) -Returns the position where the object was touched in a triggered touch event - </string> - <string name="LSLTipText_llDetectedTouchNormal" translate="false"> -vector llDetectedTouchNormal(integer index) -Returns the surface normal for a triggered touch event - </string> - <string name="LSLTipText_llDetectedTouchBinormal" translate="false"> -vector llDetectedTouchBinormal(integer index) -Returns the surface binormal for a triggered touch event - </string> - <string name="LSLTipText_llDetectedTouchST" translate="false"> -vector llDetectedTouchST(integer index) -Returns the s and t coordinates in the first two components of a vector, for the surface coordinates where the prim was touched in a triggered touch event - </string> - <string name="LSLTipText_llSHA1String" translate="false"> -string llSHA1String(string src) -Returns a string of 40 hex characters that is the SHA1 security Hash of src - </string> - <string name="LSLTipText_llGetFreeURLs" translate="false"> -integer llGetFreeURLs() -Returns the number of available URLs for the current script - </string> - <string name="LSLTipText_llRequestURL" translate="false"> -key llRequestURL() -Requests one HTTP:// url for use by this object. -An http_request event is triggered with the results. - </string> - <string name="LSLTipText_llRequestSecureURL" translate="false"> -key llRequestSecureURL() -Requests one HTTPS:// (SSL) url for use by this object. -An http_request event is triggered with the results. - </string> - <string name="LSLTipText_llReleaseURL" translate="false"> -llReleaseURL(string url) -Releases the specified URL, it will no longer be usable - </string> - <string name="LSLTipText_llHTTPResponse" translate="false"> -llHTTPResponse(key request_id, integer status, string body) -Responds to request_id with status and body - </string> - <string name="LSLTipText_llGetHTTPHeader" translate="false"> -string llGetHTTPHeader(key request_id, string header) -Returns the value for header for request_id - </string> - <string name="LSLTipText_llSetPrimMediaParams" translate="false"> -llSetPrimMediaParams(integer face, list params) -Sets the media params for a particular face on an object. If media is not already on this object, add it. -List is a set of name/value pairs in no particular order. Params not specified are unchanged, or if new media is added then set to the default specified. -The possible names are below, along with the types of values and what they mean. - </string> - <string name="LSLTipText_llGetPrimMediaParams" translate="false"> -list llGetPrimMediaParams(integer face, list params) -Returns the media params for a particular face on an object, given the desired list of names, in the order requested. -(Returns an empty list if no media exists on the face.) - </string> - <string name="LSLTipText_llClearPrimMedia" translate="false"> -llClearPrimMedia(integer face) -Clears (deletes) the media and all params from the given face. - </string> <!-- Avatar busy/away mode --> <string name="AvatarSetNotAway">Not Away</string> -- GitLab From 78f22028100a05d2b8c6cdf82b096fa83ef33cec Mon Sep 17 00:00:00 2001 From: Ramzi Linden <ramzi@lindenlab.com> Date: Sat, 30 Jan 2010 15:19:19 -0800 Subject: [PATCH 377/521] Backed out changeset: 6b8015e921da --- .../skins/default/xui/en/floater_aaa.xml | 57 + .../default/xui/en/floater_test_button.xml | 111 ++ .../default/xui/en/floater_test_checkbox.xml | 154 ++ .../default/xui/en/floater_test_combobox.xml | 158 ++ .../xui/en/floater_test_inspectors.xml | 138 ++ .../default/xui/en/floater_test_layout.xml | 91 ++ .../xui/en/floater_test_line_editor.xml | 106 ++ .../default/xui/en/floater_test_list_view.xml | 12 + .../xui/en/floater_test_navigation_bar.xml | 20 + .../xui/en/floater_test_radiogroup.xml | 84 + .../default/xui/en/floater_test_slider.xml | 101 ++ .../default/xui/en/floater_test_spinner.xml | 97 ++ .../xui/en/floater_test_text_editor.xml | 31 + .../default/xui/en/floater_test_textbox.xml | 254 +++ .../default/xui/en/floater_test_widgets.xml | 451 +++++ .../default/xui/en/floater_ui_preview.xml | 408 +++++ .../newview/skins/default/xui/en/strings.xml | 1447 +++++++++++++++++ 17 files changed, 3720 insertions(+) create mode 100644 indra/newview/skins/default/xui/en/floater_aaa.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_button.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_checkbox.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_combobox.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_inspectors.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_layout.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_line_editor.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_list_view.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_radiogroup.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_slider.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_spinner.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_text_editor.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_textbox.xml create mode 100644 indra/newview/skins/default/xui/en/floater_test_widgets.xml create mode 100644 indra/newview/skins/default/xui/en/floater_ui_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml new file mode 100644 index 00000000000..7236351f2e0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_minimize="false" + can_tear_off="false" + can_resize="true" + can_drag_on_left="false" + can_close="true" + can_dock="true" + bevel_style="in" + height="300" + layout="topleft" + name="Test Floater" + save_rect="true" + title="TEST FLOATER" + save_dock_state="true" + save_visibility="true" + single_instance="true" + width="320"> + <string name="nudge_parabuild" translate="false">Nudge 1</string> + <string name="test_the_vlt">This string CHANGE2 is extracted.</string> + <string name="testing_eli">Just a test. change here. more change.</string> + <chat_history + allow_html="true" + bg_readonly_color="ChatHistoryBgColor" + bg_writeable_color="ChatHistoryBgColor" + border_visible="false" + follows="all" + font="SansSerif" + left="1" + top="20" + layout="topleft" + height="260" + name="chat_history" + parse_highlights="true" + text_color="ChatHistoryTextColor" + text_readonly_color="ChatHistoryTextColor" + translate="false" + width="320"> +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. +Really long line that is long enough to wrap once with jyg descenders. + </chat_history> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml new file mode 100644 index 00000000000..bf0a774e766 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="500" + layout="topleft" + name="floater_test_button" + help_topic="floater_test_button" + translate="false" + width="500"> + <button + height="23" + label="Generic Button" + layout="topleft" + left="10" + name="generic_button" + top="20" + width="150" /> + <button + bottom_delta="30" + height="23" + label="Bottom delta" + layout="topleft" + name="bottom_delta_button" /> + <button + bottom_delta="30" + height="23" + label="SansSerifSmall" + layout="topleft" + name="sans_serif_small_button" /> + <button + auto_resize="true" + bottom_delta="30" + height="23" + label="Auto Resize" + layout="topleft" + name="auto_resize_button" /> + <button + bottom_delta="30" + height="23" + is_toggle="true" + label="Click Change Label" + label_selected="New Label" + layout="topleft" + name="label_selected_button" /> + <button + bottom_delta="30" + height="23" + label="No Label Shadow" + label_shadow="false" + layout="topleft" + name="label_shadow_button" /> + <button + bottom_delta="30" + height="23" + label="EmphasisColor Label" + label_color="EmphasisColor" + layout="topleft" + name="label_color_button" /> + <button + bottom_delta="30" + height="23" + is_toggle="true" + label="Toggle" + label_color_selected="EmphasisColor" + label_selected="Toggle on" + layout="topleft" + name="label_color_selected_button" /> + <button + bottom_delta="30" + enabled="false" + height="23" + label="Disabled" + label_color_disabled="EmphasisColor" + label_selected="Selected" + layout="topleft" + name="label_color_disabled_button" /> + <button + bottom_delta="30" + height="23" + highlight_color="EmphasisColor" + label="Highlight" + layout="topleft" + name="highlight_color_button" /> + <button + bottom_delta="30" + height="23" + hover_glow_amount="0" + label="No Hover Glow" + layout="topleft" + name="hover_glow_amount_button" /> + <button + height="16" + image_selected="Move_Run_Off" + image_unselected="Move_Run_Off" + layout="topleft" + left="200" + name="image_button" + top="20" + width="16" /> + <button + height="16" + image_color="EmphasisColor" + image_selected="Move_Run_Off" + image_unselected="Move_Run_Off" + layout="topleft" + left_delta="0" + name="image_color_button" + top_pad="10" + width="16" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml new file mode 100644 index 00000000000..c828f6b284f --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="400" + layout="topleft" + name="floater_test_checkbox" + help_topic="floater_test_checkbox" + translate="false" + width="400"> + <check_box + control_name="ShowStartLocation" + height="15" + initial_value="true" + label="Oh look it's a checkbox!" + layout="topleft" + left="10" + name="show_location_checkbox" + top="28" + width="256" /> + <check_box + height="15" + label="Minimal Checkbox" + layout="topleft" + left_delta="0" + name="minimal_checkbox" + top_pad="14" + width="150" /> + <check_box + enabled="false" + height="15" + label="Disabled Checkbox" + layout="topleft" + left_delta="0" + name="disabled_checkbox" + top_pad="14" + width="150" /> + <check_box + height="15" + label="Text Enabled Color" + layout="topleft" + left_delta="0" + name="text_enabled_color_checkbox" + text_enabled_color="EmphasisColor" + top_pad="14" + width="150" /> + <check_box + enabled="false" + height="15" + label="Text Disabled Color" + layout="topleft" + left_delta="0" + name="text_disabled_color_checkbox" + text_disabled_color="EmphasisColor_35" + top_pad="14" + width="150" /> + <check_box + height="15" + initial_value="true" + label="Initial Value Checked" + layout="topleft" + left_delta="0" + name="initial_value_checkbox" + top_pad="14" + width="150" /> + <check_box + font="Monospace" + height="15" + label="Font Monospace" + layout="topleft" + left_delta="0" + name="font_checkbox" + top_pad="14" + width="150" /> + +<chiclet_im_p2p + height="25" + name="im_p2p_chiclet" + show_speaker="false" + width="25"> + <chiclet_im_p2p.chiclet_button + height="25" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25"/> + <chiclet_im_p2p.speaker + auto_update="true" + draw_border="false" + height="25" + left="25" + name="speaker" + visible="false" + width="20" /> + <chiclet_im_p2p.avatar_icon + bottom="3" + follows="left|top|bottom" + height="20" + left="2" + mouse_opaque="false" + name="avatar_icon" + width="21" /> + <chiclet_im_p2p.unread_notifications + height="25" + font_halign="center" + left="25" + mouse_opaque="false" + name="unread" + text_color="white" + v_pad="5" + visible="false" + width="20"/> + <chiclet_im_p2p.new_message_icon + bottom="11" + height="14" + image_name="Unread_Chiclet" + left="12" + name="new_message_icon" + visible="false" + width="14" /> +</chiclet_im_p2p> + + +<chiclet_offer + height="25" + name="offer_chiclet" + width="25"> + <chiclet_offer.chiclet_button + height="25" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25"/> + <chiclet_offer.icon + bottom="3" + default_icon="Generic_Object_Small" + follows="all" + height="19" + left="3" + mouse_opaque="false" + name="chiclet_icon" + width="19" /> + <chiclet_offer.new_message_icon + bottom="11" + height="14" + image_name="Unread_Chiclet" + left="12" + name="new_message_icon" + visible="false" + width="14" /> +</chiclet_offer> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml new file mode 100644 index 00000000000..45e2e34da76 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="400" + layout="topleft" + name="floater_test_combobox" + help_topic="floater_test_combobox" + translate="false" + width="400"> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="24" + width="200"> + Real world usage (login location): + </text> + <combo_box + allow_text_entry="true" + control_name="LoginLocation" + follows="left|bottom" + height="18" + layout="topleft" + left_delta="0" + max_chars="128" + name="start_location_combo" + top_pad="2" + width="155"> + <combo_box.item + label="My Last Location" + name="MyLastLocation" + value="last" /> + <combo_box.item + label="My Home" + name="MyHome" + value="home" /> + <combo_box.item + label="<Type region name>" + name="Typeregionname" + value="" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Minimal combobox: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="minimal_combo" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + name="item1" + value="first" /> + <combo_box.item + label="Second Item" + name="item2" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Allow text input: + </text> + <combo_box + allow_text_entry="true" + height="18" + layout="topleft" + left_delta="0" + name="text_entry_combo" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + name="item1" + value="first" /> + <combo_box.item + label="Second Item" + name="item2" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Allow text input, default to second item: + </text> + <combo_box + allow_text_entry="true" + height="18" + initial_value="second" + layout="topleft" + left_delta="0" + name="text_entry_combo2" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + name="item1" + value="first" /> + <combo_box.item + label="Second Item" + name="item2" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Two character max input: + </text> + <combo_box + allow_text_entry="true" + height="16" + layout="topleft" + left_delta="0" + max_chars="2" + name="state_combo" + top_pad="4" + width="150"> + <combo_box.item + label="CA" + name="item1" + value="ca" /> + <combo_box.item + label="NY" + name="item2" + value="ny" /> + <combo_box.item + label="TX" + name="item3" + value="tx" /> + </combo_box> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml new file mode 100644 index 00000000000..0f5c5f2be07 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="false" + height="400" + layout="topleft" + name="floater_test_inspectors" + help_topic="floater_test_inspectors" + title="TEST INSPECTORS" + translate="false" + width="400"> + <text + height="20" + left="10" + name="test_inspectors" + top="30" + width="300"> + Click to spawn an inspector: + </text> + <button + name="avatar_2d_btn1" + label="Avatar 2D" + top="50" + left="10" + height="20" + width="100" + commit_callback.function="ShowAvatarInspector" + commit_callback.parameter="22df1dcb-810a-4975-aab9-0159958fe155" /> + <!-- InspectorA Tester --> + <button + name="avatar_2d_btn5" + label="Avatar 2D" + top_pad="10" + left="10" + height="20" + width="100" + commit_callback.function="ShowAvatarInspector" + commit_callback.parameter="927e68e0-e52d-4bb8-b1a9-add97a57c86a" /> + <!-- InspectorB Tester --> + <button + name="avatar_2d_btn2" + label="Avatar 2D" + top_pad="10" + left="10" + height="20" + width="100" + commit_callback.function="ShowAvatarInspector" + commit_callback.parameter="9a2300ca-e251-45dd-bb61-e33139f6e4eb" /> + <!-- InspectorC Tester --> + <button + name="avatar_2d_btn3" + label="Avatar 2D" + top_pad="10" + left="10" + height="20" + width="100" + commit_callback.function="ShowAvatarInspector" + commit_callback.parameter="8024f082-34cc-48a3-a42e-c42f345efd74" /> + <!-- jarvtest Bombastic 2009-10-3 --> + <button + name="avatar_2d_btn4" + label="Avatar 2D" + top_pad="10" + left="10" + height="20" + width="100" + commit_callback.function="ShowAvatarInspector" + commit_callback.parameter="e7dc3c83-1e11-4fa7-beeb-4b18adfb4efa" /> + <button + name="avatar_3d_btn" + label="Avatar 3D" + top="50" + left="150" + height="20" + width="100"/> + <button + name="object_2d_btn" + label="Object 2D" + top_pad="10" + left_delta="0" + height="20" + width="100"/> + <button + name="object_3d_btn" + label="Object 3D" + top_pad="10" + left_delta="0" + height="20" + width="100" + commit_callback.function="ShowObjectInspector" + commit_callback.parameter="" /> + <button + name="group_btn" + label="Group" + top_pad="10" + left_delta="0" + height="20" + width="100" + commit_callback.function="ShowGroupInspector" + commit_callback.parameter="" /> + <button + name="place_btn" + label="Place" + top_pad="10" + left_delta="0" + height="20" + width="100"/> + <button + name="event_btn" + label="Event" + top_pad="10" + left_delta="0" + height="20" + width="100"/> + <text + follows="left|top" + font="SansSerif" + height="20" + left="0" + max_length="65536" + name="slurl" + top_pad="4" + width="150"> + secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect + </text> + <text + follows="left|top" + font="SansSerif" + height="20" + left="0" + max_length="65536" + name="slurl_group" + top_pad="4" + width="150"> + secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect + </text> + +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml new file mode 100644 index 00000000000..94f7e0b7980 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="500" + layout="topleft" + name="floater_test_layout" + help_topic="floater_test_layout" + translate="false" + width="500"> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="84" + width="200"> + bottom 400 left 10 + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="4" + width="200"> + Bottom delta -20 + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="64" + width="200"> + bottom 300 left 10, should delta_bottom + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="40" + top_delta="0" + width="200"> + bottom 300 left 250, should delta_left + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="204" + width="200"> + bottom 280 left 10, should absolute position + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="40" + top_delta="-2" + width="200"> + bottom 282 left 250, should delta_left and delta_bottom + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="234" + width="200"> + bottom 250 left 10, should absolute position + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="250" + top="244" + width="200"> + bottom 240 left 250, should absolute position + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml new file mode 100644 index 00000000000..2894ad2a325 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="500" + layout="topleft" + name="floater_test_line_editor" + help_topic="floater_test_line_editor" + translate="false" + width="400"> + <line_editor + height="20" + layout="topleft" + left="10" + name="enabled_line_editor" + top="40" + tool_tip="enabled line editor" + width="200"> + Enabled line editor + </line_editor> + <line_editor + height="20" + layout="topleft" + left_delta="0" + name="ascii_line_editor" + prevalidate_callback="ascii" + tool_tip="ascii line editor" + top_pad="10" + width="200"> + ASCII only line editor + </line_editor> + <line_editor + enabled="false" + height="20" + layout="topleft" + left_delta="0" + name="disabled_line_editor" + top_pad="10" + tool_tip="disabled line editor" + width="200"> + Disabled line editor + </line_editor> + <line_editor + height="20" + layout="topleft" + left_delta="0" + name="enabled_colored_line_editor" + text_color="1 0 0 1" + top_pad="10" + tool_tip="enabled colored line editor" + width="200"> + Enabled red-text line editor + </line_editor> + <line_editor + enabled="false" + height="20" + layout="topleft" + left_delta="0" + name="disabled_colored_line_editor" + text_readonly_color="1 0 0 1" + top_pad="10" + tool_tip="disabled colored line editor" + width="200"> + Disabled red-text line editor + </line_editor> + <line_editor + height="20" + left_delta="0" + name="left_pad_editor" + text_pad_left="25" + top_pad="10" + width="200"> + 25 px left text padding + </line_editor> + <line_editor + height="20" + left_delta="0" + name="left_pad_editor" + text_pad_right="75" + top_pad="10" + width="200"> + 75 px right text padding + </line_editor> + <line_editor + height="20" + left_delta="0" + name="left_pad_editor" + text_pad_left="25" + text_pad_right="75" + top_pad="10" + width="200"> + 25 px left 75 px right text padding + </line_editor> + <!-- "search_editor" is a specialized line_editor that shows read-only + help text until the user clicks in the widget. --> + <search_editor + follows="left|top|right" + height="20" + label="Type here to search" + layout="topleft" + left_delta="0" + name="search editor" + tool_tip="search editor" + top_pad="10" + width="200" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml new file mode 100644 index 00000000000..32ccc31dfd4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="400" + layout="topleft" + name="floater_test_list_view" + help_topic="floater_test_list_view" + translate="false" + width="400"> + <!-- intentionally empty --> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml new file mode 100644 index 00000000000..f4a50ecc962 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="200" + layout="topleft" + name="floater_test_navigation_bar" + help_topic="floater_test_navigation_bar" + translate="false" + width="900"> + <panel + name="navigation_bar" + filename="panel_navigation_bar.xml" + left="10" + right="-10" + top="30" + height="100" + border="true" + /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml new file mode 100644 index 00000000000..db14ecae831 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="400" + layout="topleft" + name="floater_test_radiogroup" + help_topic="floater_test_radiogroup" + translate="false" + width="400"> + <radio_group + height="54" + layout="topleft" + left="10" + name="parcel_voice_channel" + top="46" + width="219"> + <radio_item + height="16" + label="Use the Estate spatial channel" + layout="topleft" + left="3" + name="Estate" + top="3" + width="463" /> + <radio_item + height="16" + label="Use a private spatial channel" + layout="topleft" + left_delta="0" + name="Private" + top_delta="16" + width="463" /> + <radio_item + height="16" + label="Disable spatial audio on this parcel" + layout="topleft" + left_delta="0" + name="Disabled" + top_delta="16" + width="463" /> + </radio_group> + <radio_group + height="50" + layout="topleft" + left_delta="0" + name="simple_radio_group" + top_pad="50" + width="150"> + <radio_item + bottom="20" + height="16" + label="Label in label attribute" + layout="topleft" + name="label_radio_item" /> + <radio_item + bottom_delta="20" + height="16" + label="Label in text contents" + layout="topleft" + name="contents_radio_item" /> + </radio_group> + <radio_group + draw_border="false" + height="50" + layout="topleft" + left_delta="0" + name="no_border_radio_group" + top_pad="50" + width="150"> + <radio_item + bottom="20" + height="16" + label="No Border Foo" + layout="topleft" + name="foo_radio_item" /> + <radio_item + bottom_delta="20" + height="16" + label="No Border Bar" + layout="topleft" + name="bar_item" /> + </radio_group> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml new file mode 100644 index 00000000000..20bd555a032 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="500" + layout="topleft" + name="floater_test_slider" + help_topic="floater_test_slider" + translate="false" + width="450"> + <slider + height="20" + label="Generic Slider" + layout="topleft" + left="10" + name="generic_slider" + top="40" + width="250" /> + <slider + height="20" + label="Callback Slider" + layout="topleft" + left_delta="0" + name="callback_slider" + top_pad="20" + width="400"> + <slider.mouse_up_callback + function="Test.TestCallback" + parameter="test" /> + </slider> + <slider + height="20" + increment="1" + initial_value="2.0" + label="Value Slider" + layout="topleft" + left_delta="0" + max_val="5" + min_val="1" + name="value_slider" + top_pad="20" + width="250" /> + <slider + height="20" + label="Mini Slider 1" + layout="topleft" + left_delta="0" + name="mini_slider_1" + top_pad="20" + width="200" /> + <slider + height="20" + label="Mini Slider 2" + layout="topleft" + left_pad="20" + name="mini_slider_2" + top_delta="0" + width="200" /> + <slider_bar + bottom="320" + height="100" + left="20" + name="slider_bar_vertical" + orientation="vertical" + width="20" /> + <slider_bar + bottom="300" + height="20" + increment="1" + initial_value="2.0" + label="Slider Bar" + layout="topleft" + max_val="5" + min_val="1" + left_pad="20" + name="slider_bar" + width="300" /> + <slider + bottom="360" + decimal_digits="1" + height="20" + label="Red Slider" + label_width="100" + layout="topleft" + name="red_slider" + text_color="red" + text_width="40" /> + <slider + width ="140" + bottom="490" + decimal_digits="1" + height="100" + left="20" + label="Red Slider Vertical" + label_width="100" + layout="topleft" + name="red_slider_vertical" + text_color="red" + orientation="vertical" + text_width="20" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml new file mode 100644 index 00000000000..acd49aa492e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="400" + layout="topleft" + name="floater_test_spinner" + help_topic="floater_test_spinner" + translate="false" + width="450"> + <spinner + height="32" + label="Generic Spinner" + layout="topleft" + left="10" + label_width="100" + name="generic_spinner" + top="40" + width="350" /> + <spinner + height="20" + label="Callback Spinner" + label_width="100" + layout="topleft" + left_delta="0" + name="callback_spinner" + top_pad="20" + width="400" /> + <spinner + height="20" + label="Colorful Spinner" + layout="topleft" + left_delta="0" + name="colorful_spinner" + top_pad="20" + width="250" /> + <spinner + height="20" + increment="1" + initial_value="2.0" + label="Value Spinner" + layout="topleft" + left_delta="0" + max_val="5" + min_val="1" + name="value_spinner" + top_pad="20" + width="250" /> + <spinner + height="20" + label="Mini Spinner 1" + layout="topleft" + left_delta="0" + name="mini_spinner_1" + top_pad="20" + width="200" /> + <spinner + height="20" + label="Mini Spinner 2" + layout="topleft" + left_pad="20" + name="mini_spinner_2" + top_delta="0" + width="200" /> + <spinner + control_name="RenderFogRatio" + decimal_digits="1" + height="20" + label="Control Spinner" + layout="topleft" + left="10" + max_val="20" + min_val="10" + name="control_spinner" + top="260" + width="250" /> + <spinner + follows="left" + height="20" + label="Follows Left" + label_width="85" + layout="topleft" + left_delta="0" + name="follows_left" + top_pad="20" + width="250" /> + <spinner + follows="right" + height="20" + label="Follows Right" + label_width="85" + layout="topleft" + left_delta="0" + name="follows_right" + top_pad="20" + width="250" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml new file mode 100644 index 00000000000..dc8f00d5f36 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="600" + layout="topleft" + name="floater_test_text_editor" + translate="false" + width="800"> + <text_editor + height="50" + follows="top|left|bottom" + left="10" + name="test_text_editor" + tool_tip="text editor" + top="25" + width="200"> + Text Editor + </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + font="SansSerif" + left="10" + name="test_text_editor" + tool_tip="text editor" + top_pad="10" + width="200"> + This contains long text and should scroll horizontally to the right + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml new file mode 100644 index 00000000000..2df9bb35fe8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -0,0 +1,254 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="600" + layout="topleft" + name="floater_test_textbox" + help_topic="floater_test_textbox" + translate="false" + width="800"> + <text + type="string" + length="1" + height="90" + layout="topleft" + left="10" + top_pad="30" + width="300"> + First line of multiple lines +Second line of multiple lines +Third line of multiple lines +Fourth line of multiple lines +Fifth line of multiple lines + </text> + <text + clip_partial="true" + top_pad="10" + left="10" + width="267" + height="28" + layout="topleft" + follows="right|left" + text_color="white" + use_ellipses="true" + word_wrap="true" + mouse_opaque="false" + name="title" > + This text has word_wrap set true, use_ellipses set true, and clip_partial set true, so it should wrap around, spilling over to the last line, then clip the last partial line and show ellipses to indicate there is more text + </text> + + <text + font="SansSerif" + font.style="BOLD" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + SansSerif BOLD + </text> + <text + font="SansSerif" + font.style="BOLD|UNDERLINE" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + SansSerif BOLD UNDERLINE + </text> + <text + bottom="390" + left="10" + name="right_aligned_text" + width="300" + halign="right" + top_pad="10"> + Right aligned text + </text> + <text + bottom="390" + left="10" + name="centered_text" + width="300" + halign="center" + top_pad="10"> + Centered text + </text> + <text + left="10" + name="left_aligned_text" + width="300" + halign="left" + top_pad="10"> + Left aligned text + </text> + <text + left="10" + name="v_pad_text" + height="40" + width="300" + halign="left" + top_pad="10" + v_pad="10"> + v_pad = 10, height = 40 + </text> + <text + left="10" + name="v_pad_text" + height="40" + width="300" + halign="left" + top_pad="10" + h_pad="30"> + h_pad = 30, height = 40 + </text> + <text + top_pad="10" + left="10" + right="-10" + height="20" + follows="top|left" + font.name="SansSerifSmall" + name="test_text10" + tool_tip="text"> + SansSerifSmall + The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. + </text> + <text + top_pad="10" + left="10" + right="-10" + height="25" + follows="top|left" + font.name="SansSerifMedium" + name="test_text11" + tool_tip="text"> + SansSerif + The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. + </text> + <text + top_pad="10" + left="10" + right="-10" + follows="top|left" + height="26" + font.name="SansSerifLarge" + name="test_text12" + tool_tip="text"> + SansSerifLarge + The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. + </text> + <text + top_pad="10" + left="10" + height="35" + right="-10" + follows="top|left" + font.name="SansSerifHuge" + name="test_text13" + tool_tip="text"> + SansSerifHuge + The åŽæ–‡ç»†é»‘ brown fox ヒラã‚jumped over the lazy dog. + </text> + +<!-- next column --> + <text_editor + height="50" + follows="top|left|bottom" + left="400" + name="test_text_editor" + tool_tip="text editor" + top="25" + width="200"> + Text Editor + </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + left_delta="0" + name="long_text_editor" + tool_tip="text editor" + top_pad="10" + width="200"> +Text Editor +with multiple +lines of text +and hence a +scroll bar + </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + left_delta="0" + max_length="65536" + name="blob_text_editor" + tool_tip="text editor" + top_pad="10" + width="200" + word_wrap="true"> +Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + font="Monospace" + left_delta="0" + name="monospace_text_editor" + tool_tip="text editor" + top_pad="10" + width="200"> +Text Editor +with multiple +lines of text +and hence a +scroll bar gjyrrr + </text_editor> + <text_editor + border_visible="true" + height="50" + follows="top|left|bottom" + font="Monospace" + left_delta="0" + name="monospace_text_editor" + tool_tip="text editor" + top_pad="10" + width="200"> +Text Editor +with multiple +lines of text +and hence a +scroll bar gjyrrr + </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + font="SansSerif" + left_delta="0" + name="sansserif_text_editor" + tool_tip="text editor" + top_pad="10" + width="200"> +Text Editor +with multiple +lines of text +and hence a +scroll bar gjyrrr + </text_editor> + + <text + height="40" + follows="top|left|bottom" + layout="topleft" + name="test_text_box" + tool_tip="text box" + top_pad="5" + width="200"> +Text box +with +multiple lines +and too many lines +to actually fit + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml new file mode 100644 index 00000000000..447bd7f599b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -0,0 +1,451 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- Sample "floater" window with examples of common widgets. + + Notes: + XML UI (XUI) files use spaces for indentation, not tabs. + All position values are in pixels. + For now, each widget must contain attribute layout="topleft". + 0,0 is the top-left corner of the floater. + Each widget must have a unique name attribute. + If a widget is aligned with the one before it, use relative positioning: + top_pad + top_delta + left_pad + left_delta + Otherwise specify location with left and top attributes. +--> +<floater + legacy_header_height="18" + can_dock="true" + can_resize="true" + title="TEST FLOATER" + height="500" + min_width="850" + min_height="500" + layout="topleft" + name="floater_test_widgets" + help_topic="floater_test_widgets" + translate="false" + width="850"> + + <!-- Strings are used by C++ code for localization. They are not visible + unless the C++ code uses them to fill in another widget. --> + <floater.string + name="sample_string" + value="Sample String" /> + <floater.string + name="other_string" + value="Other String" /> + + <!-- Floaters can contain drop-down menus. + The menu_bar widget contains the inividual menus. + The width is automatically computed to fit the labels. --> + <menu_bar + height="18" + layout="topleft" + follows="top|left" + tool_tip="menu" + left="2" + name="test_menu_bar" + top="16"> + <menu + height="16" + label="Menu" + layout="topleft" + tear_off="true" + left="0" + name="Menu" + top="-32" + width="128"> + <!-- menu_item_call will trigger a function call in the C++ code --> + <menu_item_call + label="Menu Item 1" + layout="topleft" + name="test_menu_item_1" /> + <!-- menu_item_separator is a horizontal line used to separate sections + of a menu. In general, menus should be divided into chunks of + no more than 7 items separated by menu_item_separators. --> + <menu_item_separator/> + <menu_item_call + label="Menu Item 2" + layout="topleft" + name="test_menu_item_2" /> + </menu> + </menu_bar> + + <!-- "text" is one or more read-only lines of text. + It can be made clickable but this requires C++ code + support. URLs are not automatically underlined. --> + <text + bottom="55" + layout="topleft" + follows="top|left" + left="10" + height="16"> + For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets + </text> + + <!-- First column --> + + <button + height="20" + follows="top|left" + label="Button" + layout="topleft" + left_delta="0" + name="test_button" + tool_tip="button" + top="80" + width="100" /> + <!-- "flyout_button" is a button that can spawn a menu --> + <flyout_button + follows="top|left" + height="20" + label="Flyout" + layout="topleft" + left_delta="0" + name="fly_btn" + top_pad="15" + tool_tip="flyout button" + width="100"> + <flyout_button.item + label="Item 1" + value="shout" /> + <flyout_button.item + label="Item 2" + value="say" /> + <flyout_button.item + label="Item 3" + value="whisper" /> + </flyout_button> + <check_box + bottom_delta="35" + label="Checkbox" + layout="topleft" + tool_tip="checkbox" + name="test_checkbox" /> + <check_box + top_pad="5" + enabled="false" + label="Checkbox Disabled" + tool_tip="checkbox disabled" + name="test_checkbox_disabled" /> + <!-- "combo_box" is a pop-menu of items. Optionally the box itself can + contain a general purpose line input editor, allowing the user to + provide input that is not a list item. --> + <combo_box + bottom_delta="35" + follows="top|left" + height="16" + width="150" + label="Combobox" + layout="topleft" + tool_tip="combo box" + name="test_combo_box"> + <combo_box.item + name="item1" + label="Combobox Item 1" /> + <combo_box.item + name="item2" + label="Combobox Item 2" /> + </combo_box> + <!-- "icon" is a read-only image. The image_name must match an entry + in textures.xml. We support TGA and PNG for UI images. --> + <icon + height="16" + image_name="icon_avatar_online.tga" + layout="topleft" + left_delta="0" + tool_tip="icon" + name="test_icon" + top_pad="40" + width="16" /> + <!-- "line_editor" allows a single line of editable text input. + The contents of this XML node are used as the initial value for + the text. --> + <line_editor + height="20" + follows="top|left" + layout="topleft" + left_delta="0" + name="test_line_editor" + top_pad="20" + tool_tip="line editor" + width="200"> + Line Editor Sample Text + </line_editor> + <!-- "filter_editor" is a specialized line_editor that shows read-only + help text until the user clicks in the widget. --> + <filter_editor + follows="left|top" + height="20" + label="Type here to search" + layout="topleft" + left_delta="0" + name="search editor" + tool_tip="search editor" + top_pad="30" + width="200" /> + <!-- "progress_bar" percent completed gets set in C++ code --> + <progress_bar + height="16" + follows="top|left" + layout="topleft" + left_delta="0" + name="test_progress_bar" + top_pad="30" + tool_tip="progress bar" + width="200" /> + <!-- "stat_view" is a container for statistics graphs. It is only used + for debugging/diagnostic displays. --> + <stat_view + height="250" + label="Statistics View" + layout="topleft" + left_delta="0" + name="axis_view" + show_label="true" + top_pad="30" + tool_tip="stat view" + width="200"> + <stat_bar + width="100" + bar_max="100" + bottom_delta="30" + label="Test Stat" + layout="topleft" + stat="stat" + bar_min="20" + name="test_stat_bar" /> + </stat_view> + + <!-- New column --> + + <!-- "radio_group" is a set of mutually exclusive choices, like the buttons + on a car radio that allow a single radio station to be chosen. --> + <radio_group + height="40" + layout="topleft" + left_pad="90" + name="size_radio_group" + tool_tip="radio group" + top="80" + width="200"> + <radio_item + bottom="20" + label="Radio 1" + layout="topleft" + name="small_radio_item" /> + <radio_item + label="Radio 2" + layout="topleft" + name="large_radio_item" /> + </radio_group> + <!-- "scroll_list" is a scrolling list of columnar data. --> + <scroll_list + bottom_delta="100" + follows="top|left" + height="80" + draw_heading="true" + tool_tip="scroll list" + layout="topleft"> + <scroll_list.columns + dynamic_width="true" + name="first_column" + label="Column A"/> + <scroll_list.columns + dynamic_width="true" + name="second_column" + label="Column B"/> + <row> + <column column="first_column">short text</column> + <column column="second_column">more short text</column> + </row> + <row> + <column column="first_column">this is some longer text</column> + <column column="second_column">and here is some more long text</column> + </row> + </scroll_list> + <!-- "slider" is a horizontal input widget for numerical data. --> + <slider + bottom_delta="45" + follows="top|left" + layout="topleft" + min_val="0" + max_val="100" + initial_value="20" + label="Slider" + name="test_slider" + tool_tip="slider" + width="200" /> + <!-- "spinner" is a numerical input widget with an up and down arrow to + change the value. --> + <spinner + bottom_delta="35" + follows="top|left" + label="Spinner" + layout="topleft" + label_width="45" + name="test_spinner" + tool_tip="spinner"/> + <text + bottom_delta="50" + follows="top|left" + font.name="SansSerifSmall" + font.style = "UNDERLINE" + layout="topleft" + name="test_text" + tool_tip="text"> + Text (underlined) + </text> + <text + top_pad="10" + follows="top|left" + layout="topleft" + width="60" + use_ellipses="true" + name="test_text" + tool_tip="text"> + Truncated text here + </text> + <!-- "text_editor" is a multi-line text input widget, similar to + textarea in HTML. --> + <text_editor + height="40" + follows="top|left|bottom" + layout="topleft" + left_delta="0" + name="test_text_editor" + tool_tip="text editor" + top_pad="25" + width="200"> + Text Editor + </text_editor> + <text + height="40" + follows="top|left|bottom" + layout="topleft" + name="test_text_box" + tool_tip="text box" + top_pad="5" + width="200"> + Text box +with +multiple lines +and too +many +line to actually fit + </text> + <!-- And a third column --> + + <!-- "tab_container" is a holder for multiple panels of UI widgets. + Tabs can appear at the top, bottom, or left of the container. --> + <tab_container + follows="all" + height="400" + halign="center" + layout="topleft" + left="525" + name="group_tab_container" + tab_position="top" + tab_height="20" + tool_tip="tab container" + top="80" + width="300"> + <!-- "panel" is a container for widgets. It is automatically resized to + fit the parent tab_container. --> + <panel + border="true" + label="Tab 1 - Color" + layout="topleft" + name="panel2"> + <!-- "color_swatch" displays a color and spawns a color picker when + clicked. --> + <color_swatch + can_apply_immediately="true" + color="0.3 0.6 0.9 1" + follows="left|top" + height="90" + layout="topleft" + left="10" + label="Color Swatch 1" + name="swatch1" + tool_tip="Color Swatch: Click to open Color Picker" + top="10" + width="80" /> + <color_swatch + can_apply_immediately="true" + color="1 0 1 1" + follows="left|top" + height="90" + label="Color Swatch 2" + layout="topleft" + left_pad="10" + name="swatch2" + tool_tip="Color Swatch: Click to open Color Picker" + top_delta="0" + width="80" /> + <text + top_pad="10" + left="10" + width="250" + follows="top|left" + font.name="Monospace" + name="test_text10" + tool_tip="text"> + Monospace Button Flyout Checkbox + </text> + <text + top_pad="10" + left="10" + width="250" + follows="top|left" + font.name="SansSerifSmall" + name="test_text10" + tool_tip="text"> + SansSerifSmall. РуÑÑкий 䏿–‡ (简体) + </text> + <text + top_pad="10" + left="10" + width="250" + follows="top|left" + font.name="SansSerif" + name="test_text11" + tool_tip="text"> + SansSerif. РуÑÑкий 䏿–‡ (简体) + </text> + <text + top_pad="10" + left="10" + width="250" + follows="top|left" + font.name="SansSerifLarge" + name="test_text12" + tool_tip="text"> + SansSerifLarge. РуÑÑкий 䏿–‡ (简体) + </text> + <text + top_pad="10" + left="10" + width="250" + follows="top|left" + font.name="SansSerifHuge" + name="test_text13" + tool_tip="text"> + SansSerifHuge. РуÑÑкий 䏿–‡ (简体) + </text> + </panel> + <!-- panels can also refer to other floaters or panels --> + <panel + border="true" + filename="floater_test_checkbox.xml" + height="225" + label="Tab 2 - Checkbox" + layout="topleft" + left_delta="0" + name="tab2" + top_delta="159" + width="250" /> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml new file mode 100644 index 00000000000..e86cb23c1eb --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -0,0 +1,408 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="640" + layout="topleft" + min_height="230" + min_width="650" + name="gui_preview_tool" + help_topic="gui_preview_tool" + single_instance="true" + title="XUI PREVIEW TOOL" + translate="false" + width="750"> + <panel + bottom="640" + follows="left|top|right|bottom" + layout="topleft" + left="0" + mouse_opaque="false" + name="main_panel" + right="750" + top="0"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="30" + layout="topleft" + left="10" + name="select_language_label" + top="25" + width="130"> + Primary Language: + </text> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_pad="5" + name="language_select_combo" + top_delta="0" + width="55"> + <combo_box.item + label="en" + name="item1" + value="en" /> + </combo_box> + <button + follows="left|top" + height="25" + label="Show" + label_selected="Show" + layout="topleft" + left_pad="10" + name="display_floater" + tool_tip="Display the XUI floater defined by the selected XML file" + top_delta="-2" + width="95" /> + <button + enabled="false" + follows="left|top" + height="25" + label="Hide" + label_selected="Hide" + layout="topleft" + left_pad="10" + name="close_displayed_floater" + tool_tip="Closes the currently-displayed floater, if one exists" + top_delta="0" + width="85" /> + <button + follows="left|top" + height="25" + label="Edit..." + label_selected="Edit..." + layout="topleft" + left_pad="10" + name="edit_floater" + tool_tip="Edit the XUI floater defined by the selected XML file (opens external editor). Opens en version if no localized version exists." + top_delta="0" + width="95" /> + <button + follows="left|top" + height="25" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="5" + name="save_floater" + tool_tip="Save the XUI floater defined by the selected XML file" + top_delta="0" + width="85" /> + <button + follows="left|top" + height="25" + label="Save All" + label_selected="Save All" + layout="topleft" + left_pad="10" + name="save_all_floaters" + tool_tip="Save all XUI floaters defined by the selected language" + top_delta="0" + width="85" /> + <button + follows="right|top" + height="25" + is_toggle="true" + label="> >" + label_selected="< <" + layout="topleft" + left_pad="15" + name="toggle_overlap_panel" + tool_tip="Toggle highlighting and display panel for overlapping elements; right click an element to select it for this feature. The selected element is marked by a red rectangle." + top_delta="0" + width="30" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="30" + layout="topleft" + left="10" + name="select_language_label_2" + right="-50" + top="53" + width="105"> + Secondary Language: + </text> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_delta="135" + name="language_select_combo_2" + top_delta="0" + width="55"> + <combo_box.item + label="en" + name="item1" + value="en" /> + </combo_box> + <button + follows="left|top" + height="25" + label="Show" + layout="topleft" + left_pad="10" + name="display_floater_2" + tool_tip="Display the XUI floater defined by the selected XML file" + top_delta="-2" + width="95" /> + <button + enabled="false" + follows="left|top" + height="25" + label="Hide" + layout="topleft" + left_pad="10" + name="close_displayed_floater_2" + tool_tip="Closes the currently-displayed floater, if one exists" + top_delta="0" + width="85" /> + <button + follows="left|top" + height="25" + label="Export Schema" + layout="topleft" + left_pad="10" + name="export_schema" + top_delta="0" + width="120" /> + <check_box + follows="left|top" + label="Show Rectangles" + name="show_rectangles" + left_pad="10" + top_delta="0" + height="25" + width="120" /> + + <scroll_list + bottom="525" + column_padding="0" + draw_heading="true" + draw_stripes="false" + follows="left|top|bottom|right" + label="Name" + layout="topleft" + left="10" + name="name_list" + right="-10" + search_column="1" + top="80"> + <scroll_list.columns + label="Title" + name="title_column" + width="150" /> + <scroll_list.columns + label="File" + name="file_column" + width="150" /> + <scroll_list.columns + dynamic_width="true" + label="Top-Level Node" + name="top_level_node_column" /> + </scroll_list> + <panel + bevel_style="in" + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + border="true" + bottom_delta="65" + follows="left|right|bottom" + height="60" + layout="topleft" + left="10" + name="editor_panel" + right="-10"> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="10" + name="editor_path_label" + top="10" + width="100"> + Editor Path: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="100" + max_length="300" + name="executable_path_field" + select_on_focus="true" + tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)" + top_delta="-2" + width="315" /> + <button + follows="left|bottom" + height="25" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="5" + name="browse_for_executable" + tool_tip="Browse for an editor (executable) to edit floater XML files" + top_delta="-2" + width="75" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="-420" + name="executable_args_label" + top="36" + width="100"> + Editor Arguments: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="100" + max_length="300" + name="executable_args_field" + select_on_focus="true" + tool_tip="Command-line arguments to the editor; use '%FILE%' to refer to the target file; 'YourProgram.exe FileName.xml' will be run if this field is empty" + top_delta="-2" + width="315" /> + </panel> + <panel + bevel_style="in" + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + border="true" + bottom_delta="40" + follows="left|right|bottom" + height="35" + layout="topleft" + left="10" + name="vlt_panel" + right="-10"> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="10" + name="diff_file_label" + top="10" + width="200"> + Delta File: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="65" + max_length="300" + name="vlt_diff_path_field" + select_on_focus="true" + tool_tip="The full path to an XML D0 or D1 localization difference file generated by the Viewer Localization Toolkit" + top_delta="-2" + width="235" /> + <button + follows="left|bottom" + height="25" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="5" + name="browse_for_vlt_diffs" + tool_tip="Browse for a VLT-generated D0 or D1 difference file to highlight changed files and elements" + top_delta="-2" + width="75" /> + <button + follows="left|bottom" + height="25" + is_toggle="true" + label="Highlight Diffs" + label_selected="Unhighlight Diffs" + layout="topleft" + left_pad="5" + name="toggle_vlt_diff_highlight" + tool_tip="Toggle highlighting of files and elements containing changed localization data" + top_delta="0" + width="110" /> + </panel> + </panel> + <scroll_container + follows="top|right|bottom" + height="600" + layout="topleft" + left="750" + name="overlap_scroll" + reserve_scroll_corner="true" + top="20" + width="300"> + <panel + border="true" + name="overlap_dummy_panel" + top="0" + left="0" + width="300" + height="600" + > + <overlap_panel + background_opaque="true" + background_visible="true" + bevel_style="in" + bg_alpha_color="0 0 0 1" + bg_opaque_color="1 1 1 1" + border="true" + follows="top|right|bottom" + height="600" + label="Overlap Panel" + layout="topleft" + left="0" + min_width="300" + name="overlap_panel" + tool_tip="This panel displays the currently-selected element and all of the elements that overlap it, separated by horizontal lines" + top="0" + visible="false" + width="300" /> + <text + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="30" + layout="topleft" + left="10" + name="overlap_panel_label" + top="10" + width="150"> + Overlapping Elements: + </text> + </panel> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index ada702cffef..b378944e48a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -299,6 +299,1453 @@ <!-- LSL Usage Hover Tips --> <!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window). This has no effect on viewer code, but prevents Linden Lab internal localization tool from scraping these strings. --> + <string name="LSLTipSleepTime" translate="false"> +Sleeps script for [SLEEP_TIME] seconds. + </string> + + <string name="LSLTipText_llSin" translate="false"> +float llSin(float theta) +Returns the sine of theta (theta in radians) + </string> + <string name="LSLTipText_llCos" translate="false"> +float llCos(float theta) +Returns the cosine of theta (theta in radians) + </string> + <string name="LSLTipText_llTan" translate="false"> +float llTan(float theta) +Returns the tangent of theta (theta in radians) + </string> + <string name="LSLTipText_llAtan2" translate="false"> +float llAtan2(float y, float x) +Returns the arctangent2 of y, x + </string> + <string name="LSLTipText_llSqrt" translate="false"> +float llSqrt(float val) +Returns the square root of val, or returns 0 and triggers a Math Error for imaginary results + </string> + <string name="LSLTipText_llPow" translate="false"> +float llPow(float base, float exponent) +Returns the base raised to the power exponent, or returns 0 and triggers Math Error for imaginary results + </string> + <string name="LSLTipText_llAbs" translate="false"> +integer llAbs(integer val) +Returns the positive version of val + </string> + <string name="LSLTipText_llFabs" translate="false"> +float llFabs(float val) +Returns the positive version of val + </string> + <string name="LSLTipText_llFrand" translate="false"> +float llFrand(float mag) +Returns a pseudo random number in the range [0,mag) or (mag,0] + </string> + <string name="LSLTipText_llFloor" translate="false"> +integer llFloor(float val) +Returns largest integer value <= val + </string> + <string name="LSLTipText_llCeil" translate="false"> +integer llCeil(float val) +Returns smallest integer value >= val + </string> + <string name="LSLTipText_llRound" translate="false"> +integer llRound(float val) +Returns val rounded to the nearest integer + </string> + <string name="LSLTipText_llVecMag" translate="false"> +float llVecMag(vector v) +Returns the magnitude of v + </string> + <string name="LSLTipText_llVecNorm" translate="false"> +vector llVecNorm(vector v) +Returns the v normalized + </string> + <string name="LSLTipText_llVecDist" translate="false"> +float llVecDist(vector v1, vector v2) +Returns the 3D distance between v1 and v2 + </string> + <string name="LSLTipText_llRot2Euler" translate="false"> +vector llRot2Euler(rotation q) +Returns the Euler representation (roll, pitch, yaw) of q + </string> + <string name="LSLTipText_llEuler2Rot" translate="false"> +rotation llEuler2Rot(vector v) +Returns the rotation representation of Euler Angles v + </string> + <string name="LSLTipText_llAxes2Rot" translate="false"> +rotation llAxes2Rot(vector fwd, vector left, vector up) +Returns the rotation defined by the coordinate axes + </string> + <string name="LSLTipText_llRot2Fwd" translate="false"> +vector llRot2Fwd(rotation q) +Returns the forward vector defined by q + </string> + <string name="LSLTipText_llRot2Left" translate="false"> +vector llRot2Left(rotation q) +Returns the left vector defined by q + </string> + <string name="LSLTipText_llRot2Up" translate="false"> +vector llRot2Up(rotation q) +Returns the up vector defined by q + </string> + <string name="LSLTipText_llRotBetween" translate="false"> +rotation llRotBetween(vector v1, vector v2) +Returns the rotation to rotate v1 to v2 + </string> + <string name="LSLTipText_llWhisper" translate="false"> +llWhisper(integer channel, string msg) +Whispers the text of msg on channel + </string> + <string name="LSLTipText_llSay" translate="false"> +llSay(integer channel, string msg) +Says the text of msg on channel + </string> + <string name="LSLTipText_llShout" translate="false"> +llShout(integer channel, string msg) +Shouts the text of msg on channel + </string> + <string name="LSLTipText_llListen" translate="false"> +integer llListen(integer channel, string name, key id, string msg) +Sets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen + </string> + <string name="LSLTipText_llListenControl" translate="false"> +llListenControl(integer number, integer active) +Makes a listen event callback active or inactive + </string> + <string name="LSLTipText_llListenRemove" translate="false"> +llListenRemove(integer number) +Removes listen event callback number + </string> + <string name="LSLTipText_llSensor" translate="false"> +llSensor(string name, key id, integer type, float range, float arc) +Performs a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) + </string> + <string name="LSLTipText_llSensorRepeat" translate="false"> +llSensorRepeat(string name, key id, integer type, float range, float arc, float rate) +Sets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds + </string> + <string name="LSLTipText_llSensorRemove" translate="false"> +llSensorRemove() +Removes the sensor setup by llSensorRepeat + </string> + <string name="LSLTipText_llDetectedName" translate="false"> +string llDetectedName(integer number) +Returns the name of detected object number (returns empty string if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedKey" translate="false"> +key llDetectedKey(integer number) +Returns the key of detected object number (returns empty key if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedOwner" translate="false"> +key llDetectedOwner(integer number) +Returns the key of detected object's owner (returns empty key if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedType" translate="false"> +integer llDetectedType(integer number) +Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedPos" translate="false"> +vector llDetectedPos(integer number) +Returns the position of detected object number (returns <0,0,0> if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedVel" translate="false"> +vector llDetectedVel(integer number) +Returns the velocity of detected object number (returns <0,0,0> if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedGrab" translate="false"> +vector llDetectedGrab(integer number) +Returns the grab offset of the user touching object (returns <0,0,0> if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedRot" translate="false"> +rotation llDetectedRot(integer number) +Returns the rotation of detected object number (returns <0,0,0,1> if number is not a valid sensed object) + </string> + <string name="LSLTipText_llDetectedGroup" translate="false"> +integer llDetectedGroup(integer number) +Returns TRUE if detected object is part of same group as owner + </string> + <string name="LSLTipText_llDetectedLinkNumber" translate="false"> +integer llDetectedLinkNumber(integer number) +Returns the link position of the triggered event for touches and collisions only + </string> + <string name="LSLTipText_llDie" translate="false"> +llDie() +Deletes the object + </string> + <string name="LSLTipText_llGround" translate="false"> +float llGround(vector offset) +Returns the ground height below the object position + offset + </string> + <string name="LSLTipText_llCloud" translate="false"> +float llCloud(vector offset) +Returns the cloud density at the object position + offset + </string> + <string name="LSLTipText_llWind" translate="false"> +vector llWind(vector offset) +Returns the wind velocity at the object position + offset + </string> + <string name="LSLTipText_llSetStatus" translate="false"> +llSetStatus(integer status, integer value) +Sets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value + </string> + <string name="LSLTipText_llGetStatus" translate="false"> +integer llGetStatus(integer status) +Returns value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) + </string> + <string name="LSLTipText_llSetScale" translate="false"> +llSetScale(vector scale) +Sets the scale of the prim + </string> + <string name="LSLTipText_llGetScale" translate="false"> +vector llGetScale() +Returns the scale of the prim + </string> + <string name="LSLTipText_llSetColor" translate="false"> +llSetColor(vector color, integer face) +Sets the color on face of the prim + </string> + <string name="LSLTipText_llGetAlpha" translate="false"> +float llGetAlpha(integer face) +Returns the alpha of face + </string> + <string name="LSLTipText_llSetAlpha" translate="false"> +llSetAlpha(float alpha, integer face) +Sets the alpha on face + </string> + <string name="LSLTipText_llGetColor" translate="false"> +vector llGetColor(integer face) +Returns the color on face + </string> + <string name="LSLTipText_llSetTexture" translate="false"> +llSetTexture(string texture, integer face) +Sets the texture of face or ALL_SIDES + </string> + <string name="LSLTipText_llScaleTexture" translate="false"> +llScaleTexture(float u, float v, integer face) +Sets the texture u & v scales for the chosen face or ALL_SIDES + </string> + <string name="LSLTipText_llOffsetTexture" translate="false"> +llOffsetTexture(float u, float v, integer face) +Sets the texture u & v offsets for the chosen face or ALL_SIDES + </string> + <string name="LSLTipText_llRotateTexture" translate="false"> +llRotateTexture(float rotation, integer face) +Sets the texture rotation for the chosen face + </string> + <string name="LSLTipText_llGetTexture" translate="false"> +string llGetTexture(integer face) +Returns a string that is the texture on face (the inventory name if it is a texture in the prim's inventory, otherwise the key) + </string> + <string name="LSLTipText_llSetPos" translate="false"> +llSetPos(vector pos) +Moves the object or prim towards pos without using physics (if the script isn't physical) + </string> + <string name="LSLTipText_llGetPos" translate="false"> +vector llGetPos() +Returns the position of the task in region coordinates + </string> + <string name="LSLTipText_llGetLocalPos" translate="false"> +vector llGetLocalPos() +Returns the position relative to the root + </string> + <string name="LSLTipText_llSetRot" translate="false"> +llSetRot(rotation rot) +Sets the rotation + </string> + <string name="LSLTipText_llGetRot" translate="false"> +rotation llGetRot() +Returns the rotation relative to the region's axes + </string> + <string name="LSLTipText_llGetLocalRot" translate="false"> +rotation llGetLocalRot() +Returns the rotation local to the root + </string> + <string name="LSLTipText_llSetForce" translate="false"> +llSetForce(vector force, integer local) +Applies force to the object (if the script is physical), in local coords if local == TRUE + </string> + <string name="LSLTipText_llGetForce" translate="false"> +vector llGetForce() +Returns the force (if the script is physical) + </string> + <string name="LSLTipText_llTarget" translate="false"> +integer llTarget(vector position, float range) +Sets positions within range of position as a target and return an ID for the target + </string> + <string name="LSLTipText_llTargetRemove" translate="false"> +llTargetRemove(integer number) +Removes positional target number registered with llTarget + </string> + <string name="LSLTipText_llRotTarget" translate="false"> +integer llRotTarget(rotation rot, float error) +Set rotations with error of rot as a rotational target and return an ID for the rotational target + </string> + <string name="LSLTipText_llRotTargetRemove" translate="false"> +llRotTargetRemove(integer number) +Removes rotational target number registered with llRotTarget + </string> + <string name="LSLTipText_llMoveToTarget" translate="false"> +llMoveToTarget(vector target, float tau) +Critically damps to target in tau seconds (if the script is physical) + </string> + <string name="LSLTipText_llStopMoveToTarget" translate="false"> +llStopMoveToTarget() +Stops critically damped motion + </string> + <string name="LSLTipText_llApplyImpulse" translate="false"> +llApplyImpulse(vector force, integer local) +Applies impulse to object (if the script is physical), in local coords if local == TRUE + </string> + <string name="LSLTipText_llApplyRotationalImpulse" translate="false"> +llApplyRotationalImpulse(vector force, integer local) +Applies rotational impulse to object (if the script is physical), in local coords if local == TRUE + </string> + <string name="LSLTipText_llSetTorque" translate="false"> +llSetTorque(vector torque, integer local) +Sets the torque of object (if the script is physical), in local coords if local == TRUE + </string> + <string name="LSLTipText_llGetTorque" translate="false"> +vector llGetTorque() +Returns the torque (if the script is physical) + </string> + <string name="LSLTipText_llSetForceAndTorque" translate="false"> +llSetForceAndTorque(vector force, vector torque, integer local) +Sets the force and torque of object (if the script is physical), in local coords if local == TRUE + </string> + <string name="LSLTipText_llGetVel" translate="false"> +vector llGetVel() +Returns the velocity of the object + </string> + <string name="LSLTipText_llGetAccel" translate="false"> +vector llGetAccel() +Returns the acceleration of the object relative to the region's axes + </string> + <string name="LSLTipText_llGetOmega" translate="false"> +vector llGetOmega() +Returns the rotation velocity in radians per second + </string> + <string name="LSLTipText_llGetTimeOfDay" translate="false"> +float llGetTimeOfDay() +Returns the time in seconds since [SECOND_LIFE] server midnight or since region up-time, whichever is smaller + </string> + <string name="LSLTipText_llGetWallclock" translate="false"> +float llGetWallclock() +Returns the time in seconds since midnight California Pacific time (PST/PDT) + </string> + <string name="LSLTipText_llGetTime" translate="false"> +float llGetTime() +Returns the time in seconds since the last region reset, script reset, or call to either llResetTime or llGetAndResetTime + </string> + <string name="LSLTipText_llResetTime" translate="false"> +llResetTime() +Sets the script timer to zero + </string> + <string name="LSLTipText_llGetAndResetTime" translate="false"> +float llGetAndResetTime() +Returns the script time in seconds and then resets the script timer to zero + </string> + <string name="LSLTipText_llSoplayund" translate="false"> +llSound(string sound, float volume, integer queue, integer loop) +Plays sound at volume and whether it should loop or not + </string> + <string name="LSLTipText_llPlaySound" translate="false"> +llPlaySound(string sound, float volume) +Plays attached sound once at volume (0.0 - 1.0) + </string> + <string name="LSLTipText_llLoopSound" translate="false"> +llLoopSound(string sound, float volume) +Plays attached sound looping indefinitely at volume (0.0 - 1.0) + </string> + <string name="LSLTipText_llLoopSoundMaster" translate="false"> +llLoopSoundMaster(string sound, float volume) +Plays attached sound looping at volume (0.0 - 1.0), declares it a sync master + </string> + <string name="LSLTipText_llLoopSoundSlave" translate="false"> +llLoopSoundSlave(string sound, float volume) +Plays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master + </string> + <string name="LSLTipText_llPlaySoundSlave" translate="false"> +llPlaySoundSlave(string sound, float volume) +Plays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master + </string> + <string name="LSLTipText_llTriggerSound" translate="false"> +llTriggerSound(string sound, float volume) +Plays sound at volume (0.0 - 1.0), centered at but not attached to object + </string> + <string name="LSLTipText_llStopSound" translate="false"> +llStopSound() +Stops currently attached sound + </string> + <string name="LSLTipText_llPreloadSound" translate="false"> +llPreloadSound(string sound) +Preloads a sound on viewers within range + </string> + <string name="LSLTipText_llGetSubString" translate="false"> +string llGetSubString(string src, integer start, integer end) +Returns the indicated substring + </string> + <string name="LSLTipText_llDeleteSubString" translate="false"> +string llDeleteSubString(string src, integer start, integer end) +Removes the indicated substring and returns the result + </string> + <string name="LSLTipText_llInsertString" translate="false"> +string llInsertString(string dst, integer position, string src) +Returns a destination string dst with the string src inserted starting at position pos + </string> + <string name="LSLTipText_llToUpper" translate="false"> +string llToUpper(string src) +Returns a string that is src with all upper-case characters + </string> + <string name="LSLTipText_llToLower" translate="false"> +string llToLower(string src) +Returns a string that is src with all lower-case characters + </string> + <string name="LSLTipText_llGiveMoney" translate="false"> +llGiveMoney(key destination, integer amount) +Transfers amount of L$ from script owner to destination + </string> + <string name="LSLTipText_llMakeExplosion" translate="false"> +llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) +Makes a round explosion of particles + </string> + <string name="LSLTipText_llMakeFountain" translate="false"> +llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset) +Makes a fountain of particles + </string> + <string name="LSLTipText_llMakeSmoke" translate="false"> +llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) +Makes smoke like particles + </string> + <string name="LSLTipText_llMakeFire" translate="false"> +llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset) +Makes fire like particles + </string> + <string name="LSLTipText_llRezObject" translate="false"> +llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param) +Instantiates owner's inventory object at pos with velocity vel and rotation rot with start parameter param + </string> + <string name="LSLTipText_llLookAt" translate="false"> +llLookAt(vector target, float strength, float damping) +Causes object to point its up axis (positive z) towards target, while keeping its forward axis (positive x) below the horizon + </string> + <string name="LSLTipText_llStopLookAt" translate="false"> +llStopLookAt() +Stops causing object to point at a target + </string> + <string name="LSLTipText_llSetTimerEvent" translate="false"> +llSetTimerEvent(float sec) +Causes the timer event to be triggered a maximum of once every sec seconds + </string> + <string name="LSLTipText_llSleep" translate="false"> +llSleep(float sec) +Puts the script to sleep for sec seconds + </string> + <string name="LSLTipText_llGetMass" translate="false"> +float llGetMass() +Returns the mass of object that the script is attached to + </string> + <string name="LSLTipText_llCollisionFilter" translate="false"> +llCollisionFilter(string name, key id, integer accept) +Sets the collision filter, exclusively or inclusively. If accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id + </string> + <string name="LSLTipText_llTakeControls" translate="false"> +llTakeControls(integer controls, integer accept, integer pass_on) +Allows for intercepting keyboard and mouse clicks from the agent the script has permissions for + </string> + <string name="LSLTipText_llReleaseControls" translate="false"> +llReleaseControls() +Stops taking inputs that were taken with llTakeControls + </string> + <string name="LSLTipText_llAttachToAvatar" translate="false"> +llAttachToAvatar(integer attach_point) +Attaches the object to the avatar who has granted permission to the script + </string> + <string name="LSLTipText_llDetachFromAvatar" translate="false"> +llDetachFromAvatar() +Detaches object from avatar + </string> + <string name="LSLTipText_llTakeCamera" translate="false"> +llTakeCamera(key avatar) +Moves avatar's viewpoint to task + </string> + <string name="LSLTipText_llReleaseCamera" translate="false"> +llReleaseCamera(key avatar) +Returns camera to agent avatar + </string> + <string name="LSLTipText_llGetOwner" translate="false"> +key llGetOwner() +Returns the object owner's UUID + </string> + <string name="LSLTipText_llInstantMessage" translate="false"> +llInstantMessage(key user, string message) +Sends the specified string as an Instant Message to the user + </string> + <string name="LSLTipText_llEmail" translate="false"> +llEmail(string address, string subject, string message) +Sends an email to address with the subject and message + </string> + <string name="LSLTipText_llGetNextEmail" translate="false"> +llGetNextEmail(string address, string subject) +Gets the next waiting email that comes from address, with specified subject + </string> + <string name="LSLTipText_llGetKey" translate="false"> +key llGetKey() +Returns the key of the prim the script is attached to + </string> + <string name="LSLTipText_llSetBuoyancy" translate="false"> +llSetBuoyancy(float buoyancy) +Sets the buoyancy of the task or object (0 is disabled, < 1.0 sinks, 1.0 floats, > 1.0 rises) + </string> + <string name="LSLTipText_llSetHoverHeight" translate="false"> +llSetHoverHeight(float height, integer water, float tau) +Critically damps to a height above the ground (or water) in tau seconds + </string> + <string name="LSLTipText_llStopHover" translate="false"> +llStopHover() +Stops hovering to a height + </string> + <string name="LSLTipText_llMinEventDelay" translate="false"> +llMinEventDelay(float delay) +Sets the minimum time between events being handled + </string> + <string name="LSLTipText_llSoundPreload" translate="false"> +llSoundPreload(string sound) +Preloads a sound on viewers within range + </string> + <string name="LSLTipText_llRotLookAt" translate="false"> +llRotLookAt(rotation target, float strength, float damping) +Causes object to point its forward axis towards target + </string> + <string name="LSLTipText_llStringLength" translate="false"> +integer llStringLength(string str) +Returns the length of string + </string> + <string name="LSLTipText_llStartAnimation" translate="false"> +llStartAnimation(string anim) +Starts animation anim for agent that granted PERMISSION_TRIGGER_ANIMATION if the permission has not been revoked + </string> + <string name="LSLTipText_llStopAnimation" translate="false"> +llStopAnimation(string anim) +Stops animation anim for agent that granted permission + </string> + <string name="LSLTipText_llPointAt" translate="false"> +llPointAt(vector pos) +Makes agent that owns object point at pos + </string> + <string name="LSLTipText_llStopPointAt" translate="false"> +llStopPointAt() +Stops pointing agent that owns object + </string> + <string name="LSLTipText_llTargetOmega" translate="false"> +llTargetOmega(vector axis, float spinrate, float gain) +Rotates the object around axis at spinrate with strength gain + </string> + <string name="LSLTipText_llGetStartParameter" translate="false"> +integer llGetStartParameter() +Returns an integer that is the script start/rez parameter + </string> + <string name="LSLTipText_llGodLikeRezObject" translate="false"> +llGodLikeRezObject(key inventory, vector pos) +Rezzes directly off of UUID if owner is in God Mode + </string> + <string name="LSLTipText_llRequestPermissions" translate="false"> +llRequestPermissions(key agent, integer perm) +Asks the agent for permission to run certain classes of functions + </string> + <string name="LSLTipText_llGetPermissionsKey" translate="false"> +key llGetPermissionsKey() +Returns the key of the avatar that last granted permissions to the script + </string> + <string name="LSLTipText_llGetPermissions" translate="false"> +integer llGetPermissions() +Returns an integer bitfield with the permissions that have been granted + </string> + <string name="LSLTipText_llGetLinkNumber" translate="false"> +integer llGetLinkNumber() +Returns the link number of the prim containing the script (0 means not linked, 1 the prim is the root, 2 the prim is the first child, etc) + </string> + <string name="LSLTipText_llSetLinkColor" translate="false"> +llSetLinkColor(integer linknumber, vector color, integer face) +Sets face to color if a task exists in the link chain at linknumber + </string> + <string name="LSLTipText_llCreateLink" translate="false"> +llCreateLink(key target, integer parent) +Attempts to link the script's object with the target (requires that PERMISSION_CHANGE_LINKS be granted). If parent == TRUE, then the script's object becomes the root + </string> + <string name="LSLTipText_llBreakLink" translate="false"> +llBreakLink(integer linknum) +Delinks the prim with the given link number in a linked object set (requires that PERMISSION_CHANGE_LINKS be granted) + </string> + <string name="LSLTipText_llBreakAllLinks" translate="false"> +llBreakAllLinks() +Delinks all prims in the link set (requires that PERMISSION_CHANGE_LINKS be granted) + </string> + <string name="LSLTipText_llGetLinkKey" translate="false"> +key llGetLinkKey(integer linknumber) +Returns the key of the linked prim linknumber + </string> + <string name="LSLTipText_llGetLinkName" translate="false"> +string llGetLinkName(integer linknumber) +Returns the name of linknumber in a link set + </string> + <string name="LSLTipText_llGetInventoryNumber" translate="false"> +integer llGetInventoryNumber(integer type) +Returns the number of items of a given type (INVENTORY_* flag) in the prim's inventory + </string> + <string name="LSLTipText_llGetInventoryName" translate="false"> +string llGetInventoryName(integer type, integer number) +Returns the name of the inventory item number of a given type + </string> + <string name="LSLTipText_llSetScriptState" translate="false"> +llSetScriptState(string name, integer run) +Sets the running state of the specified script + </string> + <string name="LSLTipText_llGetEnergy" translate="false"> +float llGetEnergy() +Returns how much energy is in the object as a percentage of maximum + </string> + <string name="LSLTipText_llGiveInventory" translate="false"> +llGiveInventory(key destination, string inventory) +Gives inventory to destination + </string> + <string name="LSLTipText_llRemoveInventory" translate="false"> +llRemoveInventory(string item) +Removes the named inventory item + </string> + <string name="LSLTipText_llSetText" translate="false"> +llSetText(string text, vector color, float alpha) +Displays text that hovers over the prim with specific color and translucency specified with alpha + </string> + <string name="LSLTipText_llWater" translate="false"> +float llWater(vector offset) +Returns the water height below the object position + offset + </string> + <string name="LSLTipText_llPassTouches" translate="false"> +llPassTouches(integer pass) +If pass == TRUE, touches are passed from children on to parents + </string> + <string name="LSLTipText_llRequestAgentData" translate="false"> +key llRequestAgentData(key id, integer data) +Requests data about agent id. When data is available the dataserver event will be raised. + </string> + <string name="LSLTipText_llRequestInventoryData" translate="false"> +key llRequestInventoryData(string name) +Requests data from object's inventory object. When data is available the dataserver event will be raised. + </string> + <string name="LSLTipText_llSetDamage" translate="false"> +llSetDamage(float damage) +Sets the amount of damage that will be done when this object hits an avatar. + </string> + <string name="LSLTipText_llTeleportAgentHome" translate="false"> +llTeleportAgentHome(key id) +Teleports avatar on the owner's land to their home location without any warning + </string> + <string name="LSLTipText_llModifyLand" translate="false"> +llModifyLand(integer action, integer brush) +Modifies land using the specified action on the specified brush size of land + </string> + <string name="LSLTipText_llCollisionSound" translate="false"> +llCollisionSound(string impact_sound, float impact_volume) +Suppresses default collision sounds, replaces default impact sounds with impact_sound at the volume impact_volume + </string> + <string name="LSLTipText_llCollisionSprite" translate="false"> +llCollisionSprite(string impact_sprite) +Suppresses default collision sprites, replaces default impact sprite with impact_sprite (use an empty string to just suppress) + </string> + <string name="LSLTipText_llGetAnimation" translate="false"> +string llGetAnimation(key id) +Returns the name of the currently playing locomotion animation for avatar id + </string> + <string name="LSLTipText_llResetScript" translate="false"> +llResetScript() +Resets the script + </string> + <string name="LSLTipText_llMessageLinked" translate="false"> +llMessageLinked(integer linknum, integer num, string str, key id) +Allows scripts in the same object to communicate. Triggers a link_message event with the same parameters num, str, and id in all scripts in the prim(s) described by linknum. + </string> + <string name="LSLTipText_llPushObject" translate="false"> +llPushObject(key id, vector impulse, vector ang_impulse, integer local) +Applies impulse and ang_impulse to object id + </string> + <string name="LSLTipText_llPassCollisions" translate="false"> +llPassCollisions(integer pass) +If pass == TRUE, collisions are passed from children on to parents (default is FALSE) + </string> + <string name="LSLTipText_llGetScriptName" translate="false"> +string llGetScriptName() +Returns the name of the script that this function is used in + </string> + <string name="LSLTipText_llGetNumberOfSides" translate="false"> +integer llGetNumberOfSides() +Returns the number of faces (or sides) of the prim + </string> + <string name="LSLTipText_llAxisAngle2Rot" translate="false"> +rotation llAxisAngle2Rot(vector axis, float angle) +Returns the rotation that is a generated angle about axis + </string> + <string name="LSLTipText_llRot2Axis" translate="false"> +vector llRot2Axis(rotation rot) +Returns the rotation axis represented by rot + </string> + <string name="LSLTipText_llRot2Angle" translate="false"> +float llRot2Angle(rotation rot) +Returns the rotation angle represented by rot + </string> + <string name="LSLTipText_llAcos" translate="false"> +float llAcos(float val) +Returns the arccosine in radians of val + </string> + <string name="LSLTipText_llAsin" translate="false"> +float llAsin(float val) +Returns the arcsine in radians of val + </string> + <string name="LSLTipText_llAngleBetween" translate="false"> +float llAngleBetween(rotation a, rotation b) +Returns angle between rotation a and b + </string> + <string name="LSLTipText_llGetInventoryKey" translate="false"> +key llGetInventoryKey(string name) +Returns the key that is the UUID of the inventory name + </string> + <string name="LSLTipText_llAllowInventoryDrop" translate="false"> +llAllowInventoryDrop(integer add) +If add == TRUE, users without modify permissions can still drop inventory items onto a prim + </string> + <string name="LSLTipText_llGetSunDirection" translate="false"> +vector llGetSunDirection() +Returns a normalized vector of the direction of the sun in the region + </string> + <string name="LSLTipText_llGetTextureOffset" translate="false"> +vector llGetTextureOffset(integer face) +Returns the texture offset of face in the x and y components of a vector + </string> + <string name="LSLTipText_llGetTextureScale" translate="false"> +vector llGetTextureScale(integer side) +Returns the texture scale of side in the x and y components of a vector + </string> + <string name="LSLTipText_llGetTextureRot" translate="false"> +float llGetTextureRot(integer side) +Returns the texture rotation of side + </string> + <string name="LSLTipText_llSubStringIndex" translate="false"> +integer llSubStringIndex(string source, string pattern) +Returns an integer that is the index in source where pattern first appears. +(Returns -1 if not found) + </string> + <string name="LSLTipText_llGetOwnerKey" translate="false"> +key llGetOwnerKey(key id) +Returns the owner of object id + </string> + <string name="LSLTipText_llGetCenterOfMass" translate="false"> +vector llGetCenterOfMass() +Returns the prim's center of mass (unless called from the root prim, where it returns the object's center of mass) + </string> + <string name="LSLTipText_llListSort" translate="false"> +list llListSort(list src, integer stride, integer ascending) +Sorts the list into blocks of stride, in ascending order if ascending == TRUE. +The sort order is affected by type. + </string> + <string name="LSLTipText_llGetListLength" translate="false"> +integer llGetListLength(list src) +Returns the number of elements in the list + </string> + <string name="LSLTipText_llList2Integer" translate="false"> +integer llList2Integer(list src, integer index) +Copies the integer at index in the list + </string> + <string name="LSLTipText_llList2Float" translate="false"> +float llList2Float(list src, integer index) +Copies the float at index in the list + </string> + <string name="LSLTipText_llList2String" translate="false"> +string llList2String(list src, integer index) +Copies the string at index in the list + </string> + <string name="LSLTipText_llList2Key" translate="false"> +key llList2Key(list src, integer index) +Copies the key at index in the list + </string> + <string name="LSLTipText_llList2Vector" translate="false"> +vector llList2Vector(list src, integer index) +Copies the vector at index in the list + </string> + <string name="LSLTipText_llList2Rot" translate="false"> +rotation llList2Rot(list src, integer index) +Copies the rotation at index in the list + </string> + <string name="LSLTipText_llList2List" translate="false"> +list llList2List(list src, integer start, integer end) +Copies the slice of the list from start to end + </string> + <string name="LSLTipText_llDeleteSubList" translate="false"> +list llDeleteSubList(list src, integer start, integer end) +Removes the slice from start to end and returns the remainder of the list + </string> + <string name="LSLTipText_llGetListEntryType" translate="false"> +integer llGetListEntryType(list src, integer index) +Returns the type of the index entry in the list +(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list) + </string> + <string name="LSLTipText_llList2CSV" translate="false"> +string llList2CSV(list src) +Creates a string of comma separated values from list + </string> + <string name="LSLTipText_llCSV2List" translate="false"> +list llCSV2List(string src) +Creates a list from a string of comma separated values + </string> + <string name="LSLTipText_llListRandomize" translate="false"> +list llListRandomize(list src, integer stride) +Returns a randomized list of blocks of size stride + </string> + <string name="LSLTipText_llList2ListStrided" translate="false"> +list llList2ListStrided(list src, integer start, integer end, integer stride) +Copies the strided slice of the list from start to end + </string> + <string name="LSLTipText_llGetRegionCorner" translate="false"> +vector llGetRegionCorner() +Returns a vector in meters that is the global location of the south-west corner of the region which the object is in + </string> + <string name="LSLTipText_llListInsertList" translate="false"> +list llListInsertList(list dest, list src, integer start) +Returns a list that contains all the elements from dest but with the elements from src inserted at position start + </string> + <string name="LSLTipText_llListFindList" translate="false"> +integer llListFindList(list src, list test) +Returns the index of the first instance of test in src. +(Returns -1 if not found) + </string> + <string name="LSLTipText_llGetObjectName" translate="false"> +string llGetObjectName() +Returns the name of the prim which the script is attached to + </string> + <string name="LSLTipText_llSetObjectName" translate="false"> +llSetObjectName(string name) +Sets the prim's name to the name parameter + </string> + <string name="LSLTipText_llGetDate" translate="false"> +string llGetDate() +Returns the current date in the UTC time zone in the format YYYY-MM-DD + </string> + <string name="LSLTipText_llEdgeOfWorld" translate="false"> +integer llEdgeOfWorld(vector pos, vector dir) +Checks to see whether the border hit by dir from pos is the edge of the world (has no neighboring region) + </string> + <string name="LSLTipText_llGetAgentInfo" translate="false"> +integer llGetAgentInfo(key id) +Returns an integer bitfield containing the agent information about id. +Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING and/or AGENT_IN_AIR. + </string> + <string name="LSLTipText_llAdjustSoundVolume" translate="false"> +llAdjustSoundVolume(float volume) +Adjusts volume of attached sound (0.0 - 1.0) + </string> + <string name="LSLTipText_llSetSoundQueueing" translate="false"> +llSetSoundQueueing(integer queue) +Sets whether attached sounds wait for the current sound to finish (If queue == TRUE then queuing is enabled, if FALSE queuing is disabled [default]) + </string> + <string name="LSLTipText_llSetSoundRadius" translate="false"> +llSetSoundRadius(float radius) +Establishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered) + </string> + <string name="LSLTipText_llKey2Name" translate="false"> +string llKey2Name(key id) +Returns the name of the prim or avatar specified by id. +(The id must be a valid rezzed prim or avatar key in the current simulator, otherwise an empty string is returned.) + </string> + <string name="LSLTipText_llSetTextureAnim" translate="false"> +llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate) +Animates the texture on the specified face/faces + </string> + <string name="LSLTipText_llTriggerSoundLimited" translate="false"> +llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west) +Plays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to the box defined by vectors top_north_east and bottom_south_west + </string> + <string name="LSLTipText_llEjectFromLand" translate="false"> +llEjectFromLand(key avatar) +Ejects avatar from the parcel + </string> + <string name="LSLTipText_llParseString2List" translate="false"> +list llParseString2List(string src, list separators, list spacers) +Breaks src into a list, discarding separators, keeping spacers +(separators and spacers must be lists of strings, maximum of 8 each) + </string> + <string name="LSLTipText_llOverMyLand" translate="false"> +integer llOverMyLand(key id) +Returns TRUE if id is over land owned by the script owner, otherwise FALSE + </string> + <string name="LSLTipText_llGetLandOwnerAt" translate="false"> +key llGetLandOwnerAt(vector pos) +Returns the key of the land owner, returns NULL_KEY if public + </string> + <string name="LSLTipText_llGetNotecardLine" translate="false"> +key llGetNotecardLine(string name, integer line) +Returns line line of notecard name via the dataserver event + </string> + <string name="LSLTipText_llGetAgentSize" translate="false"> +vector llGetAgentSize(key id) +If the avatar is in the same region, returns the size of the bounding box of the requested avatar by id, otherwise returns ZERO_VECTOR + </string> + <string name="LSLTipText_llSameGroup" translate="false"> +integer llSameGroup(key id) +Returns TRUE if avatar id is in the same region and has the same active group, otherwise FALSE + </string> + <string name="LSLTipText_llUnSit" translate="false"> +key llUnSit(key id) +If avatar identified by id is sitting on the object the script is attached to or is over land owned by the object's owner, the avatar is forced to stand up + </string> + <string name="LSLTipText_llGroundSlope" translate="false"> +vector llGroundSlope(vector offset) +Returns the ground slope below the object position + offset + </string> + <string name="LSLTipText_llGroundNormal" translate="false"> +vector llGroundNormal(vector offset) +Returns the ground normal below the object position + offset + </string> + <string name="LSLTipText_llGroundContour" translate="false"> +vector llGroundCountour(vector offset) +Returns the ground contour direction below the object position + offset + </string> + <string name="LSLTipText_llGetAttached" translate="false"> +integer llGetAttached() +Returns the object's attachment point, or 0 if not attached + </string> + <string name="LSLTipText_llGetFreeMemory" translate="false"> +integer llGetFreeMemory() +Returns the number of free bytes of memory the script can use + </string> + <string name="LSLTipText_llGetRegionName" translate="false"> +string llGetRegionName() +Returns the current region name + </string> + <string name="LSLTipText_llGetRegionTimeDilation" translate="false"> +float llGetRegionTimeDilation() +Returns the current time dilation as a float between 0.0 (full dilation) and 1.0 (no dilation) + </string> + <string name="LSLTipText_llGetRegionFPS" translate="false"> +float llGetRegionFPS() +Returns the mean region frames per second + </string> + <string name="LSLTipText_llParticleSystem" translate="false"> +llParticleSystem(list rules) +Creates a particle system based on rules. An empty list removes the particle system. +List format is [ rule1, data1, rule2, data2 . . . rulen, datan ] + </string> + <string name="LSLTipText_llGroundRepel" translate="false"> +llGroundRepel(float height, integer water, float tau) +Critically damps to height if within height*0.5 of level (either above ground level, or above the higher of land and water if water == TRUE) + </string> + <string name="LSLTipText_llGiveInventoryList" translate="false"> +llGiveInventoryList(key target, string folder, list inventory) +Gives inventory items to target, creating a new folder to put them in + </string> + <string name="LSLTipText_llSetVehicleType" translate="false"> +llSetVehicleType(integer type) +Sets the vehicle to one of the default types + </string> + <string name="LSLTipText_llSetVehicleFloatParam" translate="false"> +llSetVehicleFloatParam(integer param, float value) +Sets the specified vehicle float parameter + </string> + <string name="LSLTipText_llSetVehicleVectorParam" translate="false"> +llSetVehicleVectorParam(integer param, vector vec) +Sets the specified vehicle vector parameter + </string> + <string name="LSLTipText_llSetVehicleRotationParam" translate="false"> +llSetVehicleVectorParam(integer param, rotation rot) +Sets the specified vehicle rotation parameter + </string> + <string name="LSLTipText_llSetVehicleFlags" translate="false"> +llSetVehicleFlags(integer flags) +Sets the enabled bits in 'flags' + </string> + <string name="LSLTipText_llRemoveVehicleFlags" translate="false"> +llRemoveVehicleFlags(integer flags) +Removes the enabled bits in 'flags' + </string> + <string name="LSLTipText_llSitTarget" translate="false"> +llSitTarget(vector offset, rotation rot) +Sets the sit location for the prim. If offset == <0,0,0> then the sit target is removed. + </string> + <string name="LSLTipText_llAvatarOnSitTarget" translate="false"> +key llAvatarOnSitTarget() +If an avatar is seated on the sit target, returns the avatar's key, otherwise NULL_KEY + </string> + <string name="LSLTipText_llAddToLandPassList" translate="false"> +llAddToLandPassList(key avatar, float hours) +Adds avatar to the land pass list for hours, or indefinitely if hours is 0 + </string> + <string name="LSLTipText_llSetTouchText" translate="false"> +llSetTouchText(string text) +Displays text rather than the default 'Touch' in the pie menu + </string> + <string name="LSLTipText_llSetSitText" translate="false"> +llSetSitText(string text) +Displays text rather than the default 'Sit Here' in the pie menu + </string> + <string name="LSLTipText_llSetCameraEyeOffset" translate="false"> +llSetCameraEyeOffset(vector offset) +Sets the camera eye offset for avatars that sit on the object + </string> + <string name="LSLTipText_llSetCameraAtOffset" translate="false"> +llSetCameraAtOffset(vector offset) +Sets the point the camera is looking at to offset for avatars that sit on the object + </string> + <string name="LSLTipText_llDumpList2String" translate="false"> +string llDumpList2String(list src, string separator) +Returns the list in a single string, using separator between the entries + </string> + <string name="LSLTipText_llScriptDanger" translate="false"> +integer llScriptDanger(vector pos) +Returns TRUE if pos is over public land, sandbox land, land that doesn't allow everyone to edit and build, or land that doesn't allow outside scripts + </string> + <string name="LSLTipText_llDialog" translate="false"> +llDialog(key avatar, string message, list buttons, integer chat_channel +Shows a dialog box on the avatar's screen with a message and up to 12 buttons. +If a button is pressed, the avatar says the text of the button label on chat_channel. + </string> + <string name="LSLTipText_llVolumeDetect" translate="false"> +llVolumeDetect(integer detect) +If detect = TRUE, object works much like Phantom, but triggers collision_start and collision_end events when other objects start and stop interpenetrating. +Must be applied to the root prim. + </string> + <string name="LSLTipText_llResetOtherScript" translate="false"> +llResetOtherScript(string name) +Resets script name + </string> + <string name="LSLTipText_llGetScriptState" translate="false"> +integer llGetScriptState(string name) +Returns TRUE if the script name is running + </string> + <string name="LSLTipText_llRemoteLoadScript" translate="false"> +DEPRECATED! Please use llRemoteLoadScriptPin instead. + </string> + <string name="LSLTipText_llSetRemoteScriptAccessPin" translate="false"> +llSetRemoteScriptAccessPin(integer pin) +If pin is set to a non-zero number, allows a prim to have scripts remotely loaded via llRemoteLoadScriptPin when it passes in the correct pin. Otherwise, llRemoteLoadScriptPin is ignored. + </string> + <string name="LSLTipText_llRemoteLoadScriptPin" translate="false"> +llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param) +Copies script name onto target, if the owner of this scripted object can modify target and is in the same region, and the matching pin is used. +If running == TRUE, starts the script with start_param + </string> + <string name="LSLTipText_llOpenRemoteDataChannel" translate="false"> +llOpenRemoteDataChannel() +Creates a channel to listen for XML-RPC calls, and will trigger a remote_data event with channel id once it is available + </string> + <string name="LSLTipText_llSendRemoteData" translate="false"> +key llSendRemoteData(key channel, string dest, integer idata, string sdata) +Sends an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata. +Returns a key that is the message_id for the resulting remote_data events. + </string> + <string name="LSLTipText_llRemoteDataReply" translate="false"> +llRemoteDataReply(key channel, key message_id, string sdata, integer idata) +Sends an XML-RPC reply to message_id on channel with payload of string sdata and integer idata + </string> + <string name="LSLTipText_llCloseRemoteDataChannel" translate="false"> +llCloseRemoteDataChannel(key channel) +Closes XML-RPC channel + </string> + <string name="LSLTipText_llMD5String" translate="false"> +string llMD5String(string src, integer nonce) +Returns a string of 32 hex characters that is a RSA Data Security, Inc. MD5 Message-Digest Algorithm of src with nonce + </string> + <string name="LSLTipText_llSetPrimitiveParams" translate="false"> +llSetPrimitiveParams(list rules) +Sets the prim's parameters according to rules + </string> + <string name="LSLTipText_llStringToBase64" translate="false"> +string llStringToBase64(string str) +Converts a string to the Base64 representation of the string + </string> + <string name="LSLTipText_llBase64ToString" translate="false"> +string llBase64ToString(string str) +Converts a Base64 string to a conventional string. +If the conversion creates any unprintable characters, they are converted to spaces. + </string> + <string name="LSLTipText_llXorBase64Strings" translate="false"> +string llXorBase64Strings(string s1, string s2) +DEPRECATED! Please use llXorBase64StringsCorrect instead. +Incorrectly performs an exclusive or on two Base64 strings and returns a Base64 string. s2 repeats if it is shorter than s1. Retained for backwards compatability. + </string> + <string name="LSLTipText_llRemoteDataSetRegion" translate="false"> +llRemoteDataSetRegion() +DEPRECATED! Please use llOpenRemoteDataChannel instead. +If an object using remote data channels changes regions, you must call this function to reregister the remote data channels. This call is not needed if the prim does not change regions. + </string> + <string name="LSLTipText_llLog10" translate="false"> +float llLog10(float val) +Returns the base 10 logarithm of val. Returns zero if val <= 0. + </string> + <string name="LSLTipText_llLog" translate="false"> +float llLog(float val) +Returns the natural logarithm of val. Returns zero if val <= 0. + </string> + <string name="LSLTipText_llGetAnimationList" translate="false"> +list llGetAnimationList(key id) +Returns a list of keys of playing animations for avatar described by id + </string> + <string name="LSLTipText_llSetParcelMusicURL" translate="false"> +llSetParcelMusicURL(string url) +Sets the streaming audio URL for the parcel which the object is on + </string> + <string name="LSLTipText_llGetRootPosition" translate="false"> +vector llGetRootPosition() +Returns the position (in region coordinates) of the root prim of the object which the script is attached to + </string> + <string name="LSLTipText_llGetRootRotation" translate="false"> +rotation llGetRootRotation() +Returns the rotation (relative to the region) of the root prim of the object which the script is attached to + </string> + <string name="LSLTipText_llGetObjectDesc" translate="false"> +string llGetObjectDesc() +Returns the description of the prim the script is attached to + </string> + <string name="LSLTipText_llSetObjectDesc" translate="false"> +llSetObjectDesc(string name) +Sets the prim's description + </string> + <string name="LSLTipText_llGetCreator" translate="false"> +key llGetCreator() +Returns a key for the creator of the prim + </string> + <string name="LSLTipText_llGetTimestamp" translate="false"> +string llGetTimestamp() +Returns the timestamp in the UTC time zone in the format: YYYY-MM-DDThh:mm:ss.ff..fZ + </string> + <string name="LSLTipText_llSetLinkAlpha" translate="false"> +llSetLinkAlpha(integer linknumber, float alpha, integer face) +If a prim exists in the link chain at linknumber, sets face to alpha + </string> + <string name="LSLTipText_llGetNumberOfPrims" translate="false"> +integer llGetNumberOfPrims() +Returns the number of prims in a link set the script is attached to + </string> + <string name="LSLTipText_llGetNumberOfNotecardLines" translate="false"> +key llGetNumberOfNotecardLines(string name) +Returns number of lines in notecard name via the dataserver event (cast return value to integer) + </string> + <string name="LSLTipText_llGetBoundingBox" translate="false"> +list llGetBoundingBox(key object) +Returns the bounding box around the object (including any linked prims) relative to its root prim, in a list in the format [ (vector) min_corner, (vector) max_corner ] + </string> + <string name="LSLTipText_llGetGeometricCenter" translate="false"> +vector llGetGeometricCenter() +Returns the geometric center of the linked set the script is attached to. + </string> + <string name="LSLTipText_llGetPrimitiveParams" translate="false"> +list llGetPrimitiveParams(list params) +Returns the primitive parameters specified in the params list. + </string> + <string name="LSLTipText_llIntegerToBase64" translate="false"> +string llIntegerToBase64(integer number) +Returns a string that is a Base64 big endian encode of number + </string> + <string name="LSLTipText_llBase64ToInteger" translate="false"> +integer llBase64ToInteger(string str) +Returns an integer that is the str Base64 decoded as a big endian integer + </string> + <string name="LSLTipText_llGetGMTclock" translate="false"> +float llGetGMTclock() +Returns the time in seconds since midnight GMT + </string> + <string name="LSLTipText_llGetSimulatorHostname" translate="false"> +string llGetSimulatorHostname() +Returns the hostname of the machine which the script is running on (same as string in viewer Help dialog) + </string> + <string name="LSLTipText_llSetLocalRot" translate="false"> +llSetLocalRot(rotation rot) +Sets the rotation of a child prim relative to the root prim + </string> + <string name="LSLTipText_llParseStringKeepNulls" translate="false"> +list llParseStringKeepNulls(string src, list separators, list spacers) +Breaks src into a list, discarding separators, keeping spacers, keeping any null values generated. +(separators and spacers must be lists of strings, maximum of 8 each) + </string> + <string name="LSLTipText_llRezAtRoot" translate="false"> +llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param) +Instantiates owner's inventory object rotated to rot with its root at pos, moving at vel, using param as the start parameter + </string> + <string name="LSLTipText_llGetObjectPermMask" translate="false"> +integer llGetObjectPermMask(integer mask) +Returns the requested permission mask for the root object the task is attached to + </string> + <string name="LSLTipText_llSetObjectPermMask" translate="false"> +llSetObjectPermMask(integer mask, integer value) +Sets the given permission mask to the new value on the root object the task is attached to (requires God Mode) + </string> + <string name="LSLTipText_llGetInventoryPermMask" translate="false"> +integer llGetInventoryPermMask(string item, integer mask) +Returns the requested permission mask for the inventory item + </string> + <string name="LSLTipText_llSetInventoryPermMask" translate="false"> +llSetInventoryPermMask(string item, integer mask, integer value) +Sets the given permission mask to the new value on the inventory item (requires God Mode) + </string> + <string name="LSLTipText_llGetInventoryCreator" translate="false"> +key llGetInventoryCreator(string item) +Returns a key for the creator of the inventory item + </string> + <string name="LSLTipText_llOwnerSay" translate="false"> +llOwnerSay(string msg) +Says msg to owner only. (Owner must be in the same region.) + </string> + <string name="LSLTipText_llRequestSimulatorData" translate="false"> +key llRequestSimulatorData(string simulator, integer data) +Requests data about simulator. When data is available the dataserver event will be raised. + </string> + <string name="LSLTipText_llForceMouselook" translate="false"> +llForceMouselook(integer mouselook) +If mouselook is TRUE, any avatar that sits upon the prim will be forced into mouselook mode + </string> + <string name="LSLTipText_llGetObjectMass" translate="false"> +float llGetObjectMass(key id) +Returns the mass of the avatar or object in the region + </string> + <string name="LSLTipText_llListReplaceList" translate="false"> +list llListReplaceList(list dest, list src, integer start, integer end) +Returns a list that is dest with start through end removed and src inserted at start + </string> + <string name="LSLTipText_llLoadURL" translate="false"> +llLoadURL(key avatar, string message, string url) +Shows a dialog to avatar offering to load the web page at url with a message. +If user clicks yes, launches the page in their web browser. + </string> + <string name="LSLTipText_llParcelMediaCommandList" translate="false"> +llParcelMediaCommandList(list command) +Sends a list of commands, some with arguments, to a parcel to control the playback of movies and other media + </string> + <string name="LSLTipText_llParcelMediaQuery" translate="false"> +list llParcelMediaQuery(list query) +Returns a list containing results of the sent query + </string> + <string name="LSLTipText_llModPow" translate="false"> +integer llModPow(integer a, integer b, integer c) +Returns a raised to the b power, mod c. ( (a**b)%c ) +b is capped at 0xFFFF (16 bits). + </string> + <string name="LSLTipText_llGetInventoryType" translate="false"> +integer llGetInventoryType(string name) +Returns the type of the inventory item name + </string> + <string name="LSLTipText_llSetPayPrice" translate="false"> +llSetPayPrice(integer price, list quick_pay_buttons) +Sets the default amount on the dialog that appears when someone chooses to pay this prim + </string> + <string name="LSLTipText_llGetCameraPos" translate="false"> +vector llGetCameraPos() +Returns the current camera position for the agent the task has permissions for + </string> + <string name="LSLTipText_llGetCameraRot" translate="false"> +rotation llGetCameraRot() +Returns the current camera orientation for the agent the task has permissions for + </string> + <string name="LSLTipText_llSetPrimURL" translate="false"> +llSetPrimURL(string url) +Updates the URL for the web page shown on the sides of the object + </string> + <string name="LSLTipText_llRefreshPrimURL" translate="false"> +llRefreshPrimURL() +Reloads the web page shown on the sides of the object + </string> + <string name="LSLTipText_llEscapeURL" translate="false"> +string llEscapeURL(string url) +Returns an escaped/encoded version of url, replacing spaces with %20 etc. + </string> + <string name="LSLTipText_llUnescapeURL" translate="false"> +string llUnescapeURL(string url) +Returns an unescaped/ unencoded version of url, replacing %20 with spaces etc. + </string> + <string name="LSLTipText_llMapDestination" translate="false"> +llMapDestination(string simname, vector pos, vector look_at) +Opens the World Map centered on the region simname with pos highlighted. (NOTE: look_at currently does nothing.) +Only works for scripts attached to avatar, or during touch events. + </string> + <string name="LSLTipText_llAddToLandBanList" translate="false"> +llAddToLandBanList(key avatar, float hours) +Adds avatar to the land ban list for hours, or indefinitely if hours is 0 + </string> + <string name="LSLTipText_llRemoveFromLandPassList" translate="false"> +llRemoveFromLandPassList(key avatar) +Removes avatar from the land pass list + </string> + <string name="LSLTipText_llRemoveFromLandBanList" translate="false"> +llRemoveFromLandBanList(key avatar) +Removes avatar from the land ban list + </string> + <string name="LSLTipText_llSetCameraParams" translate="false"> +llSetCameraParams(list rules) +Sets multiple camera parameters at once. +List format is [ rule1, data1, rule2, data2 . . . rulen, datan ] + </string> + <string name="LSLTipText_llClearCameraParams" translate="false"> +llClearCameraParams() +Resets all camera parameters to default values and turns off scripted camera control + </string> + <string name="LSLTipText_llListStatistics" translate="false"> +float llListStatistics(integer operation, list src) +Performs statistical aggregate functions on list src using LIST_STAT_* operations + </string> + <string name="LSLTipText_llGetUnixTime" translate="false"> +integer llGetUnixTime() +Returns the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock + </string> + <string name="LSLTipText_llGetParcelFlags" translate="false"> +integer llGetParcelFlags(vector pos) +Returns a mask of the parcel flags (PARCEL_FLAG_*) for the parcel that includes the point pos + </string> + <string name="LSLTipText_llGetRegionFlags" translate="false"> +integer llGetRegionFlags() +Returns the region flags (REGION_FLAG_*) for the region the object is in + </string> + <string name="LSLTipText_llXorBase64StringsCorrect" translate="false"> +string llXorBase64StringsCorrect(string s1, string s2) +Correctly performs an exclusive or on two Base64 strings and returns a Base64 string. +s2 repeats if it is shorter than s1. + </string> + <string name="LSLTipText_llHTTPRequest" translate="false"> +llHTTPRequest(string url, list parameters, string body) +Sends an HTTP request to the specified url with the body of the request and parameters + </string> + <string name="LSLTipText_llResetLandBanList" translate="false"> +llResetLandBanList() +Removes all Residents from the land ban list + </string> + <string name="LSLTipText_llResetLandPassList" translate="false"> +llResetLandPassList() +Removes all Residents from the land access/pass list + </string> + <string name="LSLTipText_llGetObjectPrimCount" translate="false"> +integer llGetObjectPrimCount(key object_id) +Returns the total number of prims for an object in the region + </string> + <string name="LSLTipText_llGetParcelPrimOwners" translate="false"> +list llGetParcelPrimOwners(vector pos) +Returns a list of all Residents who own objects on the parcel at pos and with individual prim counts. +Requires owner-like permissions for the parcel. + </string> + <string name="LSLTipText_llGetParcelPrimCount" translate="false"> +integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) +Returns the number of prims on the parcel at pos of the given category. +Categories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP + </string> + <string name="LSLTipText_llGetParcelMaxPrims" translate="false"> +integer llGetParcelMaxPrims(vector pos, integer sim_wide) +Returns the maximum number of prims allowed on the parcel at pos + </string> + <string name="LSLTipText_llGetParcelDetails" translate="false"> +list llGetParcelDetails(vector pos, list params) +Returns the parcel details specified in params for the parcel at pos. +Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA + </string> + <string name="LSLTipText_llSetLinkPrimitiveParams" translate="false"> +llSetLinkPrimitiveParams(integer linknumber, list rules) +Sets primitive parameters for linknumber based on rules + </string> + <string name="LSLTipText_llSetLinkTexture" translate="false"> +llSetLinkTexture(integer linknumber, string texture, integer face) +Sets the texture of face for a task that exists in the link chain at linknumber + </string> + <string name="LSLTipText_llStringTrim" translate="false"> +string llStringTrim(string src, integer trim_type) +Trims the leading and/or trailing white spaces from a string. +trim_type can be STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL. + </string> + <string name="LSLTipText_llRegionSay" translate="false"> +llRegionSay(integer channel, string msg) +Broadcasts msg on channel (not 0) that can be heard anywhere in the region by a script listening on channel + </string> + <string name="LSLTipText_llGetObjectDetails" translate="false"> +list llGetObjectDetails(key id, list params) +Returns the object details specified in params for the object with key id. +Params are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR + </string> + <string name="LSLTipText_llSetClickAction" translate="false"> +llSetClickAction(integer action) +Sets the action performed when a prim is clicked upon + </string> + <string name="LSLTipText_llGetRegionAgentCount" translate="false"> +integer llGetRegionAgentCount() +Returns the number of avatars in the region + </string> + <string name="LSLTipText_llTextBox" translate="false"> +llTextBox(key avatar, string message, integer chat_channel +Shows a dialog box on the avatar's screen with the message. +It contains a text box for input, and if entered that text is chatted on chat_channel. + </string> + <string name="LSLTipText_llGetAgentLanguage" translate="false"> +string llGetAgentLanguage(key avatar) +Returns the language code of the preferred interface language of the avatar + </string> + <string name="LSLTipText_llDetectedTouchUV" translate="false"> +vector llDetectedTouchUV(integer index) +Returns the u and v coordinates in the first two components of a vector, for the texture coordinates where the prim was touched in a triggered touch event + </string> + <string name="LSLTipText_llDetectedTouchFace" translate="false"> +integer llDetectedTouchFace(integer index) +Returns the index of the face where the avatar clicked in a triggered touch event + </string> + <string name="LSLTipText_llDetectedTouchPos" translate="false"> +vector llDetectedTouchPos(integer index) +Returns the position where the object was touched in a triggered touch event + </string> + <string name="LSLTipText_llDetectedTouchNormal" translate="false"> +vector llDetectedTouchNormal(integer index) +Returns the surface normal for a triggered touch event + </string> + <string name="LSLTipText_llDetectedTouchBinormal" translate="false"> +vector llDetectedTouchBinormal(integer index) +Returns the surface binormal for a triggered touch event + </string> + <string name="LSLTipText_llDetectedTouchST" translate="false"> +vector llDetectedTouchST(integer index) +Returns the s and t coordinates in the first two components of a vector, for the surface coordinates where the prim was touched in a triggered touch event + </string> + <string name="LSLTipText_llSHA1String" translate="false"> +string llSHA1String(string src) +Returns a string of 40 hex characters that is the SHA1 security Hash of src + </string> + <string name="LSLTipText_llGetFreeURLs" translate="false"> +integer llGetFreeURLs() +Returns the number of available URLs for the current script + </string> + <string name="LSLTipText_llRequestURL" translate="false"> +key llRequestURL() +Requests one HTTP:// url for use by this object. +An http_request event is triggered with the results. + </string> + <string name="LSLTipText_llRequestSecureURL" translate="false"> +key llRequestSecureURL() +Requests one HTTPS:// (SSL) url for use by this object. +An http_request event is triggered with the results. + </string> + <string name="LSLTipText_llReleaseURL" translate="false"> +llReleaseURL(string url) +Releases the specified URL, it will no longer be usable + </string> + <string name="LSLTipText_llHTTPResponse" translate="false"> +llHTTPResponse(key request_id, integer status, string body) +Responds to request_id with status and body + </string> + <string name="LSLTipText_llGetHTTPHeader" translate="false"> +string llGetHTTPHeader(key request_id, string header) +Returns the value for header for request_id + </string> + <string name="LSLTipText_llSetPrimMediaParams" translate="false"> +llSetPrimMediaParams(integer face, list params) +Sets the media params for a particular face on an object. If media is not already on this object, add it. +List is a set of name/value pairs in no particular order. Params not specified are unchanged, or if new media is added then set to the default specified. +The possible names are below, along with the types of values and what they mean. + </string> + <string name="LSLTipText_llGetPrimMediaParams" translate="false"> +list llGetPrimMediaParams(integer face, list params) +Returns the media params for a particular face on an object, given the desired list of names, in the order requested. +(Returns an empty list if no media exists on the face.) + </string> + <string name="LSLTipText_llClearPrimMedia" translate="false"> +llClearPrimMedia(integer face) +Clears (deletes) the media and all params from the given face. + </string> <!-- Avatar busy/away mode --> <string name="AvatarSetNotAway">Not Away</string> -- GitLab From 16f9ba66e46fd056e3b6ea68202e59a9b84cb27b Mon Sep 17 00:00:00 2001 From: Kent Quirk <q@lindenlab.com> Date: Sun, 31 Jan 2010 00:11:25 -0500 Subject: [PATCH 378/521] Fix for XUI previewer on Windows - DEV-45525 --- indra/newview/llfloateruipreview.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 1e92ac0b8e5..645f8ef054e 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -1051,6 +1051,7 @@ void LLFloaterUIPreview::onClickEditFloater() if(!LLFile::stat(exe_path.c_str(), &s)) // If the executable exists { // build paths and arguments + std::string quote = std::string("\""); std::string args; std::string custom_args = mEditorArgsTextBox->getText(); int position_of_file = custom_args.find(std::string("%FILE%"), 0); // prepare to replace %FILE% with actual file path @@ -1058,7 +1059,7 @@ void LLFloaterUIPreview::onClickEditFloater() std::string second_part_of_args = ""; if(-1 == position_of_file) // default: Executable.exe File.xml { - args = std::string("\"") + path + std::string("\""); // execute the command Program.exe "File.xml" + args = quote + path + quote; // execute the command Program.exe "File.xml" } else // use advanced command-line arguments, e.g. "Program.exe -safe File.xml" -windowed for "-safe %FILE% -windowed" { @@ -1085,7 +1086,7 @@ void LLFloaterUIPreview::onClickEditFloater() memset(&pinfo, 0, sizeof(pinfo)); std::string exe_name = exe_path.substr(last_slash_position+1); - args = exe_name + std::string(" ") + args; // and prepend the executable name, so we get 'Program.exe "Arg1"' + args = quote + exe_name + quote + std::string(" ") + args; // and prepend the executable name, so we get 'Program.exe "Arg1"' char *args2 = new char[args.size() + 1]; // Windows requires that the second parameter to CreateProcessA be a writable (non-const) string... strcpy(args2, args.c_str()); -- GitLab From b73debe609d09d0944dab44710ead46d1bc3c733 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sun, 31 Jan 2010 11:19:26 -0500 Subject: [PATCH 379/521] Changed title of inventory floater. http://jira.secondlife.com/browse/EXT-4600 --- indra/newview/skins/default/xui/en/floater_inventory.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml index ff9f0daee69..e187eabd3a2 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory.xml @@ -12,11 +12,11 @@ save_rect="true" save_visibility="true" single_instance="false" - title="INVENTORY" + title="MY INVENTORY" width="467"> <floater.string name="Title"> - Inventory + MY INVENTORY </floater.string> <floater.string name="TitleFetching"> -- GitLab From 2c2324565236323ba7d6bb70159460793971ce3d Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sun, 31 Jan 2010 16:39:39 -0500 Subject: [PATCH 380/521] Made all avatar pictures square and cleaned up layouts on panels. http://jira.secondlife.com/browse/EXT-3998 --- .../default/xui/en/panel_edit_profile.xml | 132 +++++++++--------- .../default/xui/en/panel_im_control_panel.xml | 16 +-- .../newview/skins/default/xui/en/panel_me.xml | 6 +- .../skins/default/xui/en/panel_my_profile.xml | 40 +++--- .../skins/default/xui/en/panel_people.xml | 2 +- .../skins/default/xui/en/panel_profile.xml | 44 +++--- .../default/xui/en/panel_profile_view.xml | 4 +- 7 files changed, 122 insertions(+), 122 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 8268937e7f1..8f7750628ed 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -60,32 +60,33 @@ <scroll_container color="DkGray2" follows="all" - height="505" + height="493" min_height="300" layout="topleft" - left="0" + left="9" + width="290" name="profile_scroll" reserve_scroll_corner="true" opaque="true" - top="0"> + top="10"> <panel name="scroll_content_panel" follows="left|top|right" layout="topleft" top="0" - height="505" + height="493" min_height="300" left="0" - width="313"> + width="290"> <panel name="data_panel" follows="left|top|right" layout="topleft" top="0" - height="505" + height="493" min_height="300" left="0" - width="313"> + width="290"> <panel name="lifes_images_panel" follows="left|top|right" @@ -93,7 +94,7 @@ layout="topleft" top="0" left="0" - width="285"> + width="290"> <panel follows="left|top" height="117" @@ -101,25 +102,26 @@ left="10" name="second_life_image_panel" top="0" - width="285"> + width="280"> <text follows="left|top|right" font.style="BOLD" height="15" layout="topleft" left="0" + top="10" name="second_life_photo_title_text" text_color="white" value="[SECOND_LIFE]:" - width="170" /> + width="100" /> <texture_picker allow_no_texture="true" default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" - left="0" + left="1" name="2nd_life_pic" top_pad="0" width="102" /> @@ -140,13 +142,13 @@ length="1" follows="left|top|right" font="SansSerifSmall" - height="100" + height="102" layout="topleft" - left="120" - top="18" + left="123" + top="25" max_length="512" name="sl_description_edit" - width="173" + width="157" word_wrap="true"> </text_editor> <panel @@ -163,18 +165,19 @@ height="15" layout="topleft" left="0" + top_pad="10" name="real_world_photo_title_text" text_color="white" value="Real World:" - width="173" /> + width="100" /> <texture_picker allow_no_texture="true" default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" - left="0" + left="1" name="real_world_pic" top_pad="0" width="102" /> @@ -194,13 +197,13 @@ length="1" follows="left|top|right" font="SansSerifSmall" - height="100" + height="102" layout="topleft" - left="120" + left="123" max_length="512" - top="142" + top="157" name="fl_description_edit" - width="173" + width="157" word_wrap="true"> </text_editor> <text @@ -215,7 +218,7 @@ name="title_homepage_text" text_color="white" top_pad="10" - width="285"> + width="100"> Homepage: </text> <line_editor @@ -227,19 +230,19 @@ top_pad="0" value="http://" name="homepage_edit" - width="285"> + width="270"> </line_editor> <check_box follows="left|top" font="SansSerifSmall" label="Show me in Search results" layout="topleft" - left="10" + left="8" name="show_in_search_checkbox" height="15" text_enabled_color="white" - top_pad="10" - width="240" /> + top_pad="12" + width="100" /> <text follows="left|top" font="SansSerifSmall" @@ -249,9 +252,19 @@ left="10" name="title_acc_status_text" text_color="white" - top_pad="5" + top_pad="10" value="My Account:" - width="285" /> + width="100" /> + <text + follows="left|top|right" + height="15" + layout="topleft" + left="10" + name="acc_status_text" + top_pad="5" + value="Resident. No payment info on file." + width="200" + word_wrap="true" /> <text type="string" follows="left|top" @@ -261,17 +274,7 @@ left="10" name="my_account_link" value="[[URL] Go to My Dashboard]" - width="285" /> - <text - follows="left|top|right" - height="20" - layout="topleft" - left="10" - name="acc_status_text" - top_pad="5" - value="Resident. No payment info on file." - width="285" - word_wrap="true" /> + width="200" /> <text follows="left|top" font="SansSerifSmall" @@ -281,26 +284,16 @@ left="10" name="title_partner_text" text_color="white" - top_pad="0" + top_pad="10" value="My Partner:" width="150" /> - <text - follows="left|top" - height="15" - halign="right" - layout="topleft" - left_pad="10" - right="-10" - name="partner_edit_link" - value="[[URL] Edit]" - width="50" /> <panel follows="left|top|right" height="15" layout="topleft" left="10" name="partner_data_panel" - width="285"> + width="200"> <name_box follows="left|top|right" height="30" @@ -310,36 +303,43 @@ link="true" name="partner_text" top="0" - width="285" + width="200" word_wrap="true" /> </panel> + <text + follows="left|top" + height="15" + layout="topleft" + left="10" + name="partner_edit_link" + value="[[URL] Edit]" + width="50" /> </panel> </panel> </scroll_container> <panel follows="bottom|left" - height="20" - left="10" + height="28" + left="0" name="profile_me_buttons_panel" - top_pad="5" - width="303"> + top_pad="0" + width="313"> <button follows="bottom|left" - height="19" + height="23" label="Save Changes" layout="topleft" - left="0" + left="9" name="save_btn" - top="0" - width="130" /> + top="5" + width="152" /> <button follows="bottom|left" - height="19" + height="23" label="Cancel" layout="topleft" - left_pad="10" + left_pad="4" name="cancel_btn" - right="-1" - width="130" /> + width="152" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 2e3d5a73202..9279d1e686a 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -30,7 +30,7 @@ left="5" name="button_stack" orientation="vertical" - top_pad="0" + top_pad="-5" width="105"> <layout_panel mouse_opaque="false" @@ -55,7 +55,7 @@ user_resize="false"> <button follows="left|top|right" - height="20" + height="23" label="Profile" name="view_profile_btn" top="0" @@ -72,7 +72,7 @@ user_resize="false"> <button follows="left|top|right" - height="20" + height="23" label="Add Friend" name="add_friend_btn" top="5" @@ -90,7 +90,7 @@ <button auto_resize="false" follows="left|top|right" - height="20" + height="23" label="Teleport" name="teleport_btn" width="100" /> @@ -107,7 +107,7 @@ <button auto_resize="true" follows="left|top|right" - height="20" + height="23" label="Share" name="share_btn" width="100" /> @@ -123,7 +123,7 @@ user_resize="false"> <button follows="left|top|right" - height="20" + height="23" label="Call" name="call_btn" width="100" /> @@ -140,7 +140,7 @@ visible="false"> <button follows="left|top|right" - height="20" + height="23" label="Leave Call" name="end_call_btn" width="100" /> @@ -157,7 +157,7 @@ visible="false"> <button follows="left|top|right" - height="20" + height="23" label="Voice Controls" name="voice_ctrls_btn" width="100" /> diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml index 2814fb071b5..a30d80f1019 100644 --- a/indra/newview/skins/default/xui/en/panel_me.xml +++ b/indra/newview/skins/default/xui/en/panel_me.xml @@ -4,7 +4,7 @@ border="false" follows="all" height="570" - label="My Profile" + label="My Profile!!!!!" layout="topleft" left="0" name="panel_me" @@ -29,13 +29,13 @@ height="570" halign="center" layout="topleft" - left="10" + left="6" name="tabs" tab_min_width="95" tab_height="30" tab_position="top" top_pad="10" - width="313"> + width="315"> <panel class="panel_my_profile" filename="panel_my_profile.xml" diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index 34cde61252c..aea3d186063 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -7,7 +7,7 @@ left="0" name="panel_profile" top="0" - width="313"> + width="315"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] @@ -41,8 +41,8 @@ layout="topleft" left="0" top="0" - height="535" - width="313" + height="522" + width="315" border_size="0"> <layout_panel name="profile_stack" @@ -50,9 +50,9 @@ layout="topleft" top="0" left="0" - height="505" + height="492" user_resize="false" - width="313"> + width="315"> <scroll_container color="DkGray2" follows="all" @@ -60,13 +60,13 @@ left="0" name="profile_scroll" opaque="true" - height="505" - width="313" + height="492" + width="315" top="0"> <panel layout="topleft" follows="left|top|right" - height="505" + height="492" name="scroll_content_panel" top="0" left="0" @@ -84,9 +84,9 @@ default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" - left="0" + left="3" name="2nd_life_pic" top="10" width="102" /> @@ -96,7 +96,7 @@ layout="topleft" name="2nd_life_edit_icon" label="" - left="0" + left="3" tool_tip="Click the Edit Profile button below to change image" top="10" width="102" /> @@ -129,7 +129,7 @@ follows="left|top|right" height="117" layout="topleft" - top_pad="10" + top_pad="0" left="10" name="first_life_image_panel" width="297"> @@ -138,9 +138,9 @@ default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" - left="0" + left="3" name="real_world_pic" width="102" /> <icon @@ -149,7 +149,7 @@ layout="topleft" name="real_world_edit_icon" label="" - left="0" + left="3" tool_tip="Click the Edit Profile button below to change image" top="4" width="102" /> @@ -373,20 +373,20 @@ <button follows="bottom|right" height="23" - left="20" - top="0" + left="4" + top="5" label="Edit Profile" name="edit_profile_btn" tool_tip="Edit your personal information" - width="130" /> + width="152" /> <button follows="bottom|right" height="23" label="Edit Appearance" - left_pad="10" + left_pad="4" name="edit_appearance_btn" tool_tip="Create/edit your appearance: physical data, clothes and etc." - width="130" /> + width="152" /> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 69643c243be..ac98bb9bd91 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -47,7 +47,7 @@ background_visible="true" follows="all" height="500" layout="topleft" - left="10" + left="6" name="tabs" tab_min_width="70" tab_height="30" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 7c584ba2c87..11cefa02245 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -7,7 +7,7 @@ left="0" name="panel_profile" top="0" - width="313"> + width="317"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] @@ -41,8 +41,8 @@ layout="topleft" left="0" top="0" - height="517" - width="313" + height="524" + width="317" border_size="0"> <layout_panel name="profile_stack" @@ -50,8 +50,8 @@ layout="topleft" top="0" left="0" - height="505" - width="313"> + height="524" + width="317"> <scroll_container color="DkGray2" follows="all" @@ -59,8 +59,8 @@ left="0" name="profile_scroll" opaque="true" - height="505" - width="313" + height="524" + width="317" top="0"> <panel layout="topleft" @@ -73,9 +73,9 @@ width="297"> <panel follows="left|top|right" - height="117" + height="124" layout="topleft" - left="10" + left="13" name="second_life_image_panel" top="0" width="297"> @@ -84,7 +84,7 @@ default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" left="0" name="2nd_life_pic" @@ -103,7 +103,7 @@ width="180" /> <expandable_text follows="left|top|right" - height="95" + height="97" layout="topleft" left="107" textbox.max_length="512" @@ -117,10 +117,10 @@ </panel> <panel follows="left|top|right" - height="117" + height="124" layout="topleft" - top_pad="10" - left="10" + top_pad="0" + left="13" name="first_life_image_panel" width="297"> <texture_picker @@ -128,7 +128,7 @@ default_image_name="None" enabled="false" follows="top|left" - height="117" + height="124" layout="topleft" left="0" name="real_world_pic" @@ -146,7 +146,7 @@ width="180" /> <expandable_text follows="left|top|right" - height="95" + height="97" layout="topleft" left="107" textbox.max_length="512" @@ -289,18 +289,18 @@ layout="topleft" name="profile_buttons_panel" auto_resize="false" - width="313"> + width="317"> <button follows="bottom|left" height="23" label="Add Friend" layout="topleft" - left="0" + left="2" mouse_opaque="false" name="add_friend" tool_tip="Offer friendship to the Resident" top="5" - width="80" /> + width="81" /> <button follows="bottom|left" height="23" @@ -320,7 +320,7 @@ tool_tip="Call this Resident" left_pad="3" top="5" - width="45" /> + width="46" /> <button enabled="false" follows="bottom|left" @@ -331,7 +331,7 @@ tool_tip="Show the Resident on the map" top="5" left_pad="3" - width="45" /> + width="46" /> <button follows="bottom|left" height="23" @@ -341,7 +341,7 @@ tool_tip="Offer teleport" left_pad="3" top="5" - width="85" /> + width="78" /> <!-- <button follows="bottom|right" height="23" diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml index d46e1f98525..f5396951ca0 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -54,14 +54,14 @@ height="535" halign="center" layout="topleft" - left="10" + left="5" min_width="333" name="tabs" tab_min_width="80" tab_height="30" tab_position="top" top_pad="5" - width="313"> + width="317"> <panel class="panel_profile" filename="panel_profile.xml" -- GitLab From f99a7b23ae0cee0d3e96b0b89d82e5c35bb07433 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Sun, 31 Jan 2010 17:18:52 -0500 Subject: [PATCH 381/521] Cleaned up layout of inventory script editor. http://jira.secondlife.com/browse/EXT-999 --- .../skins/default/xui/en/floater_script_preview.xml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml index bb0702c3531..d0cd00d1471 100644 --- a/indra/newview/skins/default/xui/en/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml @@ -3,26 +3,24 @@ legacy_header_height="18" auto_tile="true" can_resize="true" - height="550" + height="570" layout="topleft" - left_delta="343" min_height="271" min_width="290" name="preview lsl text" help_topic="preview_lsl_text" save_rect="true" title="SCRIPT: ROTATION SCRIPT" - top_delta="0" - width="500"> + width="508"> <floater.string name="Title"> - Script: [NAME] + SCRIPT: [NAME] </floater.string> <panel follows="left|top|right|bottom" - height="508" + height="522" layout="topleft" - left="0" + left="10" name="script panel" top="42" width="497" /> -- GitLab From 50f29e0bc20afb5b44bf9824f5f7c3362d4e4f16 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 1 Feb 2010 12:01:44 +0000 Subject: [PATCH 382/521] Use floorf() instead of floor() when we know the param is an F32. Which here, it always is. --- indra/llmath/llmath.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 7a5d51ff768..209b506c304 100644 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h @@ -203,7 +203,7 @@ inline S32 llfloor( F32 f ) } return result; #else - return (S32)floor(f); + return (S32)floorf(f); #endif } -- GitLab From 9b410e89c3257d5ab648afef221864ac0a0b4fe7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 1 Feb 2010 12:02:11 +0000 Subject: [PATCH 383/521] EXT-4388 Crash in octree line segment intersection code Yet more sanitization - whew. --- indra/llrender/llimagegl.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 8bcc4723ae2..36ac3ff119a 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1693,11 +1693,11 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) return; } - U32 pick_width = width/2; - U32 pick_height = height/2; + U32 pick_width = width/2 + 1; + U32 pick_height = height/2 + 1; - U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1); - size = size/8 + 1; + U32 size = pick_width * pick_height; + size = (size + 7) / 8; // pixelcount-to-bits mPickMask = new U8[size]; mPickMaskWidth = pick_width; mPickMaskHeight = pick_height; @@ -1745,8 +1745,8 @@ BOOL LLImageGL::getMask(const LLVector2 &tc) llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0); - S32 x = (S32)(u * mPickMaskWidth); - S32 y = (S32)(v * mPickMaskHeight); + S32 x = llfloor(u * mPickMaskWidth); + S32 y = llfloor(v * mPickMaskHeight); if (LL_UNLIKELY(x >= mPickMaskWidth)) { -- GitLab From 5eee046bb7d62e24df6c35018b3c5383f87ab587 Mon Sep 17 00:00:00 2001 From: Aimee Linden <aimee@lindenlab.com> Date: Mon, 1 Feb 2010 12:03:15 +0000 Subject: [PATCH 384/521] Fix EXT-4770 : Voice muting not working properly due to a change in the Vivox API Added <Scope>Audio</Scope> to the SetParticipantMuteForMe message. Reviewed by Lynx --- indra/newview/llvoiceclient.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 560c2ab469e..c062dd1732d 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -3439,12 +3439,17 @@ void LLVoiceClient::sendPositionalUpdate(void) << "<Volume>" << volume << "</Volume>" << "</Request>\n\n\n"; - // Send a "mute for me" command for the user - stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.SetParticipantMuteForMe.1\">" - << "<SessionHandle>" << getAudioSessionHandle() << "</SessionHandle>" - << "<ParticipantURI>" << p->mURI << "</ParticipantURI>" - << "<Mute>" << (mute?"1":"0") << "</Mute>" - << "</Request>\n\n\n"; + if(!mAudioSession->mIsP2P) + { + // Send a "mute for me" command for the user + // Doesn't work in P2P sessions + stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.SetParticipantMuteForMe.1\">" + << "<SessionHandle>" << getAudioSessionHandle() << "</SessionHandle>" + << "<ParticipantURI>" << p->mURI << "</ParticipantURI>" + << "<Mute>" << (mute?"1":"0") << "</Mute>" + << "<Scope>Audio</Scope>" + << "</Request>\n\n\n"; + } } p->mVolumeDirty = false; -- GitLab From c6fb7a0b1a65009b254af6ac02fc9284c498ed32 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Mon, 1 Feb 2010 12:13:12 +0000 Subject: [PATCH 385/521] Hint to compiler that logging is never *expected* on the fast-path. --- indra/llcommon/llerror.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 5a4c6448594..09812de2b80 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -242,7 +242,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; do { \ static LLError::CallSite _site( \ level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__, broadTag, narrowTag, once);\ - if (_site.shouldLog()) \ + if (LL_UNLIKELY(_site.shouldLog())) \ { \ std::ostringstream* _out = LLError::Log::out(); \ (*_out) -- GitLab From 484cbc524fd6c182fff6b0f5089b542be3a0174b Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 1 Feb 2010 15:37:24 +0200 Subject: [PATCH 386/521] fixed EXT-4775 Plain text mode broken in IM windows --HG-- branch : product-engine --- indra/newview/llimfloater.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 9e52d4c6c24..1839a1ef864 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -585,6 +585,9 @@ void LLIMFloater::updateMessages() { // LLUIColor chat_color = LLUIColorTable::instance().getColor("IMChatColor"); + LLSD chat_args; + chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history; + std::ostringstream message; std::list<LLSD>::const_reverse_iterator iter = messages.rbegin(); std::list<LLSD>::const_reverse_iterator iter_end = messages.rend(); @@ -614,7 +617,7 @@ void LLIMFloater::updateMessages() chat.mText = message; } - mChatHistory->appendMessage(chat, use_plain_text_chat_history); + mChatHistory->appendMessage(chat, chat_args); mLastMessageIndex = msg["index"].asInteger(); } } -- GitLab From 379762d2c1dd4e0804dd6ab1b930f525e1a60189 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Mon, 1 Feb 2010 15:37:03 +0200 Subject: [PATCH 387/521] Fixed normal bug EXT-4772 - No new IM notification when in tabbed IM mode. --HG-- branch : product-engine --- indra/newview/llimfloater.cpp | 14 ++++++++++++++ indra/newview/llimfloater.h | 1 + 2 files changed, 15 insertions(+) diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 1839a1ef864..4a18c8640f4 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -510,6 +510,20 @@ void LLIMFloater::setVisible(BOOL visible) } } +BOOL LLIMFloater::getVisible() +{ + if(isChatMultiTab()) + { + LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance(); + // Tabbed IM window is "visible" when we minimize it. + return !im_container->isMinimized() && im_container->getVisible(); + } + else + { + return LLTransientDockableFloater::getVisible(); + } +} + //static bool LLIMFloater::toggle(const LLUUID& session_id) { diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index 9552b307379..2f034d02b88 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -58,6 +58,7 @@ class LLIMFloater : public LLTransientDockableFloater // LLView overrides /*virtual*/ BOOL postBuild(); /*virtual*/ void setVisible(BOOL visible); + /*virtual*/ BOOL getVisible(); // Check typing timeout timer. /*virtual*/ void draw(); -- GitLab From 17b7d606b12aac7b18fe9013e6d8de1c827ac690 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 1 Feb 2010 14:21:05 +0000 Subject: [PATCH 388/521] EXT-4774: Fixed the position of the snapshot preview thumbnail. The preview thumbnail no longer floats above the snapshot window when the window is in its small (less) mode. --- indra/newview/llfloatersnapshot.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index a0031f01932..b6e9fb3f6ce 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -2084,6 +2084,10 @@ void LLFloaterSnapshot::draw() S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ; S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ; + if (! gSavedSettings.getBOOL("AdvanceSnapshot")) + { + offset_y += getUIWinHeightShort() - getUIWinHeightLong(); + } glMatrixMode(GL_MODELVIEW); gl_draw_scaled_image(offset_x, offset_y, -- GitLab From 3650ef0d9ff937aeb1081817158021adb3f081d2 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Mon, 1 Feb 2010 16:30:48 +0200 Subject: [PATCH 389/521] fix for normal EXT-4512 [BSI] Can't minimize Mini-Map actually this has nothing with original bug description so...fix map and text pos on map resize --HG-- branch : product-engine --- indra/newview/llfloatermap.cpp | 4 +- .../skins/default/xui/en/floater_map.xml | 40 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 568f4b254e1..051ab585e22 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -142,8 +142,8 @@ void LLFloaterMap::setDirectionPos( LLTextBox* text_box, F32 rotation ) // Rotation is in radians. // Rotation of 0 means x = 1, y = 0 on the unit circle. - F32 map_half_height = (F32)(getRect().getHeight() / 2); - F32 map_half_width = (F32)(getRect().getWidth() / 2); + F32 map_half_height = (F32)(getRect().getHeight() / 2) - getHeaderHeight()/2; + F32 map_half_width = (F32)(getRect().getWidth() / 2) ; F32 text_half_height = (F32)(text_box->getRect().getHeight() / 2); F32 text_half_width = (F32)(text_box->getRect().getWidth() / 2); F32 radius = llmin( map_half_height - text_half_height, map_half_width - text_half_width ); diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 3ddb7bc3494..1903e7c714f 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -6,7 +6,7 @@ center_horiz="true" center_vert="true" follows="top|right" - height="225" + height="218" layout="topleft" min_height="60" min_width="174" @@ -55,116 +55,116 @@ </floater.string> <net_map bg_color="NetMapBackgroundColor" - bottom="225" follows="top|left|bottom|right" layout="topleft" left="0" mouse_opaque="false" name="Net Map" - right="198" - top="2" /> + width="200" + height="200" + top="18"/> <text type="string" length="1" - bottom="225" + bottom="218" label="N" layout="topleft" left="0" name="floater_map_north" right="10" text_color="1 1 1 0.7" - top="215"> + top="209"> N </text> <text type="string" length="1" - bottom="225" + bottom="218" label="E" layout="topleft" left="0" name="floater_map_east" right="10" text_color="1 1 1 0.7" - top="215"> + top="209"> E </text> <text type="string" length="1" - bottom="225" + bottom="205" label="W" layout="topleft" left="0" name="floater_map_west" right="11" text_color="1 1 1 0.7" - top="215"> + top="195"> W </text> <text type="string" length="1" - bottom="225" + bottom="218" label="S" layout="topleft" left="0" name="floater_map_south" right="10" text_color="1 1 1 0.7" - top="215"> + top="209"> S </text> <text type="string" length="1" - bottom="225" + bottom="218" label="SE" layout="topleft" left="0" name="floater_map_southeast" right="20" text_color="1 1 1 0.7" - top="215"> + top="209"> SE </text> <text type="string" length="1" - bottom="225" + bottom="218" label="NE" layout="topleft" left="0" name="floater_map_northeast" right="20" text_color="1 1 1 0.7" - top="215"> + top="209"> NE </text> <text type="string" length="1" - bottom="225" + bottom="218" label="SW" layout="topleft" left="0" name="floater_map_southwest" right="20" text_color="1 1 1 0.7" - top="215"> + top="209"> SW </text> <text type="string" length="1" - bottom="225" + bottom="218" label="NW" layout="topleft" left="0" name="floater_map_northwest" right="20" text_color="1 1 1 0.7" - top="215"> + top="209"> NW </text> </floater> -- GitLab From e43d0f18150ee2fae4c1533e643ace5d7e5813f2 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Mon, 1 Feb 2010 16:51:34 +0200 Subject: [PATCH 390/521] fixed EXT-4779 Notifications about objects are saved into ".txt" or "{nobody}.txt" instead of "chat.txt" file --HG-- branch : product-engine --- indra/newview/llnotificationhandlerutil.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index 16218f6d535..e2a748a1c50 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -153,7 +153,7 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi { const std::string name = LLHandlerUtil::getSubstitutionName(notification); - const std::string session_name = notification->getPayload().has( + std::string session_name = notification->getPayload().has( "SESSION_NAME") ? notification->getPayload()["SESSION_NAME"].asString() : name; // don't create IM p2p session with objects, it's necessary condition to log @@ -162,6 +162,12 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi { LLUUID from_id = notification->getPayload()["from_id"]; + //*HACK for ServerObjectMessage the sesson name is really weird, see EXT-4779 + if (SERVER_OBJECT_MESSAGE == notification->getName()) + { + session_name = "chat"; + } + if(to_file_only) { logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), -- GitLab From fca58b27507c653127bc7063dc5955070e4e297d Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 1 Feb 2010 14:52:06 +0000 Subject: [PATCH 391/521] EXT-4681: Fixed alignment of checkboxes on Beacons floater. --- indra/newview/skins/default/xui/en/floater_beacons.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index c8f6c613af2..4fc2b698d80 100644 --- a/indra/newview/skins/default/xui/en/floater_beacons.xml +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml @@ -25,7 +25,7 @@ name="label_show" text_color="White" type="string"> - Show: + Show : </text> <check_box control_name="renderbeacons" @@ -117,6 +117,7 @@ <check_box control_name="soundsbeacon" height="16" + left="0" label="Sound sources" layout="topleft" name="sounds" > -- GitLab From a359db96eb0273bf67fe48bae2665ea65831cf67 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Mon, 1 Feb 2010 16:57:34 +0200 Subject: [PATCH 392/521] (EXT-2987) Parcel Characteristics icons aren't refreshed after changing restrictions - LLViewerParcelMgr refactoring. Changed parcel characteristics accessors to get selected parcel properties. --HG-- branch : product-engine --- indra/newview/lllocationinputctrl.cpp | 14 ++++------ indra/newview/llpanelplaceprofile.cpp | 40 ++++++++++++--------------- indra/newview/llviewerparcelmgr.cpp | 36 ++++++++++++++---------- indra/newview/llviewerparcelmgr.h | 12 ++++---- 4 files changed, 52 insertions(+), 50 deletions(-) diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 0e93e28f2da..4f40a0a5322 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -722,14 +722,12 @@ void LLLocationInputCtrl::refreshParcelIcons() } bool allow_buy = vpm->canAgentBuyParcel(current_parcel, false); - bool allow_voice = agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice(); - bool allow_fly = !agent_region->getBlockFly() && current_parcel->getAllowFly(); - bool allow_push = !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject(); - bool allow_build = current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. - bool allow_scripts = !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) && - !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) && - current_parcel->getAllowOtherScripts(); - bool allow_damage = agent_region->getAllowDamage() || current_parcel->getAllowDamage(); + bool allow_voice = vpm->allowAgentVoice(agent_region, current_parcel); + bool allow_fly = vpm->allowAgentFly(agent_region, current_parcel); + bool allow_push = vpm->allowAgentPush(agent_region, current_parcel); + bool allow_build = vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610. + bool allow_scripts = vpm->allowAgentScripts(agent_region, current_parcel); + bool allow_damage = vpm->allowAgentDamage(agent_region, current_parcel); // Most icons are "block this ability" mForSaleBtn->setVisible(allow_buy); diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 9b31ef23a26..9e5f9da0ea6 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -340,8 +340,10 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, std::string on = getString("on"); std::string off = getString("off"); + LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); + // Processing parcel characteristics - if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice()) + if (vpm->allowAgentVoice(region, parcel)) { mVoiceIcon->setValue(icon_voice); mVoiceText->setText(on); @@ -352,7 +354,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mVoiceText->setText(off); } - if (!region->getBlockFly() && parcel->getAllowFly()) + if (vpm->allowAgentFly(region, parcel)) { mFlyIcon->setValue(icon_fly); mFlyText->setText(on); @@ -363,18 +365,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mFlyText->setText(off); } - if (region->getRestrictPushObject() || parcel->getRestrictPushObject()) + if (vpm->allowAgentPush(region, parcel)) { - mPushIcon->setValue(icon_push_no); - mPushText->setText(off); + mPushIcon->setValue(icon_push); + mPushText->setText(on); } else { - mPushIcon->setValue(icon_push); - mPushText->setText(on); + mPushIcon->setValue(icon_push_no); + mPushText->setText(off); } - if (parcel->getAllowModify()) + if (vpm->allowAgentBuild(parcel)) { mBuildIcon->setValue(icon_build); mBuildText->setText(on); @@ -385,20 +387,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mBuildText->setText(off); } - if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || - (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || - !parcel->getAllowOtherScripts()) + if (vpm->allowAgentScripts(region, parcel)) { - mScriptsIcon->setValue(icon_scripts_no); - mScriptsText->setText(off); + mScriptsIcon->setValue(icon_scripts); + mScriptsText->setText(on); } else { - mScriptsIcon->setValue(icon_scripts); - mScriptsText->setText(on); + mScriptsIcon->setValue(icon_scripts_no); + mScriptsText->setText(off); } - if (region->getAllowDamage() || parcel->getAllowDamage()) + if (vpm->allowAgentDamage(region, parcel)) { mDamageIcon->setValue(icon_damage); mDamageText->setText(on); @@ -461,12 +461,8 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, S32 claim_price; S32 rent_price; F32 dwell; - BOOL for_sale = parcel->getForSale(); - LLViewerParcelMgr::getInstance()->getDisplayInfo(&area, - &claim_price, - &rent_price, - &for_sale, - &dwell); + BOOL for_sale; + vpm->getDisplayInfo(&area, &claim_price, &rent_price, &for_sale, &dwell); if (for_sale) { const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID(); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index b85b42c7100..7ec650629dd 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -666,31 +666,38 @@ bool LLViewerParcelMgr::allowAgentBuild() const } } +// Return whether anyone can build on the given parcel +bool LLViewerParcelMgr::allowAgentBuild(const LLParcel* parcel) const +{ + return parcel->getAllowModify(); +} + bool LLViewerParcelMgr::allowAgentVoice() const { - LLViewerRegion* region = gAgent.getRegion(); + return allowAgentVoice(gAgent.getRegion(), mAgentParcel); +} + +bool LLViewerParcelMgr::allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const +{ return region && region->isVoiceEnabled() - && mAgentParcel && mAgentParcel->getParcelFlagAllowVoice(); + && parcel && parcel->getParcelFlagAllowVoice(); } -bool LLViewerParcelMgr::allowAgentFly() const +bool LLViewerParcelMgr::allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const { - LLViewerRegion* region = gAgent.getRegion(); return region && !region->getBlockFly() - && mAgentParcel && mAgentParcel->getAllowFly(); + && parcel && parcel->getAllowFly(); } // Can the agent be pushed around by LLPushObject? -bool LLViewerParcelMgr::allowAgentPush() const +bool LLViewerParcelMgr::allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const { - LLViewerRegion* region = gAgent.getRegion(); return region && !region->getRestrictPushObject() - && mAgentParcel && !mAgentParcel->getRestrictPushObject(); + && parcel && !parcel->getRestrictPushObject(); } -bool LLViewerParcelMgr::allowAgentScripts() const +bool LLViewerParcelMgr::allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const { - LLViewerRegion* region = gAgent.getRegion(); // *NOTE: This code does not take into account group-owned parcels // and the flag to allow group-owned scripted objects to run. // This mirrors the traditional menu bar parcel icon code, but is not @@ -698,15 +705,14 @@ bool LLViewerParcelMgr::allowAgentScripts() const return region && !(region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) && !(region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) - && mAgentParcel - && mAgentParcel->getAllowOtherScripts(); + && parcel + && parcel->getAllowOtherScripts(); } -bool LLViewerParcelMgr::allowAgentDamage() const +bool LLViewerParcelMgr::allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const { - LLViewerRegion* region = gAgent.getRegion(); return (region && region->getAllowDamage()) - || (mAgentParcel && mAgentParcel->getAllowDamage()); + || (parcel && parcel->getAllowDamage()); } BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 379190789b0..98be8e2c7b4 100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -171,26 +171,28 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr> // Can this agent build on the parcel he is on? // Used for parcel property icons in nav bar. bool allowAgentBuild() const; + bool allowAgentBuild(const LLParcel* parcel) const; // Can this agent speak on the parcel he is on? // Used for parcel property icons in nav bar. bool allowAgentVoice() const; - + bool allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const; + // Can this agent start flying on this parcel? // Used for parcel property icons in nav bar. - bool allowAgentFly() const; + bool allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const; // Can this agent be pushed by llPushObject() on this parcel? // Used for parcel property icons in nav bar. - bool allowAgentPush() const; + bool allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const; // Can scripts written by non-parcel-owners run on the agent's current // parcel? Used for parcel property icons in nav bar. - bool allowAgentScripts() const; + bool allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const; // Can the agent be damaged here? // Used for parcel property icons in nav bar. - bool allowAgentDamage() const; + bool allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const; F32 getHoverParcelWidth() const { return F32(mHoverEastNorth.mdV[VX] - mHoverWestSouth.mdV[VX]); } -- GitLab From 20cef655398fa82b99a1b95fec204d209a5672ca Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 2 Feb 2010 15:27:19 +0200 Subject: [PATCH 393/521] changed password's circles to bullets - EXT-4499 Replace "*" glyph in password fields with a proper circle [PATCH INCLUDED] --HG-- branch : product-engine --- indra/llui/lllineeditor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index cb5aea272df..eb2b4f7705d 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -70,7 +70,7 @@ const S32 SCROLL_INCREMENT_DEL = 4; // make space for baskspacing const F32 AUTO_SCROLL_TIME = 0.05f; const F32 TRIPLE_CLICK_INTERVAL = 0.3f; // delay between double and triple click. *TODO: make this equal to the double click interval? -const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE +const std::string PASSWORD_ASTERISK( "\xE2\x80\xA2" ); // U+2022 BULLET static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor"); -- GitLab From 10ed52f69ab55924519d52fe8ccd48a5b3d7c4ba Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Tue, 2 Feb 2010 17:08:29 +0200 Subject: [PATCH 394/521] Fixed linux build. --HG-- branch : product-engine --- indra/newview/llnearbychat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 49ab61556f8..6de47fccd2c 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -300,8 +300,8 @@ void LLNearbyChat::loadHistory() LLChat chat; chat.mFromName = from; chat.mFromID = from_id; - chat.mText = msg[IM_TEXT]; - chat.mTimeStr = msg[IM_TIME]; + chat.mText = msg[IM_TEXT].asString(); + chat.mTimeStr = msg[IM_TIME].asString(); addMessage(chat); it++; -- GitLab From c679ae3546ffe0f29330a2969460fa37807e23b6 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Mon, 1 Feb 2010 17:11:31 +0200 Subject: [PATCH 395/521] Fixed normal bug EXT-4768 - 'Play' btn does nothing to gesture in Inventory side panel. --HG-- branch : product-engine --- indra/newview/llinventorybridge.cpp | 29 ++++++++++++++++++++++++++ indra/newview/llinventorybridge.h | 2 ++ indra/newview/llsidepanelinventory.cpp | 16 +++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e8a4899a0b5..f68550d8fda 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3773,6 +3773,21 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode gInventory.updateItem(item); gInventory.notifyObservers(); } + else if("play" == action) + { + if(!LLGestureManager::instance().isGestureActive(mUUID)) + { + // we need to inform server about gesture activating to be consistent with LLPreviewGesture and LLGestureComboList. + BOOL inform_server = TRUE; + BOOL deactivate_similar = FALSE; + LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID)); + LLGestureManager::instance().activateGestureWithAsset(mUUID, gInventory.getItem(mUUID)->getAssetUUID(), inform_server, deactivate_similar); + } + else + { + playGesture(mUUID); + } + } else LLItemBridge::performAction(folder, model, action); } @@ -3858,6 +3873,20 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) hide_context_entries(menu, items, disabled_items); } +// static +void LLGestureBridge::playGesture(const LLUUID& item_id) +{ + if (LLGestureManager::instance().isGesturePlaying(item_id)) + { + LLGestureManager::instance().stopGesture(item_id); + } + else + { + LLGestureManager::instance().playGesture(item_id); + } +} + + // +=================================================+ // | LLAnimationBridge | // +=================================================+ diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index eeb8246b112..6fffec96a07 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -491,6 +491,8 @@ class LLGestureBridge : public LLItemBridge virtual void buildContextMenu(LLMenuGL& menu, U32 flags); + static void playGesture(const LLUUID& item_id); + protected: LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid) : LLItemBridge(inventory, uuid) {} diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 5383158cd3f..7b923f4b0b3 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -164,7 +164,21 @@ void LLSidepanelInventory::onWearButtonClicked() void LLSidepanelInventory::onPlayButtonClicked() { - performActionOnSelection("activate"); + const LLInventoryItem *item = getSelectedItem(); + if (!item) + { + return; + } + + switch(item->getInventoryType()) + { + case LLInventoryType::IT_GESTURE: + performActionOnSelection("play"); + break; + default: + performActionOnSelection("activate"); + break; + } } void LLSidepanelInventory::onTeleportButtonClicked() -- GitLab From c8621274eef9b4ef2a9a4bf2a3f338ddc141935a Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Mon, 1 Feb 2010 17:23:25 +0200 Subject: [PATCH 396/521] fix low EXT-3807 ABOUT LAND/OBJECTS: (i) icon is badly positioned --HG-- branch : product-engine --- indra/newview/llnamelistctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 9f04558d508..8c875c9b63d 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -162,7 +162,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask) localRectToScreen(cell_rect, &sticky_rect); // Spawn at right side of cell - LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop ); + LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop + (sticky_rect.getHeight()-16)/2 ); LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small"); // Should we show a group or an avatar inspector? -- GitLab From d5e97617c661dd3518ef1caa6903867ad044df8d Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Mon, 1 Feb 2010 17:48:25 +0200 Subject: [PATCH 397/521] Fixed major bug EXT-4782 (Viewer crashes if end ad-hoc voice chat by 'End session' context commant of chiclet) - reason: indicator on ad-hoc chiclets is changed its speaker UUID that leads to registering the same instances several times in the SpeakingIndicatorManager. This leads to crash after instance is destroyed because the only one (specified by UUID in unregisterSpeakingIndicator()) is removed from the map. So, using stored deleted pointer leads to crash. See EXT-4782. - fix: prevent regestering the same instance of indicator by removing existing one in LLOutputMonitorCtrl::setSpeakerId. Also added check in SpeakingIndicatorManager to prevent such situation in the future with an appropriate warning & assert. --HG-- branch : product-engine --- indra/newview/lloutputmonitorctrl.cpp | 5 +++ indra/newview/llspeakingindicatormanager.cpp | 41 +++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index f816dc589d6..388fdeea7af 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -251,6 +251,11 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id) { if (speaker_id.isNull() || speaker_id == mSpeakerId) return; + if (mSpeakerId.notNull()) + { + // Unregister previous registration to avoid crash. EXT-4782. + LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this); + } mSpeakerId = speaker_id; LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this); diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index 5e1d408e8da..d33c050ee45 100644 --- a/indra/newview/llspeakingindicatormanager.cpp +++ b/indra/newview/llspeakingindicatormanager.cpp @@ -113,6 +113,13 @@ class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, L */ void switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on); + /** + * Ensures that passed instance of Speaking Indicator does not exist among registered ones. + * If yes, it will be removed. + */ + void ensureInstanceDoesNotExist(LLSpeakingIndicator* const speaking_indicator); + + /** * Multimap with all registered speaking indicators */ @@ -135,7 +142,11 @@ void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_i { // do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889. - LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL; + LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << "|"<< speaking_indicator << LL_ENDL; + + + ensureInstanceDoesNotExist(speaking_indicator); + speaking_indicator_value_t value_type(speaker_id, speaking_indicator); mSpeakingIndicators.insert(value_type); @@ -148,12 +159,14 @@ void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_i void SpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator) { + LL_DEBUGS("SpeakingIndicator") << "Unregistering indicator: " << speaker_id << "|"<< speaking_indicator << LL_ENDL; speaking_indicators_mmap_t::iterator it; it = mSpeakingIndicators.find(speaker_id); for (;it != mSpeakingIndicators.end(); ++it) { if (it->second == speaking_indicator) { + LL_DEBUGS("SpeakingIndicator") << "Unregistered." << LL_ENDL; mSpeakingIndicators.erase(it); break; } @@ -231,6 +244,32 @@ void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& spea } } +void SpeakingIndicatorManager::ensureInstanceDoesNotExist(LLSpeakingIndicator* const speaking_indicator) +{ + LL_DEBUGS("SpeakingIndicator") << "Searching for an registered indicator instance: " << speaking_indicator << LL_ENDL; + speaking_indicators_mmap_t::iterator it = mSpeakingIndicators.begin(); + for (;it != mSpeakingIndicators.end(); ++it) + { + if (it->second == speaking_indicator) + { + LL_DEBUGS("SpeakingIndicator") << "Found" << LL_ENDL; + break; + } + } + + // It is possible with LLOutputMonitorCtrl the same instance of indicator is registered several + // times with different UUIDs. This leads to crash after instance is destroyed because the + // only one (specified by UUID in unregisterSpeakingIndicator()) is removed from the map. + // So, using stored deleted pointer leads to crash. See EXT-4782. + if (it != mSpeakingIndicators.end()) + { + llwarns << "The same instance of indicator has already been registered, removing it: " << it->first << "|"<< speaking_indicator << llendl; + llassert(it == mSpeakingIndicators.end()); + mSpeakingIndicators.erase(it); + } +} + + /************************************************************************/ /* LLSpeakingIndicatorManager namespace implementation */ /************************************************************************/ -- GitLab From 5dfdb0d5a41143512180390193ce79644bcb9469 Mon Sep 17 00:00:00 2001 From: gabriel lee <gabriel@lindenlab.com> Date: Mon, 1 Feb 2010 16:12:47 +0000 Subject: [PATCH 398/521] DEV-44904 and other fixes --- indra/newview/llfloaterland.cpp | 13 +- indra/newview/llfloaterscriptlimits.cpp | 889 ++++++++++-------- indra/newview/llfloaterscriptlimits.h | 76 +- indra/newview/llpreviewscript.cpp | 2 +- .../default/xui/en/floater_script_limits.xml | 1 + .../xui/en/panel_script_limits_my_avatar.xml | 45 +- .../en/panel_script_limits_region_memory.xml | 38 +- .../newview/skins/default/xui/en/strings.xml | 1 + 8 files changed, 585 insertions(+), 480 deletions(-) diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 0ad283d7c69..1b1e4ef612b 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -427,8 +427,17 @@ BOOL LLPanelLandGeneral::postBuild() mBtnBuyLand = getChild<LLButton>("Buy Land..."); mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND); - mBtnScriptLimits = getChild<LLButton>("Scripts..."); - mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + std::string url = gAgent.getRegion()->getCapability("LandResources"); + if (!url.empty()) + { + mBtnScriptLimits = getChild<LLButton>("Scripts..."); + mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + } + else + { + mBtnScriptLimits = getChild<LLButton>("Scripts..."); + mBtnScriptLimits->setVisible(false); + } mBtnBuyGroupLand = getChild<LLButton>("Buy For Group..."); mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND); diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 8875e35821b..55ff106be8f 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -59,10 +59,30 @@ /// LLFloaterScriptLimits ///---------------------------------------------------------------------------- -// due to server side bugs the full summary display is not possible -// until they are fixed this define creates a simple version of the -// summary which only shows available & correct information -#define USE_SIMPLE_SUMMARY +// debug switches, won't work in release +#ifndef LL_RELEASE_FOR_DOWNLOAD + +// dump responder replies to llinfos for debugging +//#define DUMP_REPLIES_TO_LLINFOS + +#ifdef DUMP_REPLIES_TO_LLINFOS +#include "llsdserialize.h" +#include "llwindow.h" +#endif + +// use fake LLSD responses to check the viewer side is working correctly +// I'm syncing this with the server side efforts so hopfully we can keep +// the to-ing and fro-ing between the two teams to a minimum +#define USE_FAKE_RESPONSES + +#ifdef USE_FAKE_RESPONSES +const S32 FAKE_NUMBER_OF_URLS = 329; +const S32 FAKE_AVAILABLE_URLS = 731; +const S32 FAKE_AMOUNT_OF_MEMORY = 66741; +const S32 FAKE_AVAILABLE_MEMORY = 895577; +#endif + +#endif const S32 SIZE_OF_ONE_KB = 1024; @@ -89,30 +109,32 @@ BOOL LLFloaterScriptLimits::postBuild() mTab = getChild<LLTabContainer>("scriptlimits_panels"); // contruct the panels - LLPanelScriptLimitsRegionMemory* panel_memory; - panel_memory = new LLPanelScriptLimitsRegionMemory; - mInfoPanels.push_back(panel_memory); + std::string land_url = gAgent.getRegion()->getCapability("LandResources"); + if (!land_url.empty()) + { + LLPanelScriptLimitsRegionMemory* panel_memory; + panel_memory = new LLPanelScriptLimitsRegionMemory; + mInfoPanels.push_back(panel_memory); + LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml"); + mTab->addTabPanel(panel_memory); + } + + std::string attachment_url = gAgent.getRegion()->getCapability("AttachmentResources"); + if (!attachment_url.empty()) + { + LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment; + mInfoPanels.push_back(panel_attachments); + LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml"); + mTab->addTabPanel(panel_attachments); + } - LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml"); - mTab->addTabPanel(panel_memory); - - LLPanelScriptLimitsRegionURLs* panel_urls = new LLPanelScriptLimitsRegionURLs; - mInfoPanels.push_back(panel_urls); - LLUICtrlFactory::getInstance()->buildPanel(panel_urls, "panel_script_limits_region_urls.xml"); - mTab->addTabPanel(panel_urls); - - LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment; - mInfoPanels.push_back(panel_attachments); - LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml"); - mTab->addTabPanel(panel_attachments); - if(selectParcelPanel) { mTab->selectTab(0); } else { - mTab->selectTab(2); + mTab->selectTab(1); } return TRUE; @@ -160,6 +182,20 @@ void LLPanelScriptLimitsInfo::updateChild(LLUICtrl* child_ctr) void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content) { + //we don't need to test with a fake respose here (shouldn't anyway) + +#ifdef DUMP_REPLIES_TO_LLINFOS + + LLSDNotationStreamer notation_streamer(content); + std::ostringstream nice_llsd; + nice_llsd << notation_streamer; + + OSMessageBox(nice_llsd.str(), "main cap response:", 0); + + llinfos << "main cap response:" << content << llendl; + +#endif + // at this point we have an llsd which should contain ether one or two urls to the services we want. // first we look for the details service: if(content.has("ScriptResourceDetails")) @@ -173,24 +209,6 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content) { llinfos << "Failed to get llfloaterscriptlimits instance" << llendl; } - else - { - -// temp - only show info if we get details - there's nothing to show if not until the sim gets fixed -#ifdef USE_SIMPLE_SUMMARY - - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - std::string msg = LLTrans::getString("ScriptLimitsRequestDontOwnParcel"); - panel_memory->childSetValue("loading_text", LLSD(msg)); - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - panel_urls->childSetValue("loading_text", LLSD(msg)); - - // intentional early out as we dont want the resource summary if we are using the "simple summary" - // and the details are missing - return; -#endif - } } // then the summary service: @@ -205,8 +223,61 @@ void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& llinfos << "Error from responder " << reason << llendl; } -void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content) +void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) { +#ifdef USE_FAKE_RESPONSES + + LLSD fake_content; + LLSD summary = LLSD::emptyMap(); + LLSD available = LLSD::emptyArray(); + LLSD available_urls = LLSD::emptyMap(); + LLSD available_memory = LLSD::emptyMap(); + LLSD used = LLSD::emptyArray(); + LLSD used_urls = LLSD::emptyMap(); + LLSD used_memory = LLSD::emptyMap(); + + used_urls["type"] = "urls"; + used_urls["amount"] = FAKE_NUMBER_OF_URLS; + available_urls["type"] = "urls"; + available_urls["amount"] = FAKE_AVAILABLE_URLS; + used_memory["type"] = "memory"; + used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY; + available_memory["type"] = "memory"; + available_memory["amount"] = FAKE_AVAILABLE_MEMORY; + +//summary response:{'summary':{'available':[{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'},{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'}],'used':[{'amount':i329,'type':'urls'},{'amount':i66741,'type':'memory'}]}} + + used.append(used_urls); + used.append(used_memory); + available.append(available_urls); + available.append(available_memory); + + summary["available"] = available; + summary["used"] = used; + + fake_content["summary"] = summary; + + const LLSD* content = &fake_content; + +#else + + const LLSD* content = &content_ref; + +#endif + + +#ifdef DUMP_REPLIES_TO_LLINFOS + + LLSDNotationStreamer notation_streamer(*content); + std::ostringstream nice_llsd; + nice_llsd << notation_streamer; + + OSMessageBox(nice_llsd.str(), "summary response:", 0); + + llinfos << "summary response:" << *content << llendl; + +#endif + LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(!instance) { @@ -216,9 +287,7 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel_memory->setRegionSummary(content); - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - panel_urls->setRegionSummary(content); + panel_memory->setRegionSummary(*content); } } @@ -227,8 +296,82 @@ void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::strin llinfos << "Error from responder " << reason << llendl; } -void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content) +void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref) { +#ifdef USE_FAKE_RESPONSES +/* +Updated detail service, ** denotes field added: + +result (map) ++-parcels (array of maps) + +-id (uuid) + +-local_id (S32)** + +-name (string) + +-owner_id (uuid) (in ERS as owner, but owner_id in code) + +-objects (array of maps) + +-id (uuid) + +-name (string) + +-owner_id (uuid) (in ERS as owner, in code as owner_id) + +-owner_name (sting)** + +-location (map)** + +-x (float) + +-y (float) + +-z (float) + +-resources (map) (this is wrong in the ERS but right in code) + +-type (string) + +-amount (int) +*/ + LLSD fake_content; + LLSD resource = LLSD::emptyMap(); + LLSD location = LLSD::emptyMap(); + LLSD object = LLSD::emptyMap(); + LLSD objects = LLSD::emptyArray(); + LLSD parcel = LLSD::emptyMap(); + LLSD parcels = LLSD::emptyArray(); + + resource["urls"] = FAKE_NUMBER_OF_URLS; + resource["memory"] = FAKE_AMOUNT_OF_MEMORY; + + location["x"] = 128.0f; + location["y"] = 128.0f; + location["z"] = 0.0f; + + object["id"] = LLUUID("d574a375-0c6c-fe3d-5733-da669465afc7"); + object["name"] = "Gabs fake Object!"; + object["owner_id"] = LLUUID("8dbf2d41-69a0-4e5e-9787-0c9d297bc570"); + object["owner_name"] = "Gabs Linden"; + object["location"] = location; + object["resources"] = resource; + + objects.append(object); + + parcel["id"] = LLUUID("da05fb28-0d20-e593-2728-bddb42dd0160"); + parcel["local_id"] = 42; + parcel["name"] = "Gabriel Linden\'s Sub Plot"; + parcel["objects"] = objects; + parcels.append(parcel); + + fake_content["parcels"] = parcels; + const LLSD* content = &fake_content; + +#else + + const LLSD* content = &content_ref; + +#endif + +#ifdef DUMP_REPLIES_TO_LLINFOS + + LLSDNotationStreamer notation_streamer(*content); + std::ostringstream nice_llsd; + nice_llsd << notation_streamer; + + OSMessageBox(nice_llsd.str(), "details response:", 0); + + llinfos << "details response:" << *content << llendl; + +#endif + LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(!instance) @@ -239,10 +382,7 @@ void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel_memory->setRegionDetails(content); - - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - panel_urls->setRegionDetails(content); + panel_memory->setRegionDetails(*content); } } @@ -251,8 +391,61 @@ void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::strin llinfos << "Error from responder " << reason << llendl; } -void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content) +void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) { + +#ifdef USE_FAKE_RESPONSES + + // just add the summary, as that's all I'm testing currently! + LLSD fake_content = LLSD::emptyMap(); + LLSD summary = LLSD::emptyMap(); + LLSD available = LLSD::emptyArray(); + LLSD available_urls = LLSD::emptyMap(); + LLSD available_memory = LLSD::emptyMap(); + LLSD used = LLSD::emptyArray(); + LLSD used_urls = LLSD::emptyMap(); + LLSD used_memory = LLSD::emptyMap(); + + used_urls["type"] = "urls"; + used_urls["amount"] = FAKE_NUMBER_OF_URLS; + available_urls["type"] = "urls"; + available_urls["amount"] = FAKE_AVAILABLE_URLS; + used_memory["type"] = "memory"; + used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY; + available_memory["type"] = "memory"; + available_memory["amount"] = FAKE_AVAILABLE_MEMORY; + + used.append(used_urls); + used.append(used_memory); + available.append(available_urls); + available.append(available_memory); + + summary["available"] = available; + summary["used"] = used; + + fake_content["summary"] = summary; + fake_content["attachments"] = content_ref["attachments"]; + + const LLSD* content = &fake_content; + +#else + + const LLSD* content = &content_ref; + +#endif + +#ifdef DUMP_REPLIES_TO_LLINFOS + + LLSDNotationStreamer notation_streamer(*content); + std::ostringstream nice_llsd; + nice_llsd << notation_streamer; + + OSMessageBox(nice_llsd.str(), "attachment response:", 0); + + llinfos << "attachment response:" << *content << llendl; + +#endif + LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(!instance) @@ -263,7 +456,7 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel"); - panel->setAttachmentDetails(content); + panel->setAttachmentDetails(*content); } } @@ -309,7 +502,7 @@ void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parc { std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); childSetValue("loading_text", LLSD(msg_waiting)); - } + } } void LLPanelScriptLimitsRegionMemory::setParcelID(const LLUUID& parcel_id) @@ -351,33 +544,8 @@ void LLPanelScriptLimitsRegionMemory::onNameCache( if(item) { - item->getColumn(2)->setValue(LLSD(name)); - element["columns"][2]["value"] = name; - } - } - } - - // fill in the url's tab if needed, all urls must have memory so we can do it all here - LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); - if(instance) - { - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - - LLScrollListCtrl *list = panel->getChild<LLScrollListCtrl>("scripts_list"); - std::vector<LLSD>::iterator id_itor; - for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor) - { - LLSD element = *id_itor; - if(element["owner_id"].asUUID() == id) - { - LLScrollListItem* item = list->getItem(element["id"].asUUID()); - - if(item) - { - item->getColumn(2)->setValue(LLSD(name)); - element["columns"][2]["value"] = name; - } + item->getColumn(3)->setValue(LLSD(name)); + element["columns"][3]["value"] = name; } } } @@ -394,36 +562,72 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels); childSetValue("parcels_listed", LLSD(msg_parcels)); - S32 total_objects = 0; - S32 total_size = 0; - std::vector<LLUUID> names_requested; + // This makes the assumption that all objects will have the same set + // of attributes, ie they will all have, or none will have locations + // This is a pretty safe assumption as it's reliant on server version. + bool has_locations = false; + bool has_local_ids = false; + for(S32 i = 0; i < number_parcels; i++) { std::string parcel_name = content["parcels"][i]["name"].asString(); LLUUID parcel_id = content["parcels"][i]["id"].asUUID(); S32 number_objects = content["parcels"][i]["objects"].size(); + + S32 local_id = 0; + if(content["parcels"][i].has("local_id")) + { + // if any locations are found flag that we can use them and turn on the highlight button + has_local_ids = true; + local_id = content["parcels"][i]["local_id"].asInteger(); + } + for(S32 j = 0; j < number_objects; j++) { S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB; - total_size += size; + + S32 urls = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger(); std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString(); LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID(); LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID(); - + + F32 location_x = 0.0f; + F32 location_y = 0.0f; + F32 location_z = 0.0f; + + if(content["parcels"][i]["objects"][j].has("location")) + { + // if any locations are found flag that we can use them and turn on the highlight button + LLVector3 vec = ll_vector3_from_sd(content["parcels"][i]["objects"][j]["location"]); + has_locations = true; + location_x = vec.mV[0]; + location_y = vec.mV[1]; + location_z = vec.mV[2]; + } + std::string owner_buf; - - BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf); - if(!name_is_cached) + + // in the future the server will give us owner names, so see if we're there yet: + if(content["parcels"][i]["objects"][j].has("owner_name")) + { + owner_buf = content["parcels"][i]["objects"][j]["owner_name"].asString(); + } + // ...and if not use the slightly more painful method of disovery: + else { - if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end()) + BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf); + if(!name_is_cached) { - names_requested.push_back(owner_id); - gCacheName->get(owner_id, TRUE, - boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache, - this, _1, _2, _3)); + if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end()) + { + names_requested.push_back(owner_id); + gCacheName->get(owner_id, TRUE, + boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache, + this, _1, _2, _3)); + } } } @@ -431,93 +635,117 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) element["id"] = task_id; element["owner_id"] = owner_id; + element["local_id"] = local_id; element["columns"][0]["column"] = "size"; element["columns"][0]["value"] = llformat("%d", size); element["columns"][0]["font"] = "SANSSERIF"; - element["columns"][1]["column"] = "name"; - element["columns"][1]["value"] = name_buf; + element["columns"][1]["column"] = "urls"; + element["columns"][1]["value"] = llformat("%d", urls); element["columns"][1]["font"] = "SANSSERIF"; - element["columns"][2]["column"] = "owner"; - element["columns"][2]["value"] = owner_buf; + element["columns"][2]["column"] = "name"; + element["columns"][2]["value"] = name_buf; element["columns"][2]["font"] = "SANSSERIF"; - element["columns"][3]["column"] = "location"; - element["columns"][3]["value"] = parcel_name; + element["columns"][3]["column"] = "owner"; + element["columns"][3]["value"] = owner_buf; element["columns"][3]["font"] = "SANSSERIF"; + element["columns"][4]["column"] = "parcel"; + element["columns"][4]["value"] = parcel_name; + element["columns"][4]["font"] = "SANSSERIF"; + element["columns"][5]["column"] = "location"; + if(has_locations) + { + element["columns"][5]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); + } + else + { + element["columns"][5]["value"] = ""; + } + element["columns"][5]["font"] = "SANSSERIF"; list->addElement(element, ADD_SORTED); mObjectListItems.push_back(element); - total_objects++; } } - mParcelMemoryUsed =total_size; - mGotParcelMemoryUsed = TRUE; - populateParcelMemoryText(); -} - -void LLPanelScriptLimitsRegionMemory::populateParcelMemoryText() -{ - if(mGotParcelMemoryUsed && mGotParcelMemoryMax) + if (has_locations) { -#ifdef USE_SIMPLE_SUMMARY - LLStringUtil::format_map_t args_parcel_memory; - args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed); - std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsedSimple", args_parcel_memory); - childSetValue("memory_used", LLSD(msg_parcel_memory)); -#else - S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed; - - LLStringUtil::format_map_t args_parcel_memory; - args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed); - args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax); - args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available); - std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory); - childSetValue("memory_used", LLSD(msg_parcel_memory)); -#endif + LLButton* btn = getChild<LLButton>("highlight_btn"); + btn->setVisible(true); + } - childSetValue("loading_text", LLSD(std::string(""))); + if (has_local_ids) + { + LLButton* btn = getChild<LLButton>("return_btn"); + btn->setVisible(true); } + + // save the structure to make object return easier + mContent = content; } void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content) { - if(content["summary"]["available"][0]["type"].asString() == std::string("memory")) + if(content["summary"]["used"][0]["type"].asString() == std::string("memory")) { - mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger(); - mGotParcelMemoryMax = TRUE; + mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB; + mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB; + mGotParcelMemoryUsed = TRUE; } - else if(content["summary"]["available"][1]["type"].asString() == std::string("memory")) + else if(content["summary"]["used"][1]["type"].asString() == std::string("memory")) { - mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger(); - mGotParcelMemoryMax = TRUE; + mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB; + mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB; + mGotParcelMemoryUsed = TRUE; } else { llinfos << "summary doesn't contain memory info" << llendl; return; } -/* - currently this is broken on the server, so we get this value from the details section - and update via populateParcelMemoryText() when both sets of information have been returned - - when the sim is fixed this should be used instead: - if(content["summary"]["used"][0]["type"].asString() == std::string("memory")) + + if(content["summary"]["used"][0]["type"].asString() == std::string("urls")) { - mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger(); - mGotParcelMemoryUsed = TRUE; + mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger(); + mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger(); + mGotParcelURLsUsed = TRUE; } - else if(content["summary"]["used"][1]["type"].asString() == std::string("memory")) + else if(content["summary"]["used"][1]["type"].asString() == std::string("urls")) { - mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger(); - mGotParcelMemoryUsed = TRUE; + mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger(); + mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger(); + mGotParcelURLsUsed = TRUE; } else { - //ERROR!!! + llinfos << "summary doesn't contain urls info" << llendl; return; - }*/ + } + + if((mParcelMemoryUsed >= 0) && (mParcelMemoryMax >= 0)) + { + S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed; + + LLStringUtil::format_map_t args_parcel_memory; + args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed); + args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax); + args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available); + std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory); + childSetValue("memory_used", LLSD(msg_parcel_memory)); + } + + if((mParcelURLsUsed >= 0) && (mParcelURLsMax >= 0)) + { + S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed; - populateParcelMemoryText(); + LLStringUtil::format_map_t args_parcel_urls; + args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed); + args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax); + args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available); + std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls); + childSetValue("urls_used", LLSD(msg_parcel_urls)); + } + + childSetValue("loading_text", LLSD(std::string(""))); } BOOL LLPanelScriptLimitsRegionMemory::postBuild() @@ -548,18 +776,11 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain() LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land"); if(!instance) { - //this isnt really an error... -// llinfos << "Failed to get about land instance" << llendl; -// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); childSetValue("loading_text", LLSD(std::string(""))); //might have to do parent post build here //if not logic below could use early outs return FALSE; } - - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - LLParcel* parcel = instance->getCurrentSelectedParcel(); LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); @@ -575,7 +796,6 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain() { std::string msg_wrong_region = LLTrans::getString("ScriptLimitsRequestWrongRegion"); childSetValue("loading_text", LLSD(msg_wrong_region)); - panel_urls->childSetValue("loading_text", LLSD(msg_wrong_region)); return FALSE; } @@ -605,14 +825,12 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain() std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); childSetValue("loading_text", LLSD(msg_waiting)); - panel_urls->childSetValue("loading_text", LLSD(msg_waiting)); } } else { - std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); + std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestNoParcelSelected"); childSetValue("loading_text", LLSD(msg_waiting)); - panel_urls->childSetValue("loading_text", LLSD(msg_waiting)); } return LLPanelScriptLimitsInfo::postBuild(); @@ -629,10 +847,13 @@ void LLPanelScriptLimitsRegionMemory::clearList() mGotParcelMemoryUsed = FALSE; mGotParcelMemoryMax = FALSE; + mGotParcelURLsUsed = FALSE; + mGotParcelURLsMax = FALSE; LLStringUtil::format_map_t args_parcel_memory; std::string msg_empty_string(""); childSetValue("memory_used", LLSD(msg_empty_string)); + childSetValue("urls_used", LLSD(msg_empty_string)); childSetValue("parcels_listed", LLSD(msg_empty_string)); mObjectListItems.clear(); @@ -641,6 +862,7 @@ void LLPanelScriptLimitsRegionMemory::clearList() // static void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata) { + //**don't use userdata without checking for null-ness** llinfos << "LLPanelRegionGeneralInfo::onClickRefresh" << llendl; LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); @@ -649,9 +871,6 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata) LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); panel_memory->clearList(); - - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - panel_urls->clearList(); panel_memory->StartRequestChain(); return; @@ -665,33 +884,30 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata) void LLPanelScriptLimitsRegionMemory::showBeacon() { -/* LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list"); + LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list"); if (!list) return; LLScrollListItem* first_selected = list->getFirstSelected(); if (!first_selected) return; - std::string name = first_selected->getColumn(1)->getValue().asString(); - std::string pos_string = first_selected->getColumn(3)->getValue().asString(); + std::string name = first_selected->getColumn(2)->getValue().asString(); + std::string pos_string = first_selected->getColumn(5)->getValue().asString(); - llinfos << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" <<llendl; - llinfos << "name = " << name << " pos = " << pos_string << llendl; - F32 x, y, z; S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z); if (matched != 3) return; LLVector3 pos_agent(x, y, z); LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent); - llinfos << "name = " << name << " pos = " << pos_string << llendl; + std::string tooltip(""); - LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);*/ + LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM); } // static void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata) { -/* llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl; + llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl; LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(instance) { @@ -703,40 +919,39 @@ void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata) else { llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl; -// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); -// panel->childSetValue("loading_text", LLSD(msg_waiting)); return; - }*/ + } } -void LLPanelScriptLimitsRegionMemory::returnObjects() +void LLPanelScriptLimitsRegionMemory::returnObjectsFromParcel(S32 local_id) { -/* llinfos << "started" << llendl; LLMessageSystem *msg = gMessageSystem; LLViewerRegion* region = gAgent.getRegion(); if (!region) return; - llinfos << "got region" << llendl; LLCtrlListInterface *list = childGetListInterface("scripts_list"); if (!list || list->getItemCount() == 0) return; - llinfos << "got list" << llendl; - std::vector<LLUUID>::iterator id_itor; + std::vector<LLSD>::iterator id_itor; bool start_message = true; - for (id_itor = mObjectListIDs.begin(); id_itor != mObjectListIDs.end(); ++id_itor) + for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor) { - LLUUID task_id = *id_itor; - llinfos << task_id << llendl; - if (!list->isSelected(task_id)) + LLSD element = *id_itor; + if (!list->isSelected(element["id"].asUUID())) { - llinfos << "not selected" << llendl; // Selected only continue; } - llinfos << "selected" << llendl; + + if(element["local_id"].asInteger() != local_id) + { + // Not the parcel we are looking for + continue; + } + if (start_message) { msg->newMessageFast(_PREHASH_ParcelReturnObjects); @@ -744,285 +959,68 @@ void LLPanelScriptLimitsRegionMemory::returnObjects() msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); msg->nextBlockFast(_PREHASH_ParcelData); - msg->addS32Fast(_PREHASH_LocalID, -1); // Whole region - msg->addS32Fast(_PREHASH_ReturnType, RT_LIST); + msg->addS32Fast(_PREHASH_LocalID, element["local_id"].asInteger()); + msg->addU32Fast(_PREHASH_ReturnType, RT_LIST); start_message = false; - llinfos << "start message" << llendl; } msg->nextBlockFast(_PREHASH_TaskIDs); - msg->addUUIDFast(_PREHASH_TaskID, task_id); - llinfos << "added id" << llendl; + msg->addUUIDFast(_PREHASH_TaskID, element["id"].asUUID()); if (msg->isSendFullFast(_PREHASH_TaskIDs)) { msg->sendReliable(region->getHost()); start_message = true; - llinfos << "sent 1" << llendl; } } if (!start_message) { msg->sendReliable(region->getHost()); - llinfos << "sent 2" << llendl; - }*/ + } } -// static -void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata) +void LLPanelScriptLimitsRegionMemory::returnObjects() { -/* llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl; - LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); - if(instance) + if(!mContent.has("parcels")) { - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel->returnObjects(); return; } - else - { - llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl; -// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); -// panel->childSetValue("loading_text", LLSD(msg_waiting)); - return; - }*/ -} - -///---------------------------------------------------------------------------- -// URLs Panel -///---------------------------------------------------------------------------- - -void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content) -{ - LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); - - S32 number_parcels = content["parcels"].size(); - - LLStringUtil::format_map_t args_parcels; - args_parcels["[PARCELS]"] = llformat ("%d", number_parcels); - std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels); - childSetValue("parcels_listed", LLSD(msg_parcels)); - - S32 total_objects = 0; - S32 total_size = 0; + S32 number_parcels = mContent["parcels"].size(); + + // a message per parcel containing all objects to be returned from that parcel for(S32 i = 0; i < number_parcels; i++) { - std::string parcel_name = content["parcels"][i]["name"].asString(); - llinfos << parcel_name << llendl; - - S32 number_objects = content["parcels"][i]["objects"].size(); - for(S32 j = 0; j < number_objects; j++) + S32 local_id = 0; + if(mContent["parcels"][i].has("local_id")) { - if(content["parcels"][i]["objects"][j]["resources"].has("urls")) - { - S32 size = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger(); - total_size += size; - - std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString(); - LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID(); - LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID(); - - std::string owner_buf; - gCacheName->getFullName(owner_id, owner_buf); //dont care if this fails as the memory tab will request and fill the field - - LLSD element; - - element["id"] = task_id; - element["columns"][0]["column"] = "urls"; - element["columns"][0]["value"] = llformat("%d", size); - element["columns"][0]["font"] = "SANSSERIF"; - element["columns"][1]["column"] = "name"; - element["columns"][1]["value"] = name_buf; - element["columns"][1]["font"] = "SANSSERIF"; - element["columns"][2]["column"] = "owner"; - element["columns"][2]["value"] = owner_buf; - element["columns"][2]["font"] = "SANSSERIF"; - element["columns"][3]["column"] = "location"; - element["columns"][3]["value"] = parcel_name; - element["columns"][3]["font"] = "SANSSERIF"; - - list->addElement(element); - mObjectListItems.push_back(element); - total_objects++; - } + local_id = mContent["parcels"][i]["local_id"].asInteger(); + returnObjectsFromParcel(local_id); } } - - mParcelURLsUsed =total_size; - mGotParcelURLsUsed = TRUE; - populateParcelURLsText(); -} - -void LLPanelScriptLimitsRegionURLs::populateParcelURLsText() -{ - if(mGotParcelURLsUsed && mGotParcelURLsMax) - { - -#ifdef USE_SIMPLE_SUMMARY - LLStringUtil::format_map_t args_parcel_urls; - args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed); - std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsedSimple", args_parcel_urls); - childSetValue("urls_used", LLSD(msg_parcel_urls)); -#else - S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed; - - LLStringUtil::format_map_t args_parcel_urls; - args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed); - args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax); - args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available); - std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls); - childSetValue("urls_used", LLSD(msg_parcel_urls)); -#endif - - childSetValue("loading_text", LLSD(std::string(""))); - - } -} - -void LLPanelScriptLimitsRegionURLs::setRegionSummary(LLSD content) -{ - if(content["summary"]["available"][0]["type"].asString() == std::string("urls")) - { - mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger(); - mGotParcelURLsMax = TRUE; - } - else if(content["summary"]["available"][1]["type"].asString() == std::string("urls")) - { - mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger(); - mGotParcelURLsMax = TRUE; - } - else - { - llinfos << "summary contains no url info" << llendl; - return; - } -/* - currently this is broken on the server, so we get this value from the details section - and update via populateParcelMemoryText() when both sets of information have been returned - - when the sim is fixed this should be used instead: - if(content["summary"]["used"][0]["type"].asString() == std::string("urls")) - { - mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger(); - mGotParcelURLsUsed = TRUE; - } - else if(content["summary"]["used"][1]["type"].asString() == std::string("urls")) - { - mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger(); - mGotParcelURLsUsed = TRUE; - } - else - { - //ERROR!!! - return; - }*/ - - populateParcelURLsText(); -} - -BOOL LLPanelScriptLimitsRegionURLs::postBuild() -{ - childSetAction("refresh_list_btn", onClickRefresh, this); - childSetAction("highlight_btn", onClickHighlight, this); - childSetAction("return_btn", onClickReturn, this); - - std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); - childSetValue("loading_text", LLSD(msg_waiting)); - return FALSE; -} - -void LLPanelScriptLimitsRegionURLs::clearList() -{ - LLCtrlListInterface *list = childGetListInterface("scripts_list"); - - if (list) - { - list->operateOnAll(LLCtrlListInterface::OP_DELETE); - } - - mGotParcelURLsUsed = FALSE; - mGotParcelURLsMax = FALSE; - - LLStringUtil::format_map_t args_parcel_urls; - std::string msg_empty_string(""); - childSetValue("urls_used", LLSD(msg_empty_string)); - childSetValue("parcels_listed", LLSD(msg_empty_string)); - - mObjectListItems.clear(); -} - -// static -void LLPanelScriptLimitsRegionURLs::onClickRefresh(void* userdata) -{ - llinfos << "Refresh clicked" << llendl; - - LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); - if(instance) - { - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - // use the memory panel to re-request all the info - panel_memory->clearList(); - LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel"); - // but the urls panel to clear itself - panel_urls->clearList(); - - panel_memory->StartRequestChain(); - return; - } - else - { - llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl; - return; - } + onClickRefresh(NULL); } -// static -void LLPanelScriptLimitsRegionURLs::onClickHighlight(void* userdata) -{ -/* llinfos << "Highlight clicked" << llendl; - LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); - if(instance) - { - LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - // use the beacon function from the memory panel - panel->showBeacon(); - return; - } - else - { - llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl; -// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); -// panel->childSetValue("loading_text", LLSD(msg_waiting)); - return; - }*/ -} // static -void LLPanelScriptLimitsRegionURLs::onClickReturn(void* userdata) +void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata) { -/* llinfos << "Return clicked" << llendl; + llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl; LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(instance) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - // use the return function from the memory panel panel->returnObjects(); return; } else { llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl; -// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError"); -// panel->childSetValue("loading_text", LLSD(msg_waiting)); return; - }*/ + } } ///---------------------------------------------------------------------------- @@ -1096,6 +1094,8 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) list->addElement(element); } } + + setAttachmentSummary(content); childSetValue("loading_text", LLSD(std::string(""))); } @@ -1122,6 +1122,69 @@ void LLPanelScriptLimitsAttachment::clearList() childSetValue("loading_text", LLSD(msg_waiting)); } +void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content) +{ + if(content["summary"]["used"][0]["type"].asString() == std::string("memory")) + { + mAttachmentMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB; + mAttachmentMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB; + mGotAttachmentMemoryUsed = TRUE; + } + else if(content["summary"]["used"][1]["type"].asString() == std::string("memory")) + { + mAttachmentMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB; + mAttachmentMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB; + mGotAttachmentMemoryUsed = TRUE; + } + else + { + llinfos << "attachment details don't contain memory summary info" << llendl; + return; + } + + if(content["summary"]["used"][0]["type"].asString() == std::string("urls")) + { + mAttachmentURLsUsed = content["summary"]["used"][0]["amount"].asInteger(); + mAttachmentURLsMax = content["summary"]["available"][0]["amount"].asInteger(); + mGotAttachmentURLsUsed = TRUE; + } + else if(content["summary"]["used"][1]["type"].asString() == std::string("urls")) + { + mAttachmentURLsUsed = content["summary"]["used"][1]["amount"].asInteger(); + mAttachmentURLsMax = content["summary"]["available"][1]["amount"].asInteger(); + mGotAttachmentURLsUsed = TRUE; + } + else + { + llinfos << "attachment details don't contain urls summary info" << llendl; + return; + } + + if((mAttachmentMemoryUsed >= 0) && (mAttachmentMemoryMax >= 0)) + { + S32 attachment_memory_available = mAttachmentMemoryMax - mAttachmentMemoryUsed; + + LLStringUtil::format_map_t args_attachment_memory; + args_attachment_memory["[COUNT]"] = llformat ("%d", mAttachmentMemoryUsed); + args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax); + args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available); + std::string msg_attachment_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_attachment_memory); + childSetValue("memory_used", LLSD(msg_attachment_memory)); + } + + if((mAttachmentURLsUsed >= 0) && (mAttachmentURLsMax >= 0)) + { + S32 attachment_urls_available = mAttachmentURLsMax - mAttachmentURLsUsed; + + LLStringUtil::format_map_t args_attachment_urls; + args_attachment_urls["[COUNT]"] = llformat ("%d", mAttachmentURLsUsed); + args_attachment_urls["[MAX]"] = llformat ("%d", mAttachmentURLsMax); + args_attachment_urls["[AVAILABLE]"] = llformat ("%d", attachment_urls_available); + std::string msg_attachment_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_attachment_urls); + childSetValue("urls_used", LLSD(msg_attachment_urls)); + } +} + // static void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata) { diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index e675d145156..4c1ecc1019e 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -166,10 +166,10 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote BOOL StartRequestChain(); - void populateParcelMemoryText(); BOOL getLandScriptResources(); void clearList(); void showBeacon(); + void returnObjectsFromParcel(S32 local_id); void returnObjects(); private: @@ -178,69 +178,30 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote const std::string& first_name, const std::string& last_name); + LLSD mContent; LLUUID mParcelId; BOOL mGotParcelMemoryUsed; + BOOL mGotParcelMemoryUsedDetails; BOOL mGotParcelMemoryMax; S32 mParcelMemoryMax; S32 mParcelMemoryUsed; + S32 mParcelMemoryUsedDetails; - std::vector<LLSD> mObjectListItems; - -protected: - -// LLRemoteParcelInfoObserver interface: -/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); -/*virtual*/ void setParcelID(const LLUUID& parcel_id); -/*virtual*/ void setErrorStatus(U32 status, const std::string& reason); - - static void onClickRefresh(void* userdata); - static void onClickHighlight(void* userdata); - static void onClickReturn(void* userdata); -}; - -///////////////////////////////////////////////////////////////////////////// -// URLs panel -///////////////////////////////////////////////////////////////////////////// - -class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo -{ - -public: - LLPanelScriptLimitsRegionURLs() - : LLPanelScriptLimitsInfo(), - - mParcelId(LLUUID()), - mGotParcelURLsUsed(FALSE), - mGotParcelURLsMax(FALSE), - mParcelURLsMax(0), - mParcelURLsUsed(0) - { - }; - - ~LLPanelScriptLimitsRegionURLs() - { - }; - - // LLPanel - virtual BOOL postBuild(); - - void setRegionDetails(LLSD content); - void setRegionSummary(LLSD content); - - void populateParcelURLsText(); - void clearList(); - -private: - - LLUUID mParcelId; BOOL mGotParcelURLsUsed; + BOOL mGotParcelURLsUsedDetails; BOOL mGotParcelURLsMax; S32 mParcelURLsMax; S32 mParcelURLsUsed; + S32 mParcelURLsUsedDetails; std::vector<LLSD> mObjectListItems; protected: + +// LLRemoteParcelInfoObserver interface: +/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); +/*virtual*/ void setParcelID(const LLUUID& parcel_id); +/*virtual*/ void setErrorStatus(U32 status, const std::string& reason); static void onClickRefresh(void* userdata); static void onClickHighlight(void* userdata); @@ -266,11 +227,26 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo void setAttachmentDetails(LLSD content); + void setAttachmentSummary(LLSD content); BOOL requestAttachmentDetails(); void clearList(); private: + BOOL mGotAttachmentMemoryUsed; + BOOL mGotAttachmentMemoryUsedDetails; + BOOL mGotAttachmentMemoryMax; + S32 mAttachmentMemoryMax; + S32 mAttachmentMemoryUsed; + S32 mAttachmentMemoryUsedDetails; + + BOOL mGotAttachmentURLsUsed; + BOOL mGotAttachmentURLsUsedDetails; + BOOL mGotAttachmentURLsMax; + S32 mAttachmentURLsMax; + S32 mAttachmentURLsUsed; + S32 mAttachmentURLsUsedDetails; + protected: static void onClickRefresh(void* userdata); diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index fccf71f3cba..7bcbe334fff 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -1904,7 +1904,7 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url, const LLUUID& item_id, BOOL is_running) { - llinfos << "Update Task Inventory via capability" << llendl; + llinfos << "Update Task Inventory via capability " << url << llendl; LLSD body; body["task_id"] = task_id; body["item_id"] = item_id; diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml index 98c44ad1b31..6b36cdfcc5e 100644 --- a/indra/newview/skins/default/xui/en/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater legacy_header_height="18" + can_resize="true" height="570" help_topic="scriptlimits" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml index d98f690339c..629d8567d10 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml @@ -9,7 +9,44 @@ name="script_limits_my_avatar_panel" top="0" width="480"> - <text + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="script_memory" + top_pad="24" + text_color="White" + width="480"> + Avatar Script Usage + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="30" + name="memory_used" + top_delta="18" + width="480"> + + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="30" + name="urls_used" + top_delta="18" + width="480"> + + </text> + <text type="string" length="1" follows="left|top" @@ -17,7 +54,7 @@ layout="topleft" left="10" name="loading_text" - top="10" + top="80" text_color="EmphasisColor" width="480"> Loading... @@ -25,12 +62,12 @@ <scroll_list draw_heading="true" follows="all" - height="500" + height="415" layout="topleft" left_delta="0" multi_select="true" name="scripts_list" - top_delta="17" + top="100" width="460"> <scroll_list.columns label="Size (kb)" diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml index 0fa3c1cf2e0..9dff00fa0b9 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml @@ -33,7 +33,7 @@ top_delta="18" visible="true" width="480"> - Parcels Owned: + </text> <text type="string" @@ -45,7 +45,19 @@ name="memory_used" top_delta="18" width="480"> - Memory used: + </text> + + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="30" + name="urls_used" + top_delta="18" + width="480"> + </text> <text type="string" @@ -55,7 +67,7 @@ layout="topleft" left="10" name="loading_text" - top_delta="32" + top_delta="12" text_color="EmphasisColor" width="480"> Loading... @@ -73,7 +85,11 @@ <scroll_list.columns label="Size (kb)" name="size" - width="70" /> + width="72" /> + <scroll_list.columns + label="URLs" + name="urls" + width="48" /> <scroll_list.columns label="Object Name" name="name" @@ -83,11 +99,13 @@ name="owner" width="100" /> <scroll_list.columns - label="Parcel / Location" - name="location" + label="Parcel" + name="parcel" width="130" /> -<!-- <scroll_list.commit_callback - function="TopObjects.CommitObjectsList" />--> + <scroll_list.columns + label="Location" + name="location" + width="80" /> </scroll_list> <button follows="bottom|left" @@ -102,8 +120,8 @@ <button follows="bottom|right" height="19" - visible="false" label="Highlight" + visible="false" layout="bottomright" left="370" name="highlight_btn" @@ -112,8 +130,8 @@ <button follows="bottom|right" height="19" - visible="false" label="Return" + visible="false" layout="bottomright" name="return_btn" top="34" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b378944e48a..b4a12cfb322 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2051,6 +2051,7 @@ this texture in your inventory <string name="ScriptLimitsURLsUsed">URLs used: [COUNT] out of [MAX]; [AVAILABLE] available</string> <string name="ScriptLimitsURLsUsedSimple">URLs used: [COUNT]</string> <string name="ScriptLimitsRequestError">Error requesting information</string> + <string name="ScriptLimitsRequestNoParcelSelected">No Parcel Selected</string> <string name="ScriptLimitsRequestWrongRegion">Error: script information is only available in your current region</string> <string name="ScriptLimitsRequestWaiting">Retrieving information...</string> <string name="ScriptLimitsRequestDontOwnParcel">You do not have permission to examine this parcel</string> -- GitLab From 7bcba326b32e1aca678edfb4495d1e2d4d44cb71 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Mon, 1 Feb 2010 18:25:58 +0200 Subject: [PATCH 399/521] Fixed major bug EXT-4798 (Voice notifications steal keyboard focus by default) --HG-- branch : product-engine --- indra/llui/lldockablefloater.cpp | 2 +- indra/llui/llfloater.h | 1 + indra/newview/llimview.cpp | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index 74438b184a8..57baf28dab7 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -146,7 +146,7 @@ void LLDockableFloater::setVisible(BOOL visible) if (visible) { - LLFloater::setFrontmost(TRUE); + LLFloater::setFrontmost(getAutoFocus()); } LLFloater::setVisible(visible); } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 8c9dacbd207..2166d8db8ad 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -301,6 +301,7 @@ friend class LLMultiFloater; const LLRect& getExpandedRect() const { return mExpandedRect; } void setAutoFocus(BOOL focus) { mAutoFocus = focus; } // whether to automatically take focus when opened + BOOL getAutoFocus() const { return mAutoFocus; } LLDragHandle* getDragHandle() const { return mDragHandle; } void destroy() { die(); } // Don't call this directly. You probably want to call closeFloater() diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index b7d4db853eb..db6b2041f8e 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1467,6 +1467,7 @@ LLCallDialog::LLCallDialog(const LLSD& payload) mPayload(payload), mLifetime(DEFAULT_LIFETIME) { + setAutoFocus(FALSE); } void LLCallDialog::getAllowedRect(LLRect& rect) @@ -1794,7 +1795,7 @@ BOOL LLIncomingCallDialog::postBuild() childSetAction("Accept", onAccept, this); childSetAction("Reject", onReject, this); childSetAction("Start IM", onStartIM, this); - childSetFocus("Accept"); + setDefaultBtn("Accept"); std::string notify_box_type = mPayload["notify_box_type"].asString(); if(notify_box_type != "VoiceInviteGroup" && notify_box_type != "VoiceInviteAdHoc") @@ -2424,7 +2425,7 @@ void LLIMMgr::inviteToSession( } else { - LLFloaterReg::showInstance("incoming_call", payload, TRUE); + LLFloaterReg::showInstance("incoming_call", payload, FALSE); } mPendingInvitations[session_id.asString()] = LLSD(); } @@ -2437,7 +2438,7 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri std::string notify_box_type = payload["notify_box_type"].asString(); - LLFloaterReg::showInstance("incoming_call", payload, TRUE); + LLFloaterReg::showInstance("incoming_call", payload, FALSE); } //*TODO disconnects all sessions -- GitLab From 52d80701bbf38921e68f0df8d989cc9f31867a41 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 1 Feb 2010 18:11:02 +0000 Subject: [PATCH 400/521] EXT-4813: Added a "Loading..." indicator to the Help Browser. This appears at the bottom of the Help Browser floater while a page is loading. I also cleaned up the XUI file a little and removed some unused strings. --- indra/newview/llfloaterhelpbrowser.cpp | 19 ++++++++---- .../default/xui/en/floater_help_browser.xml | 29 ++++++++++++------- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp index 2e0ae3265ef..f3c6b286ab3 100644 --- a/indra/newview/llfloaterhelpbrowser.cpp +++ b/indra/newview/llfloaterhelpbrowser.cpp @@ -85,13 +85,22 @@ void LLFloaterHelpBrowser::onClose(bool app_quitting) void LLFloaterHelpBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) { - if(event == MEDIA_EVENT_LOCATION_CHANGED) + switch (event) { + case MEDIA_EVENT_LOCATION_CHANGED: setCurrentURL(self->getLocation()); - } - else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE) - { - // nothing yet + break; + + case MEDIA_EVENT_NAVIGATE_BEGIN: + childSetText("status_text", getString("loading_text")); + break; + + case MEDIA_EVENT_NAVIGATE_COMPLETE: + childSetText("status_text", getString("done_text")); + break; + + default: + break; } } diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index e83bc1555cb..be32e917e5a 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -4,8 +4,8 @@ can_resize="true" height="480" layout="topleft" - min_height="140" - min_width="467" + min_height="150" + min_width="500" name="floater_help_browser" help_topic="floater_help_browser" save_rect="true" @@ -13,37 +13,44 @@ title="HELP BROWSER" width="620"> <floater.string - name="home_page_url"> - http://www.secondlife.com + name="loading_text"> + Loading... </floater.string> <floater.string - name="support_page_url"> - http://support.secondlife.com + name="done_text"> </floater.string> <layout_stack bottom="480" follows="left|right|top|bottom" layout="topleft" - left="10" + left="5" name="stack1" top="20" - width="600"> + width="610"> <layout_panel - height="1" layout="topleft" left_delta="0" - name="external_controls" top_delta="0" + name="external_controls" user_resize="false" width="590"> <web_browser - bottom="-4" + bottom="-11" follows="left|right|top|bottom" layout="topleft" left="0" name="browser" top="0" + height="500" width="590" /> + <text + follows="bottom|left" + height="16" + layout="topleft" + left_delta="2" + name="status_text" + top_pad="5" + width="150" /> </layout_panel> </layout_stack> </floater> -- GitLab From f0ee8af8ae832fc01aa5c79898efc72b822e40af Mon Sep 17 00:00:00 2001 From: Loren Shih <seraph@lindenlab.com> Date: Mon, 1 Feb 2010 13:46:22 -0500 Subject: [PATCH 401/521] EXT-4816 : Fix coverty whine on break statement fallthrough Can't fix the whine, but added a comment that the fallthrough is deliberate. --- indra/newview/llinventorybridge.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e04d3ec5a01..e8a4899a0b5 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -4634,6 +4634,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { case LLAssetType::AT_CLOTHING: items.push_back(std::string("Take Off")); + // Fallthrough since clothing and bodypart share wear options case LLAssetType::AT_BODYPART: if (get_is_item_worn(item->getUUID())) { -- GitLab From 6e7ead6f4f4b87e242c9fc888324092c40ea5043 Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" <nyx@lindenlab.com> Date: Mon, 1 Feb 2010 15:47:15 -0500 Subject: [PATCH 402/521] EXT-4075 BTEST-129 switching wearables makes you temporarily naked When switching from one pair of pants to another we were temporarily using an in-between state without pants as a valid rendering state. Removed a call to removeWearable to keep your pants on until the update from COF swaps the old pair of pants for the new. Lower body is redrawn only once lowest discard level of new pants arrives. Code reviewed by Bigpapi --- indra/newview/llappearancemgr.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 8f4ce4498ef..5088c651222 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1081,7 +1081,6 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up // MULTI-WEARABLES: revisit if more than one per type is allowed. else if (areMatchingWearables(vitem,inv_item)) { - gAgentWearables.removeWearable(inv_item->getWearableType(),true,0); if (inv_item->getIsLinkType()) { gInventory.purgeObject(inv_item->getUUID()); -- GitLab From ec5ad98abe0dde6f314bcd8c67a193a672c53aca Mon Sep 17 00:00:00 2001 From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com> Date: Mon, 1 Feb 2010 15:47:16 -0500 Subject: [PATCH 403/521] EXT-4848 - Crash when trying to view chicklet(?). Bug in word wrap logic. Added a clamp to >= 0 for num pixels so we don't hit the assert. -Reviewed by Nyx --- indra/llui/lltextbase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 978bd317e20..dfe3e9b61ed 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2512,7 +2512,7 @@ S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin LLUIImagePtr image = mStyle->getImage(); if( image.notNull()) { - num_pixels -= image->getWidth(); + num_pixels = llmax(0, num_pixels - image->getWidth()); } // search for newline and if found, truncate there -- GitLab From acc33dfe75f3667f6478bac00c2a634e2605f851 Mon Sep 17 00:00:00 2001 From: Kent Quirk <q@lindenlab.com> Date: Mon, 1 Feb 2010 16:40:29 -0500 Subject: [PATCH 404/521] DEV-45525 - don't change the current directory before running the text editor --- indra/newview/llfloateruipreview.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 645f8ef054e..c6e12476bd6 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -1091,7 +1091,9 @@ void LLFloaterUIPreview::onClickEditFloater() char *args2 = new char[args.size() + 1]; // Windows requires that the second parameter to CreateProcessA be a writable (non-const) string... strcpy(args2, args.c_str()); - if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo)) + // we don't want the current directory to be the executable directory, since the file path is now relative. By using + // NULL for the current directory instead of exe_dir.c_str(), the path to the target file will work. + if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)) { // DWORD dwErr = GetLastError(); std::string warning = "Creating editor process failed!"; -- GitLab From ab2581f6e216f8164b91ba6f9c07eda9d4a50feb Mon Sep 17 00:00:00 2001 From: Lis Linden <lis@lindenlab.com> Date: Mon, 1 Feb 2010 16:50:03 -0500 Subject: [PATCH 405/521] ext-3871 Non-standard icon and behavior of avatar voice volume mute --- .../xui/en/panel_preferences_sound.xml | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index d8e3f4ccfb4..02fac363698 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -34,8 +34,8 @@ control_name="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -79,8 +79,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -114,8 +114,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -149,8 +149,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -184,8 +184,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -219,8 +219,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" @@ -270,8 +270,8 @@ disabled_control="MuteAudio" follows="top|right" height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" left_pad="16" -- GitLab From 8dbb2c6fd12bf86492ed1cf08e89fa064a23057b Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Mon, 1 Feb 2010 13:50:15 -0800 Subject: [PATCH 406/521] removed redundant code --- indra/llui/lltextbase.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 255a95c8eb0..0312802b44c 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1017,16 +1017,6 @@ void LLTextBase::draw() void LLTextBase::setColor( const LLColor4& c ) { mFgColor = c; - //textsegments have own style property , - //so we have to update it also to apply changes, EXT-4433 - for(segment_set_t::iterator it = mSegments.begin(); it != mSegments.end(); it++) - { - LLTextSegment* segment = it->get(); - if(segment) - { - segment->setColor(mFgColor); - } - } } //virtual -- GitLab From 45579c59e9906fd32f5d6e06d550cc3e472201d8 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 1 Feb 2010 17:44:15 -0500 Subject: [PATCH 407/521] Set the "Debug" menu to not be visible by default. https://jira.secondlife.com/browse/EXT-4828 --- indra/newview/skins/default/xui/en/menu_login.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index bbe6892b278..ba741045944 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -60,6 +60,7 @@ </menu_item_call> </menu> <menu + visible="false" create_jump_keys="true" label="Debug" name="Debug" -- GitLab From f44ee460c5d2c3531ea213b22e112bc74fe471d0 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 1 Feb 2010 15:12:57 -0800 Subject: [PATCH 408/521] Fix regression where SLURL DND when logged in didn't work (line got dropped) Reviewed by callum --- indra/newview/llviewerwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b36cd5b9344..fdc6675db11 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -825,7 +825,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi { if (drop) { - LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) ); + LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) ); LLPanelLogin::refreshLocation( true ); LLPanelLogin::updateLocationUI(); } -- GitLab From 51e3bdcb398068c0c304dced296d58762165a84f Mon Sep 17 00:00:00 2001 From: Lis Linden <lis@lindenlab.com> Date: Mon, 1 Feb 2010 18:19:43 -0500 Subject: [PATCH 409/521] EXT-4599 Change all mentions of "in World" to "inworld" --- .../skins/default/xui/en/floater_preview_animation.xml | 2 +- indra/newview/skins/default/xui/en/floater_preview_sound.xml | 4 ++-- indra/newview/skins/default/xui/en/menu_inventory.xml | 2 +- indra/newview/skins/default/xui/en/sidepanel_task_info.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml index bbfb3623376..6dc073728b8 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml @@ -38,7 +38,7 @@ width="170" /> <button height="20" - label="Play in World" + label="Play Inworld" label_selected="Stop" layout="topleft" left="10" diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml index 68a78d50170..f3be8c4131f 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml @@ -38,8 +38,8 @@ <button follows="left|top" height="22" - label="Play in World" - label_selected="Play in World" + label="Play Inworld" + label_selected="Play Inworld" layout="topleft" name="Sound play btn" sound_flags="0" diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 1e104671485..1993af67302 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -516,7 +516,7 @@ layout="topleft" name="Animation Separator" /> <menu_item_call - label="Play in World" + label="Play Inworld" layout="topleft" name="Animation Play"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index 74f97dca4ee..d2c9e56bc30 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -85,7 +85,7 @@ left="45" name="where" text_color="LtGray_50" - value="(In World)" + value="(inworld)" width="150" /> <panel follows="all" -- GitLab From f119b1652d3fc72e3cbd19b3f95ac1ce1f87ed34 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 1 Feb 2010 18:23:10 -0500 Subject: [PATCH 410/521] Added "Favorites Bar" label and tooltip. http://jira.secondlife.com/browse/EXT-4834 --- .../default/xui/en/panel_navigation_bar.xml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index baa6c2e51fa..5fe5db892a9 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -139,11 +139,12 @@ font="SansSerifSmall" height="15" layout="topleft" - left="0" + left="102" name="favorite" image_drag_indication="Accordion_ArrowOpened_Off" bottom="55" - width="590"> + tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" + width="590"> <chevron_button name=">>" image_unselected="TabIcon_Close_Off" image_selected="TabIcon_Close_Off" @@ -154,4 +155,15 @@ top="15" height="15"/> </favorites_bar> + <text + follows="left|top" + font.style="BOLD" + height="15" + layout="topleft" + left="10" + top_pad="-12" + name="favorites_bar_label" + text_color="LtGray" + tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" + width="102">Favorites Bar</text> </panel> -- GitLab From 142b744062c504d577c1952c6c12ee0f4fd4598f Mon Sep 17 00:00:00 2001 From: Lis Linden <lis@lindenlab.com> Date: Mon, 1 Feb 2010 18:23:55 -0500 Subject: [PATCH 411/521] ext-4435 Preferences: "Busy mode response" is brighter than other labels --- indra/newview/skins/default/xui/en/panel_preferences_general.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 22c75a595ed..b496f954225 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -323,7 +323,6 @@ follows="left|top" height="13" layout="topleft" - text_color="white" left="30" mouse_opaque="false" name="text_box3" -- GitLab From 62e41595a4a4aa2cdaf58b88ca213226c54cd251 Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Mon, 1 Feb 2010 18:43:26 -0500 Subject: [PATCH 412/521] Disabled magnifying glass icon from filter editors. https://jira.secondlife.com/browse/EXT-4839 --- indra/newview/skins/default/xui/en/widgets/filter_editor.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml index 48baa2812d7..1228f6be3d3 100644 --- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <filter_editor clear_button_visible="true" - search_button_visible="true" + search_button_visible="false" text_pad_left="7" select_on_focus="true" text_tentative_color="TextFgTentativeColor" -- GitLab From e76dd651d4be87c9afb37b2d5d7c9931209fd712 Mon Sep 17 00:00:00 2001 From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com> Date: Mon, 1 Feb 2010 18:43:26 -0500 Subject: [PATCH 413/521] EXT-4613: No longer get to throttle for quite folders (COF, trash, outfits, etc) -Reviewed by nyx --- indra/newview/llviewermessage.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 92408336328..b0952dd698f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -870,8 +870,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f //////////////////////////////////////////////////////////////////////////////// // Don't highlight if it's in certain "quiet" folders which don't need UI // notification (e.g. trash, cof, lost-and-found). - const BOOL user_is_away = gAwayTimer.getStarted(); - if(!user_is_away) + if(!gAgent.getAFK()) { const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id); if (parent) -- GitLab From 9430b8de6585e0c0aa980fc87cf73fdbc8a8c5d2 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Mon, 1 Feb 2010 16:29:52 -0800 Subject: [PATCH 414/521] dos2unix these files --- indra/cmake/DragDrop.cmake | 46 +- indra/llwindow/lldragdropwin32.cpp | 740 +-- indra/llwindow/lldragdropwin32.h | 160 +- indra/llwindow/llwindowwin32.cpp | 7386 ++++++++++++++-------------- 4 files changed, 4166 insertions(+), 4166 deletions(-) diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake index e56264f1875..c0424396e5f 100644 --- a/indra/cmake/DragDrop.cmake +++ b/indra/cmake/DragDrop.cmake @@ -1,23 +1,23 @@ -# -*- cmake -*- - -if (VIEWER) - - set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off") - - if (OS_DRAG_DROP) - - if (WINDOWS) - add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) - endif (WINDOWS) - - if (DARWIN) - add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) - endif (DARWIN) - - if (LINUX) - add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) - endif (LINUX) - - endif (OS_DRAG_DROP) - -endif (VIEWER) +# -*- cmake -*- + +if (VIEWER) + + set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off") + + if (OS_DRAG_DROP) + + if (WINDOWS) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) + endif (WINDOWS) + + if (DARWIN) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) + endif (DARWIN) + + if (LINUX) + add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) + endif (LINUX) + + endif (OS_DRAG_DROP) + +endif (VIEWER) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index 1e10626e8a0..9b80fe0a84c 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -1,370 +1,370 @@ -/** - * @file lldragdrop32.cpp - * @brief Handler for Windows specific drag and drop (OS to client) code - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#if LL_WINDOWS - -#if LL_OS_DRAGDROP_ENABLED - -#include "linden_common.h" - -#include "llwindowwin32.h" -#include "llkeyboardwin32.h" -#include "llwindowcallbacks.h" -#include "lldragdropwin32.h" - -class LLDragDropWin32Target: - public IDropTarget -{ - public: - //////////////////////////////////////////////////////////////////////////////// - // - LLDragDropWin32Target( HWND hWnd ) : - mRefCount( 1 ), - mAppWindowHandle( hWnd ), - mAllowDrop( false) - { - }; - - virtual ~LLDragDropWin32Target() - { - }; - - //////////////////////////////////////////////////////////////////////////////// - // - ULONG __stdcall AddRef( void ) - { - return InterlockedIncrement( &mRefCount ); - }; - - //////////////////////////////////////////////////////////////////////////////// - // - ULONG __stdcall Release( void ) - { - LONG count = InterlockedDecrement( &mRefCount ); - - if ( count == 0 ) - { - delete this; - return 0; - } - else - { - return count; - }; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject ) - { - if ( iid == IID_IUnknown || iid == IID_IDropTarget ) - { - AddRef(); - *ppvObject = this; - return S_OK; - } - else - { - *ppvObject = 0; - return E_NOINTERFACE; - }; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) - { - FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; - - // support CF_TEXT using a HGLOBAL? - if ( S_OK == pDataObject->QueryGetData( &fmtetc ) ) - { - mAllowDrop = true; - mDropUrl = std::string(); - mIsSlurl = false; - - STGMEDIUM stgmed; - if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) ) - { - PVOID data = GlobalLock( stgmed.hGlobal ); - mDropUrl = std::string( (char*)data ); - // XXX MAJOR MAJOR HACK! - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); - if (NULL != window_imp) - { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt2; - pt2.x = pt.x; - pt2.y = pt.y; - ScreenToClient( mAppWindowHandle, &pt2 ); - - LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - MASK mask = gKeyboard->currentMask(TRUE); - - LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, - LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl ); - - switch (result) - { - case LLWindowCallbacks::DND_COPY: - *pdwEffect = DROPEFFECT_COPY; - break; - case LLWindowCallbacks::DND_LINK: - *pdwEffect = DROPEFFECT_LINK; - break; - case LLWindowCallbacks::DND_MOVE: - *pdwEffect = DROPEFFECT_MOVE; - break; - case LLWindowCallbacks::DND_NONE: - default: - *pdwEffect = DROPEFFECT_NONE; - break; - } - }; - - GlobalUnlock( stgmed.hGlobal ); - ReleaseStgMedium( &stgmed ); - }; - SetFocus( mAppWindowHandle ); - } - else - { - mAllowDrop = false; - *pdwEffect = DROPEFFECT_NONE; - }; - - return S_OK; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) - { - if ( mAllowDrop ) - { - // XXX MAJOR MAJOR HACK! - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); - if (NULL != window_imp) - { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt2; - pt2.x = pt.x; - pt2.y = pt.y; - ScreenToClient( mAppWindowHandle, &pt2 ); - - LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - MASK mask = gKeyboard->currentMask(TRUE); - - LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, - LLWindowCallbacks::DNDA_TRACK, mDropUrl ); - - switch (result) - { - case LLWindowCallbacks::DND_COPY: - *pdwEffect = DROPEFFECT_COPY; - break; - case LLWindowCallbacks::DND_LINK: - *pdwEffect = DROPEFFECT_LINK; - break; - case LLWindowCallbacks::DND_MOVE: - *pdwEffect = DROPEFFECT_MOVE; - break; - case LLWindowCallbacks::DND_NONE: - default: - *pdwEffect = DROPEFFECT_NONE; - break; - } - }; - } - else - { - *pdwEffect = DROPEFFECT_NONE; - }; - - return S_OK; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - HRESULT __stdcall DragLeave( void ) - { - // XXX MAJOR MAJOR HACK! - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); - if (NULL != window_imp) - { - LLCoordGL gl_coord( 0, 0 ); - MASK mask = gKeyboard->currentMask(TRUE); - window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl ); - }; - return S_OK; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) - { - if ( mAllowDrop ) - { - // window impl stored in Window data (neat!) - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); - if ( NULL != window_imp ) - { - LLCoordGL gl_coord( 0, 0 ); - - POINT pt_client; - pt_client.x = pt.x; - pt_client.y = pt.y; - ScreenToClient( mAppWindowHandle, &pt_client ); - - LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y ); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - llinfos << "### (Drop) URL is: " << mDropUrl << llendl; - llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; - llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl; - llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; - llinfos << llendl; - - // no keyboard modifier option yet but we could one day - MASK mask = gKeyboard->currentMask( TRUE ); - - // actually do the drop - LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, - LLWindowCallbacks::DNDA_DROPPED, mDropUrl ); - - switch (result) - { - case LLWindowCallbacks::DND_COPY: - *pdwEffect = DROPEFFECT_COPY; - break; - case LLWindowCallbacks::DND_LINK: - *pdwEffect = DROPEFFECT_LINK; - break; - case LLWindowCallbacks::DND_MOVE: - *pdwEffect = DROPEFFECT_MOVE; - break; - case LLWindowCallbacks::DND_NONE: - default: - *pdwEffect = DROPEFFECT_NONE; - break; - } - }; - } - else - { - *pdwEffect = DROPEFFECT_NONE; - }; - - return S_OK; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - private: - LONG mRefCount; - HWND mAppWindowHandle; - bool mAllowDrop; - std::string mDropUrl; - bool mIsSlurl; - friend class LLWindowWin32; -}; - -//////////////////////////////////////////////////////////////////////////////// -// -LLDragDropWin32::LLDragDropWin32() : - mDropTarget( NULL ), - mDropWindowHandle( NULL ) - -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// -LLDragDropWin32::~LLDragDropWin32() -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// -bool LLDragDropWin32::init( HWND hWnd ) -{ - if ( NOERROR != OleInitialize( NULL ) ) - return FALSE; - - mDropTarget = new LLDragDropWin32Target( hWnd ); - if ( mDropTarget ) - { - HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE ); - if ( S_OK == result ) - { - result = RegisterDragDrop( hWnd, mDropTarget ); - if ( S_OK != result ) - { - // RegisterDragDrop failed - return false; - }; - - // all ok - mDropWindowHandle = hWnd; - } - else - { - // Unable to lock OLE object - return false; - }; - }; - - // success - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLDragDropWin32::reset() -{ - if ( mDropTarget ) - { - RevokeDragDrop( mDropWindowHandle ); - CoLockObjectExternal( mDropTarget, FALSE, TRUE ); - mDropTarget->Release(); - }; - - OleUninitialize(); -} - -#endif // LL_OS_DRAGDROP_ENABLED - -#endif // LL_WINDOWS - +/** + * @file lldragdrop32.cpp + * @brief Handler for Windows specific drag and drop (OS to client) code + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#if LL_WINDOWS + +#if LL_OS_DRAGDROP_ENABLED + +#include "linden_common.h" + +#include "llwindowwin32.h" +#include "llkeyboardwin32.h" +#include "llwindowcallbacks.h" +#include "lldragdropwin32.h" + +class LLDragDropWin32Target: + public IDropTarget +{ + public: + //////////////////////////////////////////////////////////////////////////////// + // + LLDragDropWin32Target( HWND hWnd ) : + mRefCount( 1 ), + mAppWindowHandle( hWnd ), + mAllowDrop( false) + { + }; + + virtual ~LLDragDropWin32Target() + { + }; + + //////////////////////////////////////////////////////////////////////////////// + // + ULONG __stdcall AddRef( void ) + { + return InterlockedIncrement( &mRefCount ); + }; + + //////////////////////////////////////////////////////////////////////////////// + // + ULONG __stdcall Release( void ) + { + LONG count = InterlockedDecrement( &mRefCount ); + + if ( count == 0 ) + { + delete this; + return 0; + } + else + { + return count; + }; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject ) + { + if ( iid == IID_IUnknown || iid == IID_IDropTarget ) + { + AddRef(); + *ppvObject = this; + return S_OK; + } + else + { + *ppvObject = 0; + return E_NOINTERFACE; + }; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) + { + FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + + // support CF_TEXT using a HGLOBAL? + if ( S_OK == pDataObject->QueryGetData( &fmtetc ) ) + { + mAllowDrop = true; + mDropUrl = std::string(); + mIsSlurl = false; + + STGMEDIUM stgmed; + if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) ) + { + PVOID data = GlobalLock( stgmed.hGlobal ); + mDropUrl = std::string( (char*)data ); + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl ); + + switch (result) + { + case LLWindowCallbacks::DND_COPY: + *pdwEffect = DROPEFFECT_COPY; + break; + case LLWindowCallbacks::DND_LINK: + *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } + }; + + GlobalUnlock( stgmed.hGlobal ); + ReleaseStgMedium( &stgmed ); + }; + SetFocus( mAppWindowHandle ); + } + else + { + mAllowDrop = false; + *pdwEffect = DROPEFFECT_NONE; + }; + + return S_OK; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) + { + if ( mAllowDrop ) + { + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt2 ); + + LLCoordWindow cursor_coord_window( pt2.x, pt2.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_TRACK, mDropUrl ); + + switch (result) + { + case LLWindowCallbacks::DND_COPY: + *pdwEffect = DROPEFFECT_COPY; + break; + case LLWindowCallbacks::DND_LINK: + *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } + }; + } + else + { + *pdwEffect = DROPEFFECT_NONE; + }; + + return S_OK; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall DragLeave( void ) + { + // XXX MAJOR MAJOR HACK! + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); + if (NULL != window_imp) + { + LLCoordGL gl_coord( 0, 0 ); + MASK mask = gKeyboard->currentMask(TRUE); + window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl ); + }; + return S_OK; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) + { + if ( mAllowDrop ) + { + // window impl stored in Window data (neat!) + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); + if ( NULL != window_imp ) + { + LLCoordGL gl_coord( 0, 0 ); + + POINT pt_client; + pt_client.x = pt.x; + pt_client.y = pt.y; + ScreenToClient( mAppWindowHandle, &pt_client ); + + LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y ); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + llinfos << "### (Drop) URL is: " << mDropUrl << llendl; + llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl; + llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl; + llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl; + llinfos << llendl; + + // no keyboard modifier option yet but we could one day + MASK mask = gKeyboard->currentMask( TRUE ); + + // actually do the drop + LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, + LLWindowCallbacks::DNDA_DROPPED, mDropUrl ); + + switch (result) + { + case LLWindowCallbacks::DND_COPY: + *pdwEffect = DROPEFFECT_COPY; + break; + case LLWindowCallbacks::DND_LINK: + *pdwEffect = DROPEFFECT_LINK; + break; + case LLWindowCallbacks::DND_MOVE: + *pdwEffect = DROPEFFECT_MOVE; + break; + case LLWindowCallbacks::DND_NONE: + default: + *pdwEffect = DROPEFFECT_NONE; + break; + } + }; + } + else + { + *pdwEffect = DROPEFFECT_NONE; + }; + + return S_OK; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + private: + LONG mRefCount; + HWND mAppWindowHandle; + bool mAllowDrop; + std::string mDropUrl; + bool mIsSlurl; + friend class LLWindowWin32; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +LLDragDropWin32::LLDragDropWin32() : + mDropTarget( NULL ), + mDropWindowHandle( NULL ) + +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +LLDragDropWin32::~LLDragDropWin32() +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +bool LLDragDropWin32::init( HWND hWnd ) +{ + if ( NOERROR != OleInitialize( NULL ) ) + return FALSE; + + mDropTarget = new LLDragDropWin32Target( hWnd ); + if ( mDropTarget ) + { + HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE ); + if ( S_OK == result ) + { + result = RegisterDragDrop( hWnd, mDropTarget ); + if ( S_OK != result ) + { + // RegisterDragDrop failed + return false; + }; + + // all ok + mDropWindowHandle = hWnd; + } + else + { + // Unable to lock OLE object + return false; + }; + }; + + // success + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// +void LLDragDropWin32::reset() +{ + if ( mDropTarget ) + { + RevokeDragDrop( mDropWindowHandle ); + CoLockObjectExternal( mDropTarget, FALSE, TRUE ); + mDropTarget->Release(); + }; + + OleUninitialize(); +} + +#endif // LL_OS_DRAGDROP_ENABLED + +#endif // LL_WINDOWS + diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h index 26c8e4aeff5..9686626d7c2 100644 --- a/indra/llwindow/lldragdropwin32.h +++ b/indra/llwindow/lldragdropwin32.h @@ -1,80 +1,80 @@ -/** - * @file lldragdrop32.cpp - * @brief Handler for Windows specific drag and drop (OS to client) code - * - * $LicenseInfo:firstyear=2004&license=viewergpl$ - * - * Copyright (c) 2004-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#if LL_WINDOWS - -#if LL_OS_DRAGDROP_ENABLED - -#ifndef LL_LLDRAGDROP32_H -#define LL_LLDRAGDROP32_H - -#include <windows.h> -#include <ole2.h> - -class LLDragDropWin32 -{ - public: - LLDragDropWin32(); - ~LLDragDropWin32(); - - bool init( HWND hWnd ); - void reset(); - - private: - IDropTarget* mDropTarget; - HWND mDropWindowHandle; -}; -#endif // LL_LLDRAGDROP32_H - -#else // LL_OS_DRAGDROP_ENABLED - -#ifndef LL_LLDRAGDROP32_H -#define LL_LLDRAGDROP32_H - -#include <windows.h> -#include <ole2.h> - -// imposter class that does nothing -class LLDragDropWin32 -{ - public: - LLDragDropWin32() {}; - ~LLDragDropWin32() {}; - - bool init( HWND hWnd ) { return false; }; - void reset() { }; -}; -#endif // LL_LLDRAGDROP32_H - -#endif // LL_OS_DRAGDROP_ENABLED - -#endif // LL_WINDOWS +/** + * @file lldragdrop32.cpp + * @brief Handler for Windows specific drag and drop (OS to client) code + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#if LL_WINDOWS + +#if LL_OS_DRAGDROP_ENABLED + +#ifndef LL_LLDRAGDROP32_H +#define LL_LLDRAGDROP32_H + +#include <windows.h> +#include <ole2.h> + +class LLDragDropWin32 +{ + public: + LLDragDropWin32(); + ~LLDragDropWin32(); + + bool init( HWND hWnd ); + void reset(); + + private: + IDropTarget* mDropTarget; + HWND mDropWindowHandle; +}; +#endif // LL_LLDRAGDROP32_H + +#else // LL_OS_DRAGDROP_ENABLED + +#ifndef LL_LLDRAGDROP32_H +#define LL_LLDRAGDROP32_H + +#include <windows.h> +#include <ole2.h> + +// imposter class that does nothing +class LLDragDropWin32 +{ + public: + LLDragDropWin32() {}; + ~LLDragDropWin32() {}; + + bool init( HWND hWnd ) { return false; }; + void reset() { }; +}; +#endif // LL_LLDRAGDROP32_H + +#endif // LL_OS_DRAGDROP_ENABLED + +#endif // LL_WINDOWS diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index ed39786b37d..57a4921d92c 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1,3693 +1,3693 @@ -/** - * @file llwindowwin32.cpp - * @brief Platform-dependent implementation of llwindow - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#include "linden_common.h" - -#if LL_WINDOWS && !LL_MESA_HEADLESS - -#include "llwindowwin32.h" - -// LLWindow library includes -#include "llkeyboardwin32.h" -#include "lldragdropwin32.h" -#include "llpreeditor.h" -#include "llwindowcallbacks.h" - -// Linden library includes -#include "llerror.h" -#include "llgl.h" -#include "llstring.h" - -// System includes -#include <commdlg.h> -#include <WinUser.h> -#include <mapi.h> -#include <process.h> // for _spawn -#include <shellapi.h> -#include <fstream> -#include <Imm.h> - -// Require DirectInput version 8 -#define DIRECTINPUT_VERSION 0x0800 - -#include <dinput.h> -#include <Dbt.h.> - -#include "llmemtype.h" -// culled from winuser.h -#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ -const S32 WM_MOUSEWHEEL = 0x020A; -#endif -#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */ -const S32 WHEEL_DELTA = 120; /* Value for rolling one detent */ -#endif -const S32 MAX_MESSAGE_PER_UPDATE = 20; -const S32 BITS_PER_PIXEL = 32; -const S32 MAX_NUM_RESOLUTIONS = 32; -const F32 ICON_FLASH_TIME = 0.5f; - -extern BOOL gDebugWindowProc; - -LPWSTR gIconResource = IDI_APPLICATION; - -LLW32MsgCallback gAsyncMsgCallback = NULL; - -// -// LLWindowWin32 -// - -void show_window_creation_error(const std::string& title) -{ - LL_WARNS("Window") << title << LL_ENDL; -} - -//static -BOOL LLWindowWin32::sIsClassRegistered = FALSE; - -BOOL LLWindowWin32::sLanguageTextInputAllowed = TRUE; -BOOL LLWindowWin32::sWinIMEOpened = FALSE; -HKL LLWindowWin32::sWinInputLocale = 0; -DWORD LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE; -DWORD LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC; -LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1); - -// The following class LLWinImm delegates Windows IMM APIs. -// We need this because some language versions of Windows, -// e.g., US version of Windows XP, doesn't install IMM32.DLL -// as a default, and we can't link against imm32.lib statically. -// I believe DLL loading of this type is best suited to do -// in a static initialization of a class. What I'm not sure is -// whether it follows the Linden Conding Standard... -// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members - -class LLWinImm -{ -public: - static bool isAvailable() { return sTheInstance.mHImmDll != NULL; } - -public: - // Wrappers for IMM API. - static BOOL isIME(HKL hkl); - static HWND getDefaultIMEWnd(HWND hwnd); - static HIMC getContext(HWND hwnd); - static BOOL releaseContext(HWND hwnd, HIMC himc); - static BOOL getOpenStatus(HIMC himc); - static BOOL setOpenStatus(HIMC himc, BOOL status); - static BOOL getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence); - static BOOL setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence); - static BOOL getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); - static BOOL setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); - static LONG getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length); - static BOOL setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength); - static BOOL setCompositionFont(HIMC himc, LPLOGFONTW logfont); - static BOOL setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form); - static BOOL notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value); - -private: - LLWinImm(); - ~LLWinImm(); - -private: - // Pointers to IMM API. - BOOL (WINAPI *mImmIsIME)(HKL); - HWND (WINAPI *mImmGetDefaultIMEWnd)(HWND); - HIMC (WINAPI *mImmGetContext)(HWND); - BOOL (WINAPI *mImmReleaseContext)(HWND, HIMC); - BOOL (WINAPI *mImmGetOpenStatus)(HIMC); - BOOL (WINAPI *mImmSetOpenStatus)(HIMC, BOOL); - BOOL (WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD); - BOOL (WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD); - BOOL (WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); - BOOL (WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); - LONG (WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD); - BOOL (WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); - BOOL (WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW); - BOOL (WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM); - BOOL (WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD); - -private: - HMODULE mHImmDll; - static LLWinImm sTheInstance; -}; - -LLWinImm LLWinImm::sTheInstance; - -LLWinImm::LLWinImm() : mHImmDll(NULL) -{ - // Check system metrics - if ( !GetSystemMetrics( SM_DBCSENABLED ) ) - return; - - - mHImmDll = LoadLibraryA("Imm32"); - if (mHImmDll != NULL) - { - mImmIsIME = (BOOL (WINAPI *)(HKL)) GetProcAddress(mHImmDll, "ImmIsIME"); - mImmGetDefaultIMEWnd = (HWND (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd"); - mImmGetContext = (HIMC (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetContext"); - mImmReleaseContext = (BOOL (WINAPI *)(HWND, HIMC)) GetProcAddress(mHImmDll, "ImmReleaseContext"); - mImmGetOpenStatus = (BOOL (WINAPI *)(HIMC)) GetProcAddress(mHImmDll, "ImmGetOpenStatus"); - mImmSetOpenStatus = (BOOL (WINAPI *)(HIMC, BOOL)) GetProcAddress(mHImmDll, "ImmSetOpenStatus"); - mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus"); - mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmSetConversionStatus"); - mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmGetCompositionWindow"); - mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmSetCompositionWindow"); - mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmGetCompositionStringW"); - mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmSetCompositionStringW"); - mImmSetCompositionFont = (BOOL (WINAPI *)(HIMC, LPLOGFONTW)) GetProcAddress(mHImmDll, "ImmSetCompositionFontW"); - mImmSetCandidateWindow = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM)) GetProcAddress(mHImmDll, "ImmSetCandidateWindow"); - mImmNotifyIME = (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmNotifyIME"); - - if (mImmIsIME == NULL || - mImmGetDefaultIMEWnd == NULL || - mImmGetContext == NULL || - mImmReleaseContext == NULL || - mImmGetOpenStatus == NULL || - mImmSetOpenStatus == NULL || - mImmGetConversionStatus == NULL || - mImmSetConversionStatus == NULL || - mImmGetCompostitionWindow == NULL || - mImmSetCompostitionWindow == NULL || - mImmGetCompositionString == NULL || - mImmSetCompositionString == NULL || - mImmSetCompositionFont == NULL || - mImmSetCandidateWindow == NULL || - mImmNotifyIME == NULL) - { - // If any of the above API entires are not found, we can't use IMM API. - // So, turn off the IMM support. We should log some warning message in - // the case, since it is very unusual; these APIs are available from - // the beginning, and all versions of IMM32.DLL should have them all. - // Unfortunately, this code may be executed before initialization of - // the logging channel (llwarns), and we can't do it here... Yes, this - // is one of disadvantages to use static constraction to DLL loading. - FreeLibrary(mHImmDll); - mHImmDll = NULL; - - // If we unload the library, make sure all the function pointers are cleared - mImmIsIME = NULL; - mImmGetDefaultIMEWnd = NULL; - mImmGetContext = NULL; - mImmReleaseContext = NULL; - mImmGetOpenStatus = NULL; - mImmSetOpenStatus = NULL; - mImmGetConversionStatus = NULL; - mImmSetConversionStatus = NULL; - mImmGetCompostitionWindow = NULL; - mImmSetCompostitionWindow = NULL; - mImmGetCompositionString = NULL; - mImmSetCompositionString = NULL; - mImmSetCompositionFont = NULL; - mImmSetCandidateWindow = NULL; - mImmNotifyIME = NULL; - } - } -} - - -// static -BOOL LLWinImm::isIME(HKL hkl) -{ - if ( sTheInstance.mImmIsIME ) - return sTheInstance.mImmIsIME(hkl); - return FALSE; -} - -// static -HIMC LLWinImm::getContext(HWND hwnd) -{ - if ( sTheInstance.mImmGetContext ) - return sTheInstance.mImmGetContext(hwnd); - return 0; -} - -//static -BOOL LLWinImm::releaseContext(HWND hwnd, HIMC himc) -{ - if ( sTheInstance.mImmIsIME ) - return sTheInstance.mImmReleaseContext(hwnd, himc); - return FALSE; -} - -// static -BOOL LLWinImm::getOpenStatus(HIMC himc) -{ - if ( sTheInstance.mImmGetOpenStatus ) - return sTheInstance.mImmGetOpenStatus(himc); - return FALSE; -} - -// static -BOOL LLWinImm::setOpenStatus(HIMC himc, BOOL status) -{ - if ( sTheInstance.mImmSetOpenStatus ) - return sTheInstance.mImmSetOpenStatus(himc, status); - return FALSE; -} - -// static -BOOL LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence) -{ - if ( sTheInstance.mImmGetConversionStatus ) - return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); - return FALSE; -} - -// static -BOOL LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence) -{ - if ( sTheInstance.mImmSetConversionStatus ) - return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); - return FALSE; -} - -// static -BOOL LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) -{ - if ( sTheInstance.mImmGetCompostitionWindow ) - return sTheInstance.mImmGetCompostitionWindow(himc, form); - return FALSE; -} - -// static -BOOL LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) -{ - if ( sTheInstance.mImmSetCompostitionWindow ) - return sTheInstance.mImmSetCompostitionWindow(himc, form); - return FALSE; -} - - -// static -LONG LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length) -{ - if ( sTheInstance.mImmGetCompositionString ) - return sTheInstance.mImmGetCompositionString(himc, index, data, length); - return FALSE; -} - - -// static -BOOL LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength) -{ - if ( sTheInstance.mImmSetCompositionString ) - return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength); - return FALSE; -} - -// static -BOOL LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont) -{ - if ( sTheInstance.mImmSetCompositionFont ) - return sTheInstance.mImmSetCompositionFont(himc, pFont); - return FALSE; -} - -// static -BOOL LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form) -{ - if ( sTheInstance.mImmSetCandidateWindow ) - return sTheInstance.mImmSetCandidateWindow(himc, form); - return FALSE; -} - -// static -BOOL LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value) -{ - if ( sTheInstance.mImmNotifyIME ) - return sTheInstance.mImmNotifyIME(himc, action, index, value); - return FALSE; -} - - - - -// ---------------------------------------------------------------------------------------- -LLWinImm::~LLWinImm() -{ - if (mHImmDll != NULL) - { - FreeLibrary(mHImmDll); - mHImmDll = NULL; - } -} - - -LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, - const std::string& title, const std::string& name, S32 x, S32 y, S32 width, - S32 height, U32 flags, - BOOL fullscreen, BOOL clearBg, - BOOL disable_vsync, BOOL use_gl, - BOOL ignore_pixel_depth, - U32 fsaa_samples) - : LLWindow(callbacks, fullscreen, flags) -{ - mFSAASamples = fsaa_samples; - mIconResource = gIconResource; - mOverrideAspectRatio = 0.f; - mNativeAspectRatio = 0.f; - mMousePositionModified = FALSE; - mInputProcessingPaused = FALSE; - mPreeditor = NULL; - mhDC = NULL; - mhRC = NULL; - - // Initialize the keyboard - gKeyboard = new LLKeyboardWin32(); - gKeyboard->setCallbacks(callbacks); - - // Initialize the Drag and Drop functionality - mDragDrop = new LLDragDropWin32; - - // Initialize (boot strap) the Language text input management, - // based on the system's (user's) default settings. - allowLanguageTextInput(mPreeditor, FALSE); - - WNDCLASS wc; - RECT window_rect; - - // Set the window title - if (title.empty()) - { - mWindowTitle = new WCHAR[50]; - wsprintf(mWindowTitle, L"OpenGL Window"); - } - else - { - mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. - mbstowcs(mWindowTitle, title.c_str(), 255); - mWindowTitle[255] = 0; - } - - // Set the window class name - if (name.empty()) - { - mWindowClassName = new WCHAR[50]; - wsprintf(mWindowClassName, L"OpenGL Window"); - } - else - { - mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. - mbstowcs(mWindowClassName, name.c_str(), 255); - mWindowClassName[255] = 0; - } - - - // We're not clipping yet - SetRect( &mOldMouseClip, 0, 0, 0, 0 ); - - // Make an instance of our window then define the window class - mhInstance = GetModuleHandle(NULL); - mWndProc = NULL; - - mSwapMethod = SWAP_METHOD_UNDEFINED; - - // No WPARAM yet. - mLastSizeWParam = 0; - - // Windows GDI rects don't include rightmost pixel - window_rect.left = (long) 0; - window_rect.right = (long) width; - window_rect.top = (long) 0; - window_rect.bottom = (long) height; - - // Grab screen size to sanitize the window - S32 window_border_y = GetSystemMetrics(SM_CYBORDER); - S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); - S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); - S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN); - S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN); - - if (x < virtual_screen_x) x = virtual_screen_x; - if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y; - - if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width; - if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height; - - if (!sIsClassRegistered) - { - // Force redraw when resized and create a private device context - - // Makes double click messages. - wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; - - // Set message handler function - wc.lpfnWndProc = (WNDPROC) mainWindowProc; - - // unused - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - - wc.hInstance = mhInstance; - wc.hIcon = LoadIcon(mhInstance, mIconResource); - - // We will set the cursor ourselves - wc.hCursor = NULL; - - // background color is not used - if (clearBg) - { - wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - } - else - { - wc.hbrBackground = (HBRUSH) NULL; - } - - // we don't use windows menus - wc.lpszMenuName = NULL; - - wc.lpszClassName = mWindowClassName; - - if (!RegisterClass(&wc)) - { - OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), - mCallbacks->translateString("MBError"), OSMB_OK); - return; - } - sIsClassRegistered = TRUE; - } - - //----------------------------------------------------------------------- - // Get the current refresh rate - //----------------------------------------------------------------------- - - DEVMODE dev_mode; - DWORD current_refresh; - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - current_refresh = dev_mode.dmDisplayFrequency; - mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight); - } - else - { - current_refresh = 60; - } - - //----------------------------------------------------------------------- - // Drop resolution and go fullscreen - // use a display mode with our desired size and depth, with a refresh - // rate as close at possible to the users' default - //----------------------------------------------------------------------- - if (mFullscreen) - { - BOOL success = FALSE; - DWORD closest_refresh = 0; - - for (S32 mode_num = 0;; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == BITS_PER_PIXEL) - { - success = TRUE; - if ((dev_mode.dmDisplayFrequency - current_refresh) - < (closest_refresh - current_refresh)) - { - closest_refresh = dev_mode.dmDisplayFrequency; - } - } - } - - if (closest_refresh == 0) - { - LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; - success = FALSE; - } - - // If we found a good resolution, use it. - if (success) - { - success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); - } - - // Keep a copy of the actual current device mode in case we minimize - // and change the screen resolution. JC - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); - - // If it failed, we don't want to run fullscreen - if (success) - { - mFullscreen = TRUE; - mFullscreenWidth = dev_mode.dmPelsWidth; - mFullscreenHeight = dev_mode.dmPelsHeight; - mFullscreenBits = dev_mode.dmBitsPerPel; - mFullscreenRefresh = dev_mode.dmDisplayFrequency; - - LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth - << "x" << dev_mode.dmPelsHeight - << "x" << dev_mode.dmBitsPerPel - << " @ " << dev_mode.dmDisplayFrequency - << LL_ENDL; - } - else - { - mFullscreen = FALSE; - mFullscreenWidth = -1; - mFullscreenHeight = -1; - mFullscreenBits = -1; - mFullscreenRefresh = -1; - - std::map<std::string,std::string> args; - args["[WIDTH]"] = llformat("%d", width); - args["[HEIGHT]"] = llformat ("%d", height); - OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args), - mCallbacks->translateString("MBError"), OSMB_OK); - } - } - - // TODO: add this after resolving _WIN32_WINNT issue - // if (!fullscreen) - // { - // TRACKMOUSEEVENT track_mouse_event; - // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); - // track_mouse_event.dwFlags = TME_LEAVE; - // track_mouse_event.hwndTrack = mWindowHandle; - // track_mouse_event.dwHoverTime = HOVER_DEFAULT; - // TrackMouseEvent( &track_mouse_event ); - // } - - - //----------------------------------------------------------------------- - // Create GL drawing context - //----------------------------------------------------------------------- - LLCoordScreen windowPos(x,y); - LLCoordScreen windowSize(window_rect.right - window_rect.left, - window_rect.bottom - window_rect.top); - if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos)) - { - return; - } - - //start with arrow cursor - initCursors(); - setCursor( UI_CURSOR_ARROW ); - - // Initialize (boot strap) the Language text input management, - // based on the system's (or user's) default settings. - allowLanguageTextInput(NULL, FALSE); -} - - -LLWindowWin32::~LLWindowWin32() -{ - delete mDragDrop; - - delete [] mWindowTitle; - mWindowTitle = NULL; - - delete [] mSupportedResolutions; - mSupportedResolutions = NULL; - - delete mWindowClassName; - mWindowClassName = NULL; -} - -void LLWindowWin32::show() -{ - ShowWindow(mWindowHandle, SW_SHOW); - SetForegroundWindow(mWindowHandle); - SetFocus(mWindowHandle); -} - -void LLWindowWin32::hide() -{ - setMouseClipping(FALSE); - ShowWindow(mWindowHandle, SW_HIDE); -} - -//virtual -void LLWindowWin32::minimize() -{ - setMouseClipping(FALSE); - showCursor(); - ShowWindow(mWindowHandle, SW_MINIMIZE); -} - -//virtual -void LLWindowWin32::restore() -{ - ShowWindow(mWindowHandle, SW_RESTORE); - SetForegroundWindow(mWindowHandle); - SetFocus(mWindowHandle); -} - - -// close() destroys all OS-specific code associated with a window. -// Usually called from LLWindowManager::destroyWindow() -void LLWindowWin32::close() -{ - LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL; - // Is window is already closed? - if (!mWindowHandle) - { - return; - } - - mDragDrop->reset(); - - // Make sure cursor is visible and we haven't mangled the clipping state. - setMouseClipping(FALSE); - showCursor(); - - // Go back to screen mode written in the registry. - if (mFullscreen) - { - resetDisplayResolution(); - } - - // Clean up remaining GL state - LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL; - gGLManager.shutdownGL(); - - LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL; - if (mhRC) - { - if (!wglMakeCurrent(NULL, NULL)) - { - LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; - } - - if (!wglDeleteContext(mhRC)) - { - LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; - } - - mhRC = NULL; - } - - // Restore gamma to the system values. - restoreGamma(); - - if (mhDC && !ReleaseDC(mWindowHandle, mhDC)) - { - LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL; - mhDC = NULL; - } - - LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; - - // Don't process events in our mainWindowProc any longer. - SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); - - // Make sure we don't leave a blank toolbar button. - ShowWindow(mWindowHandle, SW_HIDE); - - // This causes WM_DESTROY to be sent *immediately* - if (!DestroyWindow(mWindowHandle)) - { - OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), - mCallbacks->translateString("MBShutdownErr"), - OSMB_OK); - } - - mWindowHandle = NULL; -} - -BOOL LLWindowWin32::isValid() -{ - return (mWindowHandle != NULL); -} - -BOOL LLWindowWin32::getVisible() -{ - return (mWindowHandle && IsWindowVisible(mWindowHandle)); -} - -BOOL LLWindowWin32::getMinimized() -{ - return (mWindowHandle && IsIconic(mWindowHandle)); -} - -BOOL LLWindowWin32::getMaximized() -{ - return (mWindowHandle && IsZoomed(mWindowHandle)); -} - -BOOL LLWindowWin32::maximize() -{ - BOOL success = FALSE; - if (!mWindowHandle) return success; - - WINDOWPLACEMENT placement; - placement.length = sizeof(WINDOWPLACEMENT); - - success = GetWindowPlacement(mWindowHandle, &placement); - if (!success) return success; - - placement.showCmd = SW_MAXIMIZE; - - success = SetWindowPlacement(mWindowHandle, &placement); - return success; -} - -BOOL LLWindowWin32::getFullscreen() -{ - return mFullscreen; -} - -BOOL LLWindowWin32::getPosition(LLCoordScreen *position) -{ - RECT window_rect; - - if (!mWindowHandle || - !GetWindowRect(mWindowHandle, &window_rect) || - NULL == position) - { - return FALSE; - } - - position->mX = window_rect.left; - position->mY = window_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::getSize(LLCoordScreen *size) -{ - RECT window_rect; - - if (!mWindowHandle || - !GetWindowRect(mWindowHandle, &window_rect) || - NULL == size) - { - return FALSE; - } - - size->mX = window_rect.right - window_rect.left; - size->mY = window_rect.bottom - window_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::getSize(LLCoordWindow *size) -{ - RECT client_rect; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == size) - { - return FALSE; - } - - size->mX = client_rect.right - client_rect.left; - size->mY = client_rect.bottom - client_rect.top; - return TRUE; -} - -BOOL LLWindowWin32::setPosition(const LLCoordScreen position) -{ - LLCoordScreen size; - - if (!mWindowHandle) - { - return FALSE; - } - getSize(&size); - moveWindow(position, size); - return TRUE; -} - -BOOL LLWindowWin32::setSize(const LLCoordScreen size) -{ - LLCoordScreen position; - - getPosition(&position); - if (!mWindowHandle) - { - return FALSE; - } - - moveWindow(position, size); - return TRUE; -} - -// changing fullscreen resolution -BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp) -{ - GLuint pixel_format; - DEVMODE dev_mode; - DWORD current_refresh; - DWORD dw_ex_style; - DWORD dw_style; - RECT window_rect; - S32 width = size.mX; - S32 height = size.mY; - BOOL auto_show = FALSE; - - if (mhRC) - { - auto_show = TRUE; - resetDisplayResolution(); - } - - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - current_refresh = dev_mode.dmDisplayFrequency; - } - else - { - current_refresh = 60; - } - - gGLManager.shutdownGL(); - //destroy gl context - if (mhRC) - { - if (!wglMakeCurrent(NULL, NULL)) - { - LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; - } - - if (!wglDeleteContext(mhRC)) - { - LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; - } - - mhRC = NULL; - } - - if (fullscreen) - { - mFullscreen = TRUE; - BOOL success = FALSE; - DWORD closest_refresh = 0; - - for (S32 mode_num = 0;; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == BITS_PER_PIXEL) - { - success = TRUE; - if ((dev_mode.dmDisplayFrequency - current_refresh) - < (closest_refresh - current_refresh)) - { - closest_refresh = dev_mode.dmDisplayFrequency; - } - } - } - - if (closest_refresh == 0) - { - LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; - return FALSE; - } - - // If we found a good resolution, use it. - if (success) - { - success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); - } - - // Keep a copy of the actual current device mode in case we minimize - // and change the screen resolution. JC - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); - - if (success) - { - mFullscreen = TRUE; - mFullscreenWidth = dev_mode.dmPelsWidth; - mFullscreenHeight = dev_mode.dmPelsHeight; - mFullscreenBits = dev_mode.dmBitsPerPel; - mFullscreenRefresh = dev_mode.dmDisplayFrequency; - - LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth - << "x" << dev_mode.dmPelsHeight - << "x" << dev_mode.dmBitsPerPel - << " @ " << dev_mode.dmDisplayFrequency - << LL_ENDL; - - window_rect.left = (long) 0; - window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel - window_rect.top = (long) 0; - window_rect.bottom = (long) height; - dw_ex_style = WS_EX_APPWINDOW; - dw_style = WS_POPUP; - - // Move window borders out not to cover window contents - AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style); - } - // If it failed, we don't want to run fullscreen - else - { - mFullscreen = FALSE; - mFullscreenWidth = -1; - mFullscreenHeight = -1; - mFullscreenBits = -1; - mFullscreenRefresh = -1; - - LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL; - return FALSE; - } - } - else - { - mFullscreen = FALSE; - window_rect.left = (long) (posp ? posp->mX : 0); - window_rect.right = (long) width + window_rect.left; // Windows GDI rects don't include rightmost pixel - window_rect.top = (long) (posp ? posp->mY : 0); - window_rect.bottom = (long) height + window_rect.top; - // Window with an edge - dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; - dw_style = WS_OVERLAPPEDWINDOW; - } - - // don't post quit messages when destroying old windows - mPostQuit = FALSE; - - // create window - DestroyWindow(mWindowHandle); - mWindowHandle = CreateWindowEx(dw_ex_style, - mWindowClassName, - mWindowTitle, - WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, - window_rect.left, // x pos - window_rect.top, // y pos - window_rect.right - window_rect.left, // width - window_rect.bottom - window_rect.top, // height - NULL, - NULL, - mhInstance, - NULL); - - //----------------------------------------------------------------------- - // Create GL drawing context - //----------------------------------------------------------------------- - static PIXELFORMATDESCRIPTOR pfd = - { - sizeof(PIXELFORMATDESCRIPTOR), - 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, - PFD_TYPE_RGBA, - BITS_PER_PIXEL, - 0, 0, 0, 0, 0, 0, // RGB bits and shift, unused - 8, // alpha bits - 0, // alpha shift - 0, // accum bits - 0, 0, 0, 0, // accum RGBA - 24, // depth bits - 8, // stencil bits, avi added for stencil test - 0, - PFD_MAIN_PLANE, - 0, - 0, 0, 0 - }; - - if (!(mhDC = GetDC(mWindowHandle))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBDevContextErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - // Verify what pixel format we actually received. - if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), - &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cColorBits < 32) - { - close(); - OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cAlphaBits < 8) - { - close(); - OSMessageBox(mCallbacks->translateString("MBAlpha"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!SetPixelFormat(mhDC, pixel_format, &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(mhRC = wglCreateContext(mhDC))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!wglMakeCurrent(mhDC, mhRC)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - gGLManager.initWGL(); - - if (wglChoosePixelFormatARB) - { - // OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we - // can get exactly what we want. - GLint attrib_list[256]; - S32 cur_attrib = 0; - - attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB; - attrib_list[cur_attrib++] = 24; - - attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB; - attrib_list[cur_attrib++] = 8; - - attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB; - attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB; - - attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB; - attrib_list[cur_attrib++] = 24; - - attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB; - attrib_list[cur_attrib++] = 8; - - U32 end_attrib = 0; - if (mFSAASamples > 0) - { - end_attrib = cur_attrib; - attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB; - attrib_list[cur_attrib++] = GL_TRUE; - - attrib_list[cur_attrib++] = WGL_SAMPLES_ARB; - attrib_list[cur_attrib++] = mFSAASamples; - } - - // End the list - attrib_list[cur_attrib++] = 0; - - GLint pixel_formats[256]; - U32 num_formats = 0; - - // First we try and get a 32 bit depth pixel format - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit"); - return FALSE; - } - - if (!num_formats) - { - if (end_attrib > 0) - { - LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL; - attrib_list[end_attrib] = 0; - - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA"); - return FALSE; - } - } - - if (!num_formats) - { - LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL; - // Try 24-bit format - attrib_list[1] = 24; - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit"); - return FALSE; - } - - if (!num_formats) - { - LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL; - attrib_list[1] = 16; - BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); - if (!result || !num_formats) - { - close(); - show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit"); - return FALSE; - } - } - } - - LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL; - } - - - - S32 swap_method = 0; - S32 cur_format = num_formats-1; - GLint swap_query = WGL_SWAP_METHOD_ARB; - - BOOL found_format = FALSE; - - while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) - { - if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0) - { - found_format = TRUE; - } - else - { - --cur_format; - } - } - - pixel_format = pixel_formats[cur_format]; - - if (mhDC != 0) // Does The Window Have A Device Context? - { - wglMakeCurrent(mhDC, 0); // Set The Current Active Rendering Context To Zero - if (mhRC != 0) // Does The Window Have A Rendering Context? - { - wglDeleteContext (mhRC); // Release The Rendering Context - mhRC = 0; // Zero The Rendering Context - - } - ReleaseDC (mWindowHandle, mhDC); // Release The Device Context - mhDC = 0; // Zero The Device Context - } - DestroyWindow (mWindowHandle); // Destroy The Window - - - mWindowHandle = CreateWindowEx(dw_ex_style, - mWindowClassName, - mWindowTitle, - WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, - window_rect.left, // x pos - window_rect.top, // y pos - window_rect.right - window_rect.left, // width - window_rect.bottom - window_rect.top, // height - NULL, - NULL, - mhInstance, - NULL); - - if (!(mhDC = GetDC(mWindowHandle))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!SetPixelFormat(mhDC, pixel_format, &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), - mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) - { - switch (swap_method) - { - case WGL_SWAP_EXCHANGE_ARB: - mSwapMethod = SWAP_METHOD_EXCHANGE; - LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL; - break; - case WGL_SWAP_COPY_ARB: - mSwapMethod = SWAP_METHOD_COPY; - LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL; - break; - case WGL_SWAP_UNDEFINED_ARB: - mSwapMethod = SWAP_METHOD_UNDEFINED; - LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL; - break; - default: - mSwapMethod = SWAP_METHOD_UNDEFINED; - LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL; - break; - } - } - } - else - { - LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL; - } - - // Verify what pixel format we actually received. - if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), - &pfd)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) - << " Alpha Bits " << S32(pfd.cAlphaBits) - << " Depth Bits " << S32(pfd.cDepthBits) - << LL_ENDL; - - // make sure we have 32 bits per pixel - if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32) - { - close(); - OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (pfd.cAlphaBits < 8) - { - close(); - OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!(mhRC = wglCreateContext(mhDC))) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!wglMakeCurrent(mhDC, mhRC)) - { - close(); - OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - if (!gGLManager.initGL()) - { - close(); - OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK); - return FALSE; - } - - // Disable vertical sync for swap - if (disable_vsync && wglSwapIntervalEXT) - { - LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL; - wglSwapIntervalEXT(0); - } - else - { - LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL; - } - - SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); - - // register this window as handling drag/drop events from the OS - DragAcceptFiles( mWindowHandle, TRUE ); - - mDragDrop->init( mWindowHandle ); - - //register joystick timer callback - SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer - - // ok to post quit messages now - mPostQuit = TRUE; - - if (auto_show) - { - show(); - glClearColor(0.0f, 0.0f, 0.0f, 0.f); - glClear(GL_COLOR_BUFFER_BIT); - swapBuffers(); - } - - return TRUE; -} - -void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size ) -{ - if( mIsMouseClipping ) - { - RECT client_rect_in_screen_space; - if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) - { - ClipCursor( &client_rect_in_screen_space ); - } - } - - // if the window was already maximized, MoveWindow seems to still set the maximized flag even if - // the window is smaller than maximized. - // So we're going to do a restore first (which is a ShowWindow call) (SL-44655). - - // THIS CAUSES DEV-15484 and DEV-15949 - //ShowWindow(mWindowHandle, SW_RESTORE); - // NOW we can call MoveWindow - MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE); -} - -BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position) -{ - LLCoordScreen screen_pos; - - mMousePositionModified = TRUE; - if (!mWindowHandle) - { - return FALSE; - } - - if (!convertCoords(position, &screen_pos)) - { - return FALSE; - } - - // Inform the application of the new mouse position (needed for per-frame - // hover/picking to function). - LLCoordGL gl_pos; - convertCoords(position, &gl_pos); - mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); - - // DEV-18951 VWR-8524 Camera moves wildly when alt-clicking. - // Because we have preemptively notified the application of the new - // mouse position via handleMouseMove() above, we need to clear out - // any stale mouse move events. RN/JC - MSG msg; - while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) - { } - - return SetCursorPos(screen_pos.mX, screen_pos.mY); -} - -BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position) -{ - POINT cursor_point; - LLCoordScreen screen_pos; - - if (!mWindowHandle || - !GetCursorPos(&cursor_point)) - { - return FALSE; - } - - screen_pos.mX = cursor_point.x; - screen_pos.mY = cursor_point.y; - - return convertCoords(screen_pos, position); -} - -void LLWindowWin32::hideCursor() -{ - while (ShowCursor(FALSE) >= 0) - { - // nothing, wait for cursor to push down - } - mCursorHidden = TRUE; - mHideCursorPermanent = TRUE; -} - -void LLWindowWin32::showCursor() -{ - // makes sure the cursor shows up - while (ShowCursor(TRUE) < 0) - { - // do nothing, wait for cursor to pop out - } - mCursorHidden = FALSE; - mHideCursorPermanent = FALSE; -} - -void LLWindowWin32::showCursorFromMouseMove() -{ - if (!mHideCursorPermanent) - { - showCursor(); - } -} - -void LLWindowWin32::hideCursorUntilMouseMove() -{ - if (!mHideCursorPermanent) - { - hideCursor(); - mHideCursorPermanent = FALSE; - } -} - -BOOL LLWindowWin32::isCursorHidden() -{ - return mCursorHidden; -} - - -HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name) -{ - return (HCURSOR)LoadImage(mhInstance, - name, - IMAGE_CURSOR, - 0, // default width - 0, // default height - LR_DEFAULTCOLOR); -} - - -void LLWindowWin32::initCursors() -{ - mCursor[ UI_CURSOR_ARROW ] = LoadCursor(NULL, IDC_ARROW); - mCursor[ UI_CURSOR_WAIT ] = LoadCursor(NULL, IDC_WAIT); - mCursor[ UI_CURSOR_HAND ] = LoadCursor(NULL, IDC_HAND); - mCursor[ UI_CURSOR_IBEAM ] = LoadCursor(NULL, IDC_IBEAM); - mCursor[ UI_CURSOR_CROSS ] = LoadCursor(NULL, IDC_CROSS); - mCursor[ UI_CURSOR_SIZENWSE ] = LoadCursor(NULL, IDC_SIZENWSE); - mCursor[ UI_CURSOR_SIZENESW ] = LoadCursor(NULL, IDC_SIZENESW); - mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); - mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); - mCursor[ UI_CURSOR_NO ] = LoadCursor(NULL, IDC_NO); - mCursor[ UI_CURSOR_WORKING ] = LoadCursor(NULL, IDC_APPSTARTING); - - HMODULE module = GetModuleHandle(NULL); - mCursor[ UI_CURSOR_TOOLGRAB ] = LoadCursor(module, TEXT("TOOLGRAB")); - mCursor[ UI_CURSOR_TOOLLAND ] = LoadCursor(module, TEXT("TOOLLAND")); - mCursor[ UI_CURSOR_TOOLFOCUS ] = LoadCursor(module, TEXT("TOOLFOCUS")); - mCursor[ UI_CURSOR_TOOLCREATE ] = LoadCursor(module, TEXT("TOOLCREATE")); - mCursor[ UI_CURSOR_ARROWDRAG ] = LoadCursor(module, TEXT("ARROWDRAG")); - mCursor[ UI_CURSOR_ARROWCOPY ] = LoadCursor(module, TEXT("ARROWCOPY")); - mCursor[ UI_CURSOR_ARROWDRAGMULTI ] = LoadCursor(module, TEXT("ARROWDRAGMULTI")); - mCursor[ UI_CURSOR_ARROWCOPYMULTI ] = LoadCursor(module, TEXT("ARROWCOPYMULTI")); - mCursor[ UI_CURSOR_NOLOCKED ] = LoadCursor(module, TEXT("NOLOCKED")); - mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED")); - mCursor[ UI_CURSOR_GRABLOCKED ] = LoadCursor(module, TEXT("GRABLOCKED")); - mCursor[ UI_CURSOR_TOOLTRANSLATE ] = LoadCursor(module, TEXT("TOOLTRANSLATE")); - mCursor[ UI_CURSOR_TOOLROTATE ] = LoadCursor(module, TEXT("TOOLROTATE")); - mCursor[ UI_CURSOR_TOOLSCALE ] = LoadCursor(module, TEXT("TOOLSCALE")); - mCursor[ UI_CURSOR_TOOLCAMERA ] = LoadCursor(module, TEXT("TOOLCAMERA")); - mCursor[ UI_CURSOR_TOOLPAN ] = LoadCursor(module, TEXT("TOOLPAN")); - mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN")); - mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3")); - mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); - - // Color cursors - mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); - mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); - mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); - - // Note: custom cursors that are not found make LoadCursor() return NULL. - for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) - { - if( !mCursor[i] ) - { - mCursor[i] = LoadCursor(NULL, IDC_ARROW); - } - } -} - - - -void LLWindowWin32::setCursor(ECursorType cursor) -{ - if (cursor == UI_CURSOR_ARROW - && mBusyCount > 0) - { - cursor = UI_CURSOR_WORKING; - } - - if( mCurrentCursor != cursor ) - { - mCurrentCursor = cursor; - SetCursor( mCursor[cursor] ); - } -} - -ECursorType LLWindowWin32::getCursor() const -{ - return mCurrentCursor; -} - -void LLWindowWin32::captureMouse() -{ - SetCapture(mWindowHandle); -} - -void LLWindowWin32::releaseMouse() -{ - // *NOTE:Mani ReleaseCapture will spawn new windows messages... - // which will in turn call our MainWindowProc. It therefore requires - // pausing *and more importantly resumption* of the mainlooptimeout... - // just like DispatchMessage below. - mCallbacks->handlePauseWatchdog(this); - ReleaseCapture(); - mCallbacks->handleResumeWatchdog(this); -} - - -void LLWindowWin32::delayInputProcessing() -{ - mInputProcessingPaused = TRUE; -} - -void LLWindowWin32::gatherInput() -{ - MSG msg; - int msg_count = 0; - - LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) - { - mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); - TranslateMessage(&msg); - - // turn watchdog off in here to not fail if windows is doing something wacky - mCallbacks->handlePauseWatchdog(this); - DispatchMessage(&msg); - mCallbacks->handleResumeWatchdog(this); - msg_count++; - - if ( mInputProcessingPaused ) - { - break; - } - /* Attempted workaround for problem where typing fast and hitting - return would result in only part of the text being sent. JC - - BOOL key_posted = TranslateMessage(&msg); - DispatchMessage(&msg); - msg_count++; - - // If a key was translated, a WM_CHAR might have been posted to the end - // of the event queue. We need it immediately. - if (key_posted && msg.message == WM_KEYDOWN) - { - if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - msg_count++; - } - } - */ - mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput"); - // For async host by name support. Really hacky. - if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) - { - gAsyncMsgCallback(msg); - } - } - - mInputProcessingPaused = FALSE; - - // clear this once we've processed all mouse messages that might have occurred after - // we slammed the mouse position - mMousePositionModified = FALSE; -} - -static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard"); -static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse"); - -LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param) -{ - LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA); - - - if (NULL != window_imp) - { - window_imp->mCallbacks->handleResumeWatchdog(window_imp); - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc"); - // Has user provided their own window callback? - if (NULL != window_imp->mWndProc) - { - if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param)) - { - // user has handled window message - return 0; - } - } - - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc"); - - // Juggle to make sure we can get negative positions for when - // mouse is outside window. - LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)); - - // This doesn't work, as LOWORD returns unsigned short. - //LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param)); - LLCoordGL gl_coord; - - // pass along extended flag in mask - MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0; - BOOL eat_keystroke = TRUE; - - switch(u_msg) - { - RECT update_rect; - S32 update_width; - S32 update_height; - - case WM_TIMER: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER"); - window_imp->mCallbacks->handleTimerEvent(window_imp); - break; - - case WM_DEVICECHANGE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE"); - if (gDebugWindowProc) - { - llinfos << " WM_DEVICECHANGE: wParam=" << w_param - << "; lParam=" << l_param << llendl; - } - if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL) - { - if (window_imp->mCallbacks->handleDeviceChange(window_imp)) - { - return 0; - } - } - break; - - case WM_PAINT: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT"); - GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE); - update_width = update_rect.right - update_rect.left + 1; - update_height = update_rect.bottom - update_rect.top + 1; - window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top, - update_width, update_height); - break; - case WM_PARENTNOTIFY: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY"); - u_msg = u_msg; - break; - - case WM_SETCURSOR: - // This message is sent whenever the cursor is moved in a window. - // You need to set the appropriate cursor appearance. - - // Only take control of cursor over client region of window - // This allows Windows(tm) to handle resize cursors, etc. - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR"); - if (LOWORD(l_param) == HTCLIENT) - { - SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] ); - return 0; - } - break; - - case WM_ENTERMENULOOP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP"); - window_imp->mCallbacks->handleWindowBlock(window_imp); - break; - - case WM_EXITMENULOOP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP"); - window_imp->mCallbacks->handleWindowUnblock(window_imp); - break; - - case WM_ACTIVATEAPP: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP"); - { - // This message should be sent whenever the app gains or loses focus. - BOOL activating = (BOOL) w_param; - BOOL minimized = window_imp->getMinimized(); - - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC ActivateApp " - << " activating " << S32(activating) - << " minimized " << S32(minimized) - << " fullscreen " << S32(window_imp->mFullscreen) - << LL_ENDL; - } - - if (window_imp->mFullscreen) - { - // When we run fullscreen, restoring or minimizing the app needs - // to switch the screen resolution - if (activating) - { - window_imp->setFullscreenResolution(); - window_imp->restore(); - } - else - { - window_imp->minimize(); - window_imp->resetDisplayResolution(); - } - } - - window_imp->mCallbacks->handleActivateApp(window_imp, activating); - - break; - } - - case WM_ACTIVATE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE"); - { - // Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE - BOOL activating = (LOWORD(w_param) != WA_INACTIVE); - - BOOL minimized = BOOL(HIWORD(w_param)); - - if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // JC - I'm not sure why, but if we don't report that we handled the - // WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work - // properly when we run fullscreen. - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC Activate " - << " activating " << S32(activating) - << " minimized " << S32(minimized) - << LL_ENDL; - } - - // Don't handle this. - break; - } - - case WM_QUERYOPEN: - // TODO: use this to return a nice icon - break; - - case WM_SYSCOMMAND: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND"); - switch(w_param) - { - case SC_KEYMENU: - // Disallow the ALT key from triggering the default system menu. - return 0; - - case SC_SCREENSAVE: - case SC_MONITORPOWER: - // eat screen save messages and prevent them! - return 0; - } - break; - - case WM_CLOSE: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE"); - // Will the app allow the window to close? - if (window_imp->mCallbacks->handleCloseRequest(window_imp)) - { - // Get the app to initiate cleanup. - window_imp->mCallbacks->handleQuit(window_imp); - // The app is responsible for calling destroyWindow when done with GL - } - return 0; - - case WM_DESTROY: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY"); - if (window_imp->shouldPostQuit()) - { - PostQuitMessage(0); // Posts WM_QUIT with an exit code of 0 - } - return 0; - - case WM_COMMAND: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND"); - if (!HIWORD(w_param)) // this message is from a menu - { - window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param)); - } - break; - - case WM_SYSKEYDOWN: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN"); - // allow system keys, such as ALT-F4 to be processed by Windows - eat_keystroke = FALSE; - case WM_KEYDOWN: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); - { - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN " - << " key " << S32(w_param) - << LL_ENDL; - } - if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke) - { - return 0; - } - // pass on to windows if we didn't handle it - break; - } - case WM_SYSKEYUP: - eat_keystroke = FALSE; - case WM_KEYUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); - LLFastTimer t2(FTM_KEYHANDLER); - - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " - << " key " << S32(w_param) - << LL_ENDL; - } - if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke) - { - return 0; - } - - // pass on to windows - break; - } - case WM_IME_SETCONTEXT: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_SETCONTEXT" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW; - // Invoke DefWinProc with the modified LPARAM. - } - break; - - case WM_IME_STARTCOMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_STARTCOMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->handleStartCompositionMessage(); - return 0; - } - break; - - case WM_IME_ENDCOMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_ENDCOMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - return 0; - } - break; - - case WM_IME_COMPOSITION: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_COMPOSITION" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->handleCompositionMessage(l_param); - return 0; - } - break; - - case WM_IME_REQUEST: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST"); - if (gDebugWindowProc) - { - llinfos << "WM_IME_REQUEST" << llendl; - } - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - LRESULT result = 0; - if (window_imp->handleImeRequests(w_param, l_param, &result)) - { - return result; - } - } - break; - - case WM_CHAR: - // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need - // to figure out how that works. - Doug - // - // ... Well, I don't think so. - // How it works is explained in Win32 API document, but WM_UNICHAR didn't work - // as specified at least on Windows XP SP1 Japanese version. I have never used - // it since then, and I'm not sure whether it has been fixed now, but I don't think - // it is worth trying. The good old WM_CHAR works just fine even for supplementary - // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's - // by ourselves. It is not that tough. -- Alissa Sabre @ SL - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "Debug WindowProc WM_CHAR " - << " key " << S32(w_param) - << LL_ENDL; - } - // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, - // we *did* processed the event, so I believe we should not pass it to DefWindowProc... - window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE)); - return 0; - - case WM_LBUTTONDOWN: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_LBUTTONDBLCLK: - //RN: ignore right button double clicks for now - //case WM_RBUTTONDBLCLK: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK"); - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) - { - return 0; - } - } - break; - - case WM_LBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - //if (gDebugClicks) - //{ - // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL; - //} - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_RBUTTONDBLCLK: - case WM_RBUTTONDOWN: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in the llviewerapp, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_RBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - // Because we move the cursor position in the app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MBUTTONDOWN: -// case WM_MBUTTONDBLCLK: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN"); - LLFastTimer t2(FTM_MOUSEHANDLER); - if (LLWinImm::isAvailable() && window_imp->mPreeditor) - { - window_imp->interruptLanguageTextInput(); - } - - // Because we move the cursor position in tllviewerhe app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MBUTTONUP: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP"); - LLFastTimer t2(FTM_MOUSEHANDLER); - // Because we move the cursor position in the llviewer app, we need to query - // to find out where the cursor at the time the event is handled. - // If we don't do this, many clicks could get buffered up, and if the - // first click changes the cursor position, all subsequent clicks - // will occur at the wrong location. JC - LLCoordWindow cursor_coord_window; - if (window_imp->mMousePositionModified) - { - window_imp->getCursorPosition(&cursor_coord_window); - window_imp->convertCoords(cursor_coord_window, &gl_coord); - } - else - { - window_imp->convertCoords(window_coord, &gl_coord); - } - MASK mask = gKeyboard->currentMask(TRUE); - // generate move event to update mouse coordinates - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) - { - return 0; - } - } - break; - - case WM_MOUSEWHEEL: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL"); - static short z_delta = 0; - - RECT client_rect; - - // eat scroll events that occur outside our window, since we use mouse position to direct scroll - // instead of keyboard focus - // NOTE: mouse_coord is in *window* coordinates for scroll events - POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)}; - - if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord) - && GetClientRect(window_imp->mWindowHandle, &client_rect)) - { - // we have a valid mouse point and client rect - if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x - || mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y) - { - // mouse is outside of client rect, so don't do anything - return 0; - } - } - - S16 incoming_z_delta = HIWORD(w_param); - z_delta += incoming_z_delta; - // cout << "z_delta " << z_delta << endl; - - // current mouse wheels report changes in increments of zDelta (+120, -120) - // Future, higher resolution mouse wheels may report smaller deltas. - // So we sum the deltas and only act when we've exceeded WHEEL_DELTA - // - // If the user rapidly spins the wheel, we can get messages with - // large deltas, like 480 or so. Thus we need to scroll more quickly. - if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta) - { - window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA); - z_delta = 0; - } - return 0; - } - /* - // TODO: add this after resolving _WIN32_WINNT issue - case WM_MOUSELEAVE: - { - window_imp->mCallbacks->handleMouseLeave(window_imp); - - // TRACKMOUSEEVENT track_mouse_event; - // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); - // track_mouse_event.dwFlags = TME_LEAVE; - // track_mouse_event.hwndTrack = h_wnd; - // track_mouse_event.dwHoverTime = HOVER_DEFAULT; - // TrackMouseEvent( &track_mouse_event ); - return 0; - } - */ - // Handle mouse movement within the window - case WM_MOUSEMOVE: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE"); - window_imp->convertCoords(window_coord, &gl_coord); - MASK mask = gKeyboard->currentMask(TRUE); - window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); - return 0; - } - - case WM_SIZE: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE"); - S32 width = S32( LOWORD(l_param) ); - S32 height = S32( HIWORD(l_param) ); - - if (gDebugWindowProc) - { - BOOL maximized = ( w_param == SIZE_MAXIMIZED ); - BOOL restored = ( w_param == SIZE_RESTORED ); - BOOL minimized = ( w_param == SIZE_MINIMIZED ); - - LL_INFOS("Window") << "WINDOWPROC Size " - << width << "x" << height - << " max " << S32(maximized) - << " min " << S32(minimized) - << " rest " << S32(restored) - << LL_ENDL; - } - - // There's an odd behavior with WM_SIZE that I would call a bug. If - // the window is maximized, and you call MoveWindow() with a size smaller - // than a maximized window, it ends up sending WM_SIZE with w_param set - // to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work. - // (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see - // LLWindowWin32::moveWindow in this file). - - // If we are now restored, but we weren't before, this - // means that the window was un-minimized. - if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED) - { - window_imp->mCallbacks->handleActivate(window_imp, TRUE); - } - - // handle case of window being maximized from fully minimized state - if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED) - { - window_imp->mCallbacks->handleActivate(window_imp, TRUE); - } - - // Also handle the minimization case - if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED) - { - window_imp->mCallbacks->handleActivate(window_imp, FALSE); - } - - // Actually resize all of our views - if (w_param != SIZE_MINIMIZED) - { - // Ignore updates for minimizing and minimized "windows" - window_imp->mCallbacks->handleResize( window_imp, - LOWORD(l_param), - HIWORD(l_param) ); - } - - window_imp->mLastSizeWParam = w_param; - - return 0; - } - - case WM_SETFOCUS: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL; - } - window_imp->mCallbacks->handleFocus(window_imp); - return 0; - - case WM_KILLFOCUS: - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS"); - if (gDebugWindowProc) - { - LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL; - } - window_imp->mCallbacks->handleFocusLost(window_imp); - return 0; - - case WM_COPYDATA: - { - window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); - // received a URL - PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; - window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); - }; - return 0; - - break; - } - - window_imp->mCallbacks->handlePauseWatchdog(window_imp); - } - - - // pass unhandled messages down to Windows - return DefWindowProc(h_wnd, u_msg, w_param, l_param); -} - -BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to) -{ - S32 client_height; - RECT client_rect; - LLCoordWindow window_position; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == to) - { - return FALSE; - } - - to->mX = from.mX; - client_height = client_rect.bottom - client_rect.top; - to->mY = client_height - from.mY - 1; - - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to) -{ - S32 client_height; - RECT client_rect; - - if (!mWindowHandle || - !GetClientRect(mWindowHandle, &client_rect) || - NULL == to) - { - return FALSE; - } - - to->mX = from.mX; - client_height = client_rect.bottom - client_rect.top; - to->mY = client_height - from.mY - 1; - - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to) -{ - POINT mouse_point; - - mouse_point.x = from.mX; - mouse_point.y = from.mY; - BOOL result = ScreenToClient(mWindowHandle, &mouse_point); - - if (result) - { - to->mX = mouse_point.x; - to->mY = mouse_point.y; - } - - return result; -} - -BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to) -{ - POINT mouse_point; - - mouse_point.x = from.mX; - mouse_point.y = from.mY; - BOOL result = ClientToScreen(mWindowHandle, &mouse_point); - - if (result) - { - to->mX = mouse_point.x; - to->mY = mouse_point.y; - } - - return result; -} - -BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to) -{ - LLCoordWindow window_coord; - - if (!mWindowHandle || (NULL == to)) - { - return FALSE; - } - - convertCoords(from, &window_coord); - convertCoords(window_coord, to); - return TRUE; -} - -BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to) -{ - LLCoordWindow window_coord; - - if (!mWindowHandle || (NULL == to)) - { - return FALSE; - } - - convertCoords(from, &window_coord); - convertCoords(window_coord, to); - return TRUE; -} - - -BOOL LLWindowWin32::isClipboardTextAvailable() -{ - return IsClipboardFormatAvailable(CF_UNICODETEXT); -} - - -BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst) -{ - BOOL success = FALSE; - - if (IsClipboardFormatAvailable(CF_UNICODETEXT)) - { - if (OpenClipboard(mWindowHandle)) - { - HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT); - if (h_data) - { - WCHAR *utf16str = (WCHAR*) GlobalLock(h_data); - if (utf16str) - { - dst = utf16str_to_wstring(utf16str); - LLWStringUtil::removeCRLF(dst); - GlobalUnlock(h_data); - success = TRUE; - } - } - CloseClipboard(); - } - } - - return success; -} - - -BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr) -{ - BOOL success = FALSE; - - if (OpenClipboard(mWindowHandle)) - { - EmptyClipboard(); - - // Provide a copy of the data in Unicode format. - LLWString sanitized_string(wstr); - LLWStringUtil::addCRLF(sanitized_string); - llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); - const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); - - // Memory is allocated and then ownership of it is transfered to the system. - HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); - if (hglobal_copy_utf16) - { - WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16); - if (copy_utf16) - { - memcpy(copy_utf16, out_utf16.c_str(), size_utf16); /* Flawfinder: ignore */ - GlobalUnlock(hglobal_copy_utf16); - - if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16)) - { - success = TRUE; - } - } - } - - CloseClipboard(); - } - - return success; -} - -// Constrains the mouse to the window. -void LLWindowWin32::setMouseClipping( BOOL b ) -{ - if( b != mIsMouseClipping ) - { - BOOL success = FALSE; - - if( b ) - { - GetClipCursor( &mOldMouseClip ); - - RECT client_rect_in_screen_space; - if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) - { - success = ClipCursor( &client_rect_in_screen_space ); - } - } - else - { - // Must restore the old mouse clip, which may be set by another window. - success = ClipCursor( &mOldMouseClip ); - SetRect( &mOldMouseClip, 0, 0, 0, 0 ); - } - - if( success ) - { - mIsMouseClipping = b; - } - } -} - -BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp ) -{ - BOOL success = FALSE; - - RECT client_rect; - if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) ) - { - POINT top_left; - top_left.x = client_rect.left; - top_left.y = client_rect.top; - ClientToScreen(mWindowHandle, &top_left); - - POINT bottom_right; - bottom_right.x = client_rect.right; - bottom_right.y = client_rect.bottom; - ClientToScreen(mWindowHandle, &bottom_right); - - SetRect( rectp, - top_left.x, - top_left.y, - bottom_right.x, - bottom_right.y ); - - success = TRUE; - } - - return success; -} - -void LLWindowWin32::flashIcon(F32 seconds) -{ - FLASHWINFO flash_info; - - flash_info.cbSize = sizeof(FLASHWINFO); - flash_info.hwnd = mWindowHandle; - flash_info.dwFlags = FLASHW_TRAY; - flash_info.uCount = UINT(seconds / ICON_FLASH_TIME); - flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds - FlashWindowEx(&flash_info); -} - -F32 LLWindowWin32::getGamma() -{ - return mCurrentGamma; -} - -BOOL LLWindowWin32::restoreGamma() -{ - return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); -} - -BOOL LLWindowWin32::setGamma(const F32 gamma) -{ - mCurrentGamma = gamma; - - LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; - - for ( int i = 0; i < 256; ++i ) - { - int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f ); - - int value = mult * i; - - if ( value > 0xffff ) - value = 0xffff; - - mCurrentGammaRamp [ 0 * 256 + i ] = - mCurrentGammaRamp [ 1 * 256 + i ] = - mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value; - }; - - return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp ); -} - -void LLWindowWin32::setFSAASamples(const U32 fsaa_samples) -{ - mFSAASamples = fsaa_samples; -} - -U32 LLWindowWin32::getFSAASamples() -{ - return mFSAASamples; -} - -LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions) -{ - if (!mSupportedResolutions) - { - mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS]; - DEVMODE dev_mode; - - mNumSupportedResolutions = 0; - for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++) - { - if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) - { - break; - } - - if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL && - dev_mode.dmPelsWidth >= 800 && - dev_mode.dmPelsHeight >= 600) - { - BOOL resolution_exists = FALSE; - for(S32 i = 0; i < mNumSupportedResolutions; i++) - { - if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth && - mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight) - { - resolution_exists = TRUE; - } - } - if (!resolution_exists) - { - mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth; - mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight; - mNumSupportedResolutions++; - } - } - } - } - - num_resolutions = mNumSupportedResolutions; - return mSupportedResolutions; -} - - -F32 LLWindowWin32::getNativeAspectRatio() -{ - if (mOverrideAspectRatio > 0.f) - { - return mOverrideAspectRatio; - } - else if (mNativeAspectRatio > 0.f) - { - // we grabbed this value at startup, based on the user's desktop settings - return mNativeAspectRatio; - } - // RN: this hack presumes that the largest supported resolution is monitor-limited - // and that pixels in that mode are square, therefore defining the native aspect ratio - // of the monitor...this seems to work to a close approximation for most CRTs/LCDs - S32 num_resolutions; - LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions); - - return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight); -} - -F32 LLWindowWin32::getPixelAspectRatio() -{ - F32 pixel_aspect = 1.f; - if (getFullscreen()) - { - LLCoordScreen screen_size; - getSize(&screen_size); - pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX; - } - - return pixel_aspect; -} - -// Change display resolution. Returns true if successful. -// protected -BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh) -{ - DEVMODE dev_mode; - dev_mode.dmSize = sizeof(dev_mode); - BOOL success = FALSE; - - // Don't change anything if we don't have to - if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) - { - if (dev_mode.dmPelsWidth == width && - dev_mode.dmPelsHeight == height && - dev_mode.dmBitsPerPel == bits && - dev_mode.dmDisplayFrequency == refresh ) - { - // ...display mode identical, do nothing - return TRUE; - } - } - - memset(&dev_mode, 0, sizeof(dev_mode)); - dev_mode.dmSize = sizeof(dev_mode); - dev_mode.dmPelsWidth = width; - dev_mode.dmPelsHeight = height; - dev_mode.dmBitsPerPel = bits; - dev_mode.dmDisplayFrequency = refresh; - dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY; - - // CDS_FULLSCREEN indicates that this is a temporary change to the device mode. - LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN); - - success = (DISP_CHANGE_SUCCESSFUL == cds_result); - - if (!success) - { - LL_WARNS("Window") << "setDisplayResolution failed, " - << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL; - } - - return success; -} - -// protected -BOOL LLWindowWin32::setFullscreenResolution() -{ - if (mFullscreen) - { - return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh); - } - else - { - return FALSE; - } -} - -// protected -BOOL LLWindowWin32::resetDisplayResolution() -{ - LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL; - - LONG cds_result = ChangeDisplaySettings(NULL, 0); - - BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result); - - if (!success) - { - LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL; - } - - LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL; - - return success; -} - -void LLWindowWin32::swapBuffers() -{ - SwapBuffers(mhDC); -} - - -// -// LLSplashScreenImp -// -LLSplashScreenWin32::LLSplashScreenWin32() -: mWindow(NULL) -{ -} - -LLSplashScreenWin32::~LLSplashScreenWin32() -{ -} - -void LLSplashScreenWin32::showImpl() -{ - // This appears to work. ??? - HINSTANCE hinst = GetModuleHandle(NULL); - - mWindow = CreateDialog(hinst, - TEXT("SPLASHSCREEN"), - NULL, // no parent - (DLGPROC) LLSplashScreenWin32::windowProc); - ShowWindow(mWindow, SW_SHOW); -} - - -void LLSplashScreenWin32::updateImpl(const std::string& mesg) -{ - if (!mWindow) return; - - WCHAR w_mesg[1024]; - mbstowcs(w_mesg, mesg.c_str(), 1024); - - SendDlgItemMessage(mWindow, - 666, // HACK: text id - WM_SETTEXT, - FALSE, - (LPARAM)w_mesg); -} - - -void LLSplashScreenWin32::hideImpl() -{ - if (mWindow) - { - DestroyWindow(mWindow); - mWindow = NULL; - } -} - - -// static -LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg, - WPARAM w_param, LPARAM l_param) -{ - // Just give it to windows - return DefWindowProc(h_wnd, u_msg, w_param, l_param); -} - -// -// Helper Funcs -// - -S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type) -{ - UINT uType; - - switch(type) - { - case OSMB_OK: - uType = MB_OK; - break; - case OSMB_OKCANCEL: - uType = MB_OKCANCEL; - break; - case OSMB_YESNO: - uType = MB_YESNO; - break; - default: - uType = MB_OK; - break; - } - - // HACK! Doesn't properly handle wide strings! - int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType); - S32 retval; - - switch(retval_win) - { - case IDYES: - retval = OSBTN_YES; - break; - case IDNO: - retval = OSBTN_NO; - break; - case IDOK: - retval = OSBTN_OK; - break; - case IDCANCEL: - retval = OSBTN_CANCEL; - break; - default: - retval = OSBTN_CANCEL; - break; - } - - return retval; -} - - -void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) -{ - bool found = false; - S32 i; - for (i = 0; i < gURLProtocolWhitelistCount; i++) - { - if (escaped_url.find(gURLProtocolWhitelist[i]) == 0) - { - found = true; - break; - } - } - - if (!found) - { - LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL; - return; - } - - LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL; - - // replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work - // reliablly on Vista. - - // this is madness.. no, this is.. - LLWString url_wstring = utf8str_to_wstring( escaped_url ); - llutf16string url_utf16 = wstring_to_utf16str( url_wstring ); - - // let the OS decide what to use to open the URL - SHELLEXECUTEINFO sei = { sizeof( sei ) }; - sei.fMask = SEE_MASK_FLAG_DDEWAIT; - sei.nShow = SW_SHOWNORMAL; - sei.lpVerb = L"open"; - sei.lpFile = url_utf16.c_str(); - ShellExecuteEx( &sei ); - - //// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES - //// DELETE THIS ONCE THE MERGES ARE DONE - - // Figure out the user's default web browser - // HKEY_CLASSES_ROOT\http\shell\open\command - /* - std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command"; - WCHAR reg_path_wstr[256]; - mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) ); - - HKEY key; - WCHAR browser_open_wstr[1024]; - DWORD buffer_length = 1024; - RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key); - RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length); - RegCloseKey(key); - - // Convert to STL string - LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr); - - if (browser_open_wstring.length() < 2) - { - LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL; - return; - } - - // Extract the process that's supposed to be launched - LLWString browser_executable; - if (browser_open_wstring[0] == '"') - { - // executable is quoted, find the matching quote - size_t quote_pos = browser_open_wstring.find('"', 1); - // copy out the string including both quotes - browser_executable = browser_open_wstring.substr(0, quote_pos+1); - } - else - { - // executable not quoted, find a space - size_t space_pos = browser_open_wstring.find(' ', 1); - browser_executable = browser_open_wstring.substr(0, space_pos); - } - - LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL; - LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL; - - // Convert URL to wide string for Windows API - // Assume URL is UTF8, as can come from scripts - LLWString url_wstring = utf8str_to_wstring(escaped_url); - llutf16string url_utf16 = wstring_to_utf16str(url_wstring); - - // Convert executable and path to wide string for Windows API - llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable); - - // ShellExecute returns HINSTANCE for backwards compatiblity. - // MS docs say to cast to int and compare to 32. - HWND our_window = NULL; - LPCWSTR directory_wstr = NULL; - int retval = (int) ShellExecute(our_window, // Flawfinder: ignore - L"open", - browser_exec_utf16.c_str(), - url_utf16.c_str(), - directory_wstr, - SW_SHOWNORMAL); - if (retval > 32) - { - LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL; - } - else - { - LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL; - } - */ -} - - -BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b ) -{ - BOOL retval = FALSE; - - static CHOOSECOLOR cc; - static COLORREF crCustColors[16]; - cc.lStructSize = sizeof(CHOOSECOLOR); - cc.hwndOwner = mWindowHandle; - cc.hInstance = NULL; - cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f)); - //cc.rgbResult = RGB (0x80,0x80,0x80); - cc.lpCustColors = crCustColors; - cc.Flags = CC_RGBINIT | CC_FULLOPEN; - cc.lCustData = 0; - cc.lpfnHook = NULL; - cc.lpTemplateName = NULL; - - // This call is modal, so pause agent - //send_agent_pause(); // this is in newview and we don't want to set up a dependency - { - retval = ChooseColor(&cc); - } - //send_agent_resume(); // this is in newview and we don't want to set up a dependency - - *b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f; - - *g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f; - - *r = ((F32)(cc.rgbResult & 0xff)) / 255.f; - - return (retval); -} - -void *LLWindowWin32::getPlatformWindow() -{ - return (void*)mWindowHandle; -} - -void LLWindowWin32::bringToFront() -{ - BringWindowToTop(mWindowHandle); -} - -// set (OS) window focus back to the client -void LLWindowWin32::focusClient() -{ - SetFocus ( mWindowHandle ); -} - -void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) -{ - if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable()) - { - return; - } - - if (preeditor != mPreeditor && !b) - { - // This condition may occur with a call to - // setEnabled(BOOL) from LLTextEditor or LLLineEditor - // when the control is not focused. - // We need to silently ignore the case so that - // the language input status of the focused control - // is not disturbed. - return; - } - - // Take care of old and new preeditors. - if (preeditor != mPreeditor || !b) - { - if (sLanguageTextInputAllowed) - { - interruptLanguageTextInput(); - } - mPreeditor = (b ? preeditor : NULL); - } - - sLanguageTextInputAllowed = b; - - if ( sLanguageTextInputAllowed ) - { - // Allowing: Restore the previous IME status, so that the user has a feeling that the previous - // text input continues naturally. Be careful, however, the IME status is meaningful only during the user keeps - // using same Input Locale (aka Keyboard Layout). - if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::setOpenStatus(himc, TRUE); - LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode); - LLWinImm::releaseContext(mWindowHandle, himc); - } - } - else - { - // Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly. - // However, do it after saving the current IME status. We need to restore the status when - // allowing language text input again. - sWinInputLocale = GetKeyboardLayout(0); - sWinIMEOpened = LLWinImm::isIME(sWinInputLocale); - if (sWinIMEOpened) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - sWinIMEOpened = LLWinImm::getOpenStatus(himc); - if (sWinIMEOpened) - { - LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode); - - // We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's - // keyboard hooking, because Some IME reacts only on the former and some other on the latter... - LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode); - LLWinImm::setOpenStatus(himc, FALSE); - } - LLWinImm::releaseContext(mWindowHandle, himc); - } - } -} - -void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, - CANDIDATEFORM *form) -{ - LLCoordWindow caret_coord, top_left, bottom_right; - convertCoords(caret, &caret_coord); - convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); - convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); - - memset(form, 0, sizeof(CANDIDATEFORM)); - form->dwStyle = CFS_EXCLUDE; - form->ptCurrentPos.x = caret_coord.mX; - form->ptCurrentPos.y = caret_coord.mY; - form->rcArea.left = top_left.mX; - form->rcArea.top = top_left.mY; - form->rcArea.right = bottom_right.mX; - form->rcArea.bottom = bottom_right.mY; -} - - -// Put the IME window at the right place (near current text input). Point coordinates should be the top of the current text line. -void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position ) -{ - if (sLanguageTextInputAllowed && LLWinImm::isAvailable()) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - - LLCoordWindow win_pos; - convertCoords( position, &win_pos ); - - if ( win_pos.mX >= 0 && win_pos.mY >= 0 && - (win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) ) - { - COMPOSITIONFORM ime_form; - memset( &ime_form, 0, sizeof(ime_form) ); - ime_form.dwStyle = CFS_POINT; - ime_form.ptCurrentPos.x = win_pos.mX; - ime_form.ptCurrentPos.y = win_pos.mY; - - LLWinImm::setCompositionWindow( himc, &ime_form ); - - sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY ); - } - - LLWinImm::releaseContext(mWindowHandle, himc); - } -} - - -void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control, - IMECHARPOSITION *char_position) -{ - LLCoordScreen caret_coord, top_left, bottom_right; - convertCoords(caret, &caret_coord); - convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); - convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); - - char_position->pt.x = caret_coord.mX; - char_position->pt.y = top_left.mY; // Windows wants the coordinate of upper left corner of a character... - char_position->cLineHeight = bottom_right.mY - top_left.mY; - char_position->rcDocument.left = top_left.mX; - char_position->rcDocument.top = top_left.mY; - char_position->rcDocument.right = bottom_right.mX; - char_position->rcDocument.bottom = bottom_right.mY; -} - -void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont) -{ - // Our font is a list of FreeType recognized font files that may - // not have a corresponding ones in Windows' fonts. Hence, we - // can't simply tell Windows which font we are using. We will - // notify a _standard_ font for a current input locale instead. - // We use a hard-coded knowledge about the Windows' standard - // configuration to do so... - - memset(logfont, 0, sizeof(LOGFONT)); - - const WORD lang_id = LOWORD(GetKeyboardLayout(0)); - switch (PRIMARYLANGID(lang_id)) - { - case LANG_CHINESE: - // We need to identify one of two Chinese fonts. - switch (SUBLANGID(lang_id)) - { - case SUBLANG_CHINESE_SIMPLIFIED: - case SUBLANG_CHINESE_SINGAPORE: - logfont->lfCharSet = GB2312_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("SimHei")); - break; - case SUBLANG_CHINESE_TRADITIONAL: - case SUBLANG_CHINESE_HONGKONG: - case SUBLANG_CHINESE_MACAU: - default: - logfont->lfCharSet = CHINESEBIG5_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("MingLiU")); - break; - } - break; - case LANG_JAPANESE: - logfont->lfCharSet = SHIFTJIS_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("MS Gothic")); - break; - case LANG_KOREAN: - logfont->lfCharSet = HANGUL_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("Gulim")); - break; - default: - logfont->lfCharSet = ANSI_CHARSET; - lstrcpy(logfont->lfFaceName, TEXT("Tahoma")); - break; - } - - logfont->lfHeight = mPreeditor->getPreeditFontSize(); - logfont->lfWeight = FW_NORMAL; -} - -U32 LLWindowWin32::fillReconvertString(const LLWString &text, - S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string) -{ - const llutf16string text_utf16 = wstring_to_utf16str(text); - const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR); - if (reconvert_string && reconvert_string->dwSize >= required_size) - { - const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus); - const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length); - - reconvert_string->dwVersion = 0; - reconvert_string->dwStrLen = text_utf16.length(); - reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING); - reconvert_string->dwCompStrLen = focus_utf16_length; - reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR); - reconvert_string->dwTargetStrLen = 0; - reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR); - - const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING)); - memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR)); - } - return required_size; -} - -void LLWindowWin32::updateLanguageTextInputArea() -{ - if (!mPreeditor || !LLWinImm::isAvailable()) - { - return; - } - - LLCoordGL caret_coord; - LLRect preedit_bounds; - if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL)) - { - mLanguageTextInputPointGL = caret_coord; - mLanguageTextInputAreaGL = preedit_bounds; - - CANDIDATEFORM candidate_form; - fillCandidateForm(caret_coord, preedit_bounds, &candidate_form); - - HIMC himc = LLWinImm::getContext(mWindowHandle); - // Win32 document says there may be up to 4 candidate windows. - // This magic number 4 appears only in the document, and - // there are no constant/macro for the value... - for (int i = 3; i >= 0; --i) - { - candidate_form.dwIndex = i; - LLWinImm::setCandidateWindow(himc, &candidate_form); - } - LLWinImm::releaseContext(mWindowHandle, himc); - } -} - -void LLWindowWin32::interruptLanguageTextInput() -{ - if (mPreeditor) - { - if (LLWinImm::isAvailable()) - { - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0); - LLWinImm::releaseContext(mWindowHandle, himc); - } - - // Win32 document says there will be no composition string - // after NI_COMPOSITIONSTR returns. The following call to - // resetPreedit should be a NOP unless IME goes mad... - mPreeditor->resetPreedit(); - } -} - -void LLWindowWin32::handleStartCompositionMessage() -{ - // Let IME know the font to use in feedback UI. - LOGFONT logfont; - fillCompositionLogfont(&logfont); - HIMC himc = LLWinImm::getContext(mWindowHandle); - LLWinImm::setCompositionFont(himc, &logfont); - LLWinImm::releaseContext(mWindowHandle, himc); -} - -// Handle WM_IME_COMPOSITION message. - -void LLWindowWin32::handleCompositionMessage(const U32 indexes) -{ - BOOL needs_update = FALSE; - LLWString result_string; - LLWString preedit_string; - S32 preedit_string_utf16_length = 0; - LLPreeditor::segment_lengths_t preedit_segment_lengths; - LLPreeditor::standouts_t preedit_standouts; - - // Step I: Receive details of preedits from IME. - - HIMC himc = LLWinImm::getContext(mWindowHandle); - - if (indexes & GCS_RESULTSTR) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0); - if (size >= 0) - { - const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; - size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size); - if (size > 0) - { - result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); - } - delete[] data; - needs_update = TRUE; - } - } - - if (indexes & GCS_COMPSTR) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0); - if (size >= 0) - { - const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; - size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size); - if (size > 0) - { - preedit_string_utf16_length = size / sizeof(WCHAR); - preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); - } - delete[] data; - needs_update = TRUE; - } - } - - if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0); - if (size > 0) - { - const LPDWORD data = new DWORD[size / sizeof(DWORD)]; - size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size); - if (size >= sizeof(DWORD) * 2 - && data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length) - { - preedit_segment_lengths.resize(size / sizeof(DWORD) - 1); - S32 offset = 0; - for (U32 i = 0; i < preedit_segment_lengths.size(); i++) - { - const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]); - preedit_segment_lengths[i] = length; - offset += length; - } - } - delete[] data; - } - } - - if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1) - { - LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0); - if (size > 0) - { - const LPBYTE data = new BYTE[size / sizeof(BYTE)]; - size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size); - if (size == preedit_string_utf16_length) - { - preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); - S32 offset = 0; - for (U32 i = 0; i < preedit_segment_lengths.size(); i++) - { - if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset]) - { - preedit_standouts[i] = TRUE; - } - offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]); - } - } - delete[] data; - } - } - - S32 caret_position = preedit_string.length(); - if (indexes & GCS_CURSORPOS) - { - const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0); - if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length) - { - caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16); - } - } - - if (indexes == 0) - { - // I'm not sure this condition really happens, but - // Windows SDK document says it is an indication - // of "reset everything." - needs_update = TRUE; - } - - LLWinImm::releaseContext(mWindowHandle, himc); - - // Step II: Update the active preeditor. - - if (needs_update) - { - mPreeditor->resetPreedit(); - - if (result_string.length() > 0) - { - for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++) - { - mPreeditor->handleUnicodeCharHere(*i); - } - } - - if (preedit_string.length() == 0) - { - preedit_segment_lengths.clear(); - preedit_standouts.clear(); - } - else - { - if (preedit_segment_lengths.size() == 0) - { - preedit_segment_lengths.assign(1, preedit_string.length()); - } - if (preedit_standouts.size() == 0) - { - preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); - } - } - mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position); - - // Some IME doesn't query char position after WM_IME_COMPOSITION, - // so we need to update them actively. - updateLanguageTextInputArea(); - } -} - -// Given a text and a focus range, find_context finds and returns a -// surrounding context of the focused subtext. A variable pointed -// to by offset receives the offset in llwchars of the beginning of -// the returned context string in the given wtext. - -static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset) -{ - static const S32 CONTEXT_EXCESS = 30; // This value is by experiences. - - const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS); - S32 end = focus + focus_length; - while (end < e && '\n' != wtext[end]) - { - end++; - } - - const S32 s = llmax(0, focus - CONTEXT_EXCESS); - S32 start = focus; - while (start > s && '\n' != wtext[start - 1]) - { - --start; - } - - *offset = start; - return wtext.substr(start, end - start); -} - -// final stage of handling drop requests - both from WM_DROPFILES message -// for files and via IDropTarget interface requests. -LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ) -{ - return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url ); -} - -// Handle WM_IME_REQUEST message. -// If it handled the message, returns TRUE. Otherwise, FALSE. -// When it handled the message, the value to be returned from -// the Window Procedure is set to *result. - -BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result) -{ - if ( mPreeditor ) - { - switch (request) - { - case IMR_CANDIDATEWINDOW: // http://msdn2.microsoft.com/en-us/library/ms776080.aspx - { - LLCoordGL caret_coord; - LLRect preedit_bounds; - mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL); - - CANDIDATEFORM *const form = (CANDIDATEFORM *)param; - DWORD const dwIndex = form->dwIndex; - fillCandidateForm(caret_coord, preedit_bounds, form); - form->dwIndex = dwIndex; - - *result = 1; - return TRUE; - } - case IMR_QUERYCHARPOSITION: - { - IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param; - - // char_position->dwCharPos counts in number of - // WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the - // number to getPreeditLocation. - - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 preedit, preedit_length; - mPreeditor->getPreeditRange(&preedit, &preedit_length); - LLCoordGL caret_coord; - LLRect preedit_bounds, text_control; - const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos); - - if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control)) - { - LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL; - return FALSE; - } - fillCharPosition(caret_coord, preedit_bounds, text_control, char_position); - - *result = 1; - return TRUE; - } - case IMR_COMPOSITIONFONT: - { - fillCompositionLogfont((LOGFONT *)param); - - *result = 1; - return TRUE; - } - case IMR_RECONVERTSTRING: - { - mPreeditor->resetPreedit(); - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 select, select_length; - mPreeditor->getSelectionRange(&select, &select_length); - - S32 context_offset; - const LLWString context = find_context(wtext, select, select_length, &context_offset); - - RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param; - const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string); - if (reconvert_string) - { - if (select_length == 0) - { - // Let the IME to decide the reconversion range, and - // adjust the reconvert_string structure accordingly. - HIMC himc = LLWinImm::getContext(mWindowHandle); - const BOOL adjusted = LLWinImm::setCompositionString(himc, - SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0); - LLWinImm::releaseContext(mWindowHandle, himc); - if (adjusted) - { - const llutf16string & text_utf16 = wstring_to_utf16str(context); - const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR); - const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen; - select = utf16str_wstring_length(text_utf16, new_preedit_start); - select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select; - select += context_offset; - } - } - mPreeditor->markAsPreedit(select, select_length); - } - - *result = size; - return TRUE; - } - case IMR_CONFIRMRECONVERTSTRING: - { - *result = FALSE; - return TRUE; - } - case IMR_DOCUMENTFEED: - { - const LLWString & wtext = mPreeditor->getPreeditString(); - S32 preedit, preedit_length; - mPreeditor->getPreeditRange(&preedit, &preedit_length); - - S32 context_offset; - LLWString context = find_context(wtext, preedit, preedit_length, &context_offset); - preedit -= context_offset; - if (preedit_length) - { - // IMR_DOCUMENTFEED may be called when we have an active preedit. - // We should pass the context string *excluding* the preedit string. - // Otherwise, some IME are confused. - context.erase(preedit, preedit_length); - } - - RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param; - *result = fillReconvertString(context, preedit, 0, reconvert_string); - return TRUE; - } - default: - return FALSE; - } - } - - return FALSE; -} - -//static -std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList() -{ - // Fonts previously in getFontListSans() have moved to fonts.xml. - return std::vector<std::string>(); -} - - -#endif // LL_WINDOWS +/** + * @file llwindowwin32.cpp + * @brief Platform-dependent implementation of llwindow + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#if LL_WINDOWS && !LL_MESA_HEADLESS + +#include "llwindowwin32.h" + +// LLWindow library includes +#include "llkeyboardwin32.h" +#include "lldragdropwin32.h" +#include "llpreeditor.h" +#include "llwindowcallbacks.h" + +// Linden library includes +#include "llerror.h" +#include "llgl.h" +#include "llstring.h" + +// System includes +#include <commdlg.h> +#include <WinUser.h> +#include <mapi.h> +#include <process.h> // for _spawn +#include <shellapi.h> +#include <fstream> +#include <Imm.h> + +// Require DirectInput version 8 +#define DIRECTINPUT_VERSION 0x0800 + +#include <dinput.h> +#include <Dbt.h.> + +#include "llmemtype.h" +// culled from winuser.h +#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ +const S32 WM_MOUSEWHEEL = 0x020A; +#endif +#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */ +const S32 WHEEL_DELTA = 120; /* Value for rolling one detent */ +#endif +const S32 MAX_MESSAGE_PER_UPDATE = 20; +const S32 BITS_PER_PIXEL = 32; +const S32 MAX_NUM_RESOLUTIONS = 32; +const F32 ICON_FLASH_TIME = 0.5f; + +extern BOOL gDebugWindowProc; + +LPWSTR gIconResource = IDI_APPLICATION; + +LLW32MsgCallback gAsyncMsgCallback = NULL; + +// +// LLWindowWin32 +// + +void show_window_creation_error(const std::string& title) +{ + LL_WARNS("Window") << title << LL_ENDL; +} + +//static +BOOL LLWindowWin32::sIsClassRegistered = FALSE; + +BOOL LLWindowWin32::sLanguageTextInputAllowed = TRUE; +BOOL LLWindowWin32::sWinIMEOpened = FALSE; +HKL LLWindowWin32::sWinInputLocale = 0; +DWORD LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE; +DWORD LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC; +LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1); + +// The following class LLWinImm delegates Windows IMM APIs. +// We need this because some language versions of Windows, +// e.g., US version of Windows XP, doesn't install IMM32.DLL +// as a default, and we can't link against imm32.lib statically. +// I believe DLL loading of this type is best suited to do +// in a static initialization of a class. What I'm not sure is +// whether it follows the Linden Conding Standard... +// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members + +class LLWinImm +{ +public: + static bool isAvailable() { return sTheInstance.mHImmDll != NULL; } + +public: + // Wrappers for IMM API. + static BOOL isIME(HKL hkl); + static HWND getDefaultIMEWnd(HWND hwnd); + static HIMC getContext(HWND hwnd); + static BOOL releaseContext(HWND hwnd, HIMC himc); + static BOOL getOpenStatus(HIMC himc); + static BOOL setOpenStatus(HIMC himc, BOOL status); + static BOOL getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence); + static BOOL setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence); + static BOOL getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); + static BOOL setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form); + static LONG getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length); + static BOOL setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength); + static BOOL setCompositionFont(HIMC himc, LPLOGFONTW logfont); + static BOOL setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form); + static BOOL notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value); + +private: + LLWinImm(); + ~LLWinImm(); + +private: + // Pointers to IMM API. + BOOL (WINAPI *mImmIsIME)(HKL); + HWND (WINAPI *mImmGetDefaultIMEWnd)(HWND); + HIMC (WINAPI *mImmGetContext)(HWND); + BOOL (WINAPI *mImmReleaseContext)(HWND, HIMC); + BOOL (WINAPI *mImmGetOpenStatus)(HIMC); + BOOL (WINAPI *mImmSetOpenStatus)(HIMC, BOOL); + BOOL (WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD); + BOOL (WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD); + BOOL (WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); + BOOL (WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM); + LONG (WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD); + BOOL (WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); + BOOL (WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW); + BOOL (WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM); + BOOL (WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD); + +private: + HMODULE mHImmDll; + static LLWinImm sTheInstance; +}; + +LLWinImm LLWinImm::sTheInstance; + +LLWinImm::LLWinImm() : mHImmDll(NULL) +{ + // Check system metrics + if ( !GetSystemMetrics( SM_DBCSENABLED ) ) + return; + + + mHImmDll = LoadLibraryA("Imm32"); + if (mHImmDll != NULL) + { + mImmIsIME = (BOOL (WINAPI *)(HKL)) GetProcAddress(mHImmDll, "ImmIsIME"); + mImmGetDefaultIMEWnd = (HWND (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd"); + mImmGetContext = (HIMC (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetContext"); + mImmReleaseContext = (BOOL (WINAPI *)(HWND, HIMC)) GetProcAddress(mHImmDll, "ImmReleaseContext"); + mImmGetOpenStatus = (BOOL (WINAPI *)(HIMC)) GetProcAddress(mHImmDll, "ImmGetOpenStatus"); + mImmSetOpenStatus = (BOOL (WINAPI *)(HIMC, BOOL)) GetProcAddress(mHImmDll, "ImmSetOpenStatus"); + mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus"); + mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmSetConversionStatus"); + mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmGetCompositionWindow"); + mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM)) GetProcAddress(mHImmDll, "ImmSetCompositionWindow"); + mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmGetCompositionStringW"); + mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD)) GetProcAddress(mHImmDll, "ImmSetCompositionStringW"); + mImmSetCompositionFont = (BOOL (WINAPI *)(HIMC, LPLOGFONTW)) GetProcAddress(mHImmDll, "ImmSetCompositionFontW"); + mImmSetCandidateWindow = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM)) GetProcAddress(mHImmDll, "ImmSetCandidateWindow"); + mImmNotifyIME = (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmNotifyIME"); + + if (mImmIsIME == NULL || + mImmGetDefaultIMEWnd == NULL || + mImmGetContext == NULL || + mImmReleaseContext == NULL || + mImmGetOpenStatus == NULL || + mImmSetOpenStatus == NULL || + mImmGetConversionStatus == NULL || + mImmSetConversionStatus == NULL || + mImmGetCompostitionWindow == NULL || + mImmSetCompostitionWindow == NULL || + mImmGetCompositionString == NULL || + mImmSetCompositionString == NULL || + mImmSetCompositionFont == NULL || + mImmSetCandidateWindow == NULL || + mImmNotifyIME == NULL) + { + // If any of the above API entires are not found, we can't use IMM API. + // So, turn off the IMM support. We should log some warning message in + // the case, since it is very unusual; these APIs are available from + // the beginning, and all versions of IMM32.DLL should have them all. + // Unfortunately, this code may be executed before initialization of + // the logging channel (llwarns), and we can't do it here... Yes, this + // is one of disadvantages to use static constraction to DLL loading. + FreeLibrary(mHImmDll); + mHImmDll = NULL; + + // If we unload the library, make sure all the function pointers are cleared + mImmIsIME = NULL; + mImmGetDefaultIMEWnd = NULL; + mImmGetContext = NULL; + mImmReleaseContext = NULL; + mImmGetOpenStatus = NULL; + mImmSetOpenStatus = NULL; + mImmGetConversionStatus = NULL; + mImmSetConversionStatus = NULL; + mImmGetCompostitionWindow = NULL; + mImmSetCompostitionWindow = NULL; + mImmGetCompositionString = NULL; + mImmSetCompositionString = NULL; + mImmSetCompositionFont = NULL; + mImmSetCandidateWindow = NULL; + mImmNotifyIME = NULL; + } + } +} + + +// static +BOOL LLWinImm::isIME(HKL hkl) +{ + if ( sTheInstance.mImmIsIME ) + return sTheInstance.mImmIsIME(hkl); + return FALSE; +} + +// static +HIMC LLWinImm::getContext(HWND hwnd) +{ + if ( sTheInstance.mImmGetContext ) + return sTheInstance.mImmGetContext(hwnd); + return 0; +} + +//static +BOOL LLWinImm::releaseContext(HWND hwnd, HIMC himc) +{ + if ( sTheInstance.mImmIsIME ) + return sTheInstance.mImmReleaseContext(hwnd, himc); + return FALSE; +} + +// static +BOOL LLWinImm::getOpenStatus(HIMC himc) +{ + if ( sTheInstance.mImmGetOpenStatus ) + return sTheInstance.mImmGetOpenStatus(himc); + return FALSE; +} + +// static +BOOL LLWinImm::setOpenStatus(HIMC himc, BOOL status) +{ + if ( sTheInstance.mImmSetOpenStatus ) + return sTheInstance.mImmSetOpenStatus(himc, status); + return FALSE; +} + +// static +BOOL LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence) +{ + if ( sTheInstance.mImmGetConversionStatus ) + return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); + return FALSE; +} + +// static +BOOL LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence) +{ + if ( sTheInstance.mImmSetConversionStatus ) + return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); + return FALSE; +} + +// static +BOOL LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) +{ + if ( sTheInstance.mImmGetCompostitionWindow ) + return sTheInstance.mImmGetCompostitionWindow(himc, form); + return FALSE; +} + +// static +BOOL LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form) +{ + if ( sTheInstance.mImmSetCompostitionWindow ) + return sTheInstance.mImmSetCompostitionWindow(himc, form); + return FALSE; +} + + +// static +LONG LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length) +{ + if ( sTheInstance.mImmGetCompositionString ) + return sTheInstance.mImmGetCompositionString(himc, index, data, length); + return FALSE; +} + + +// static +BOOL LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength) +{ + if ( sTheInstance.mImmSetCompositionString ) + return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength); + return FALSE; +} + +// static +BOOL LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont) +{ + if ( sTheInstance.mImmSetCompositionFont ) + return sTheInstance.mImmSetCompositionFont(himc, pFont); + return FALSE; +} + +// static +BOOL LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form) +{ + if ( sTheInstance.mImmSetCandidateWindow ) + return sTheInstance.mImmSetCandidateWindow(himc, form); + return FALSE; +} + +// static +BOOL LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value) +{ + if ( sTheInstance.mImmNotifyIME ) + return sTheInstance.mImmNotifyIME(himc, action, index, value); + return FALSE; +} + + + + +// ---------------------------------------------------------------------------------------- +LLWinImm::~LLWinImm() +{ + if (mHImmDll != NULL) + { + FreeLibrary(mHImmDll); + mHImmDll = NULL; + } +} + + +LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, + const std::string& title, const std::string& name, S32 x, S32 y, S32 width, + S32 height, U32 flags, + BOOL fullscreen, BOOL clearBg, + BOOL disable_vsync, BOOL use_gl, + BOOL ignore_pixel_depth, + U32 fsaa_samples) + : LLWindow(callbacks, fullscreen, flags) +{ + mFSAASamples = fsaa_samples; + mIconResource = gIconResource; + mOverrideAspectRatio = 0.f; + mNativeAspectRatio = 0.f; + mMousePositionModified = FALSE; + mInputProcessingPaused = FALSE; + mPreeditor = NULL; + mhDC = NULL; + mhRC = NULL; + + // Initialize the keyboard + gKeyboard = new LLKeyboardWin32(); + gKeyboard->setCallbacks(callbacks); + + // Initialize the Drag and Drop functionality + mDragDrop = new LLDragDropWin32; + + // Initialize (boot strap) the Language text input management, + // based on the system's (user's) default settings. + allowLanguageTextInput(mPreeditor, FALSE); + + WNDCLASS wc; + RECT window_rect; + + // Set the window title + if (title.empty()) + { + mWindowTitle = new WCHAR[50]; + wsprintf(mWindowTitle, L"OpenGL Window"); + } + else + { + mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. + mbstowcs(mWindowTitle, title.c_str(), 255); + mWindowTitle[255] = 0; + } + + // Set the window class name + if (name.empty()) + { + mWindowClassName = new WCHAR[50]; + wsprintf(mWindowClassName, L"OpenGL Window"); + } + else + { + mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. + mbstowcs(mWindowClassName, name.c_str(), 255); + mWindowClassName[255] = 0; + } + + + // We're not clipping yet + SetRect( &mOldMouseClip, 0, 0, 0, 0 ); + + // Make an instance of our window then define the window class + mhInstance = GetModuleHandle(NULL); + mWndProc = NULL; + + mSwapMethod = SWAP_METHOD_UNDEFINED; + + // No WPARAM yet. + mLastSizeWParam = 0; + + // Windows GDI rects don't include rightmost pixel + window_rect.left = (long) 0; + window_rect.right = (long) width; + window_rect.top = (long) 0; + window_rect.bottom = (long) height; + + // Grab screen size to sanitize the window + S32 window_border_y = GetSystemMetrics(SM_CYBORDER); + S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); + S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); + S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN); + S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN); + + if (x < virtual_screen_x) x = virtual_screen_x; + if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y; + + if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width; + if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height; + + if (!sIsClassRegistered) + { + // Force redraw when resized and create a private device context + + // Makes double click messages. + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; + + // Set message handler function + wc.lpfnWndProc = (WNDPROC) mainWindowProc; + + // unused + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + + wc.hInstance = mhInstance; + wc.hIcon = LoadIcon(mhInstance, mIconResource); + + // We will set the cursor ourselves + wc.hCursor = NULL; + + // background color is not used + if (clearBg) + { + wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); + } + else + { + wc.hbrBackground = (HBRUSH) NULL; + } + + // we don't use windows menus + wc.lpszMenuName = NULL; + + wc.lpszClassName = mWindowClassName; + + if (!RegisterClass(&wc)) + { + OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), + mCallbacks->translateString("MBError"), OSMB_OK); + return; + } + sIsClassRegistered = TRUE; + } + + //----------------------------------------------------------------------- + // Get the current refresh rate + //----------------------------------------------------------------------- + + DEVMODE dev_mode; + DWORD current_refresh; + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + current_refresh = dev_mode.dmDisplayFrequency; + mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight); + } + else + { + current_refresh = 60; + } + + //----------------------------------------------------------------------- + // Drop resolution and go fullscreen + // use a display mode with our desired size and depth, with a refresh + // rate as close at possible to the users' default + //----------------------------------------------------------------------- + if (mFullscreen) + { + BOOL success = FALSE; + DWORD closest_refresh = 0; + + for (S32 mode_num = 0;; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == BITS_PER_PIXEL) + { + success = TRUE; + if ((dev_mode.dmDisplayFrequency - current_refresh) + < (closest_refresh - current_refresh)) + { + closest_refresh = dev_mode.dmDisplayFrequency; + } + } + } + + if (closest_refresh == 0) + { + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; + success = FALSE; + } + + // If we found a good resolution, use it. + if (success) + { + success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); + } + + // Keep a copy of the actual current device mode in case we minimize + // and change the screen resolution. JC + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); + + // If it failed, we don't want to run fullscreen + if (success) + { + mFullscreen = TRUE; + mFullscreenWidth = dev_mode.dmPelsWidth; + mFullscreenHeight = dev_mode.dmPelsHeight; + mFullscreenBits = dev_mode.dmBitsPerPel; + mFullscreenRefresh = dev_mode.dmDisplayFrequency; + + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth + << "x" << dev_mode.dmPelsHeight + << "x" << dev_mode.dmBitsPerPel + << " @ " << dev_mode.dmDisplayFrequency + << LL_ENDL; + } + else + { + mFullscreen = FALSE; + mFullscreenWidth = -1; + mFullscreenHeight = -1; + mFullscreenBits = -1; + mFullscreenRefresh = -1; + + std::map<std::string,std::string> args; + args["[WIDTH]"] = llformat("%d", width); + args["[HEIGHT]"] = llformat ("%d", height); + OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args), + mCallbacks->translateString("MBError"), OSMB_OK); + } + } + + // TODO: add this after resolving _WIN32_WINNT issue + // if (!fullscreen) + // { + // TRACKMOUSEEVENT track_mouse_event; + // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); + // track_mouse_event.dwFlags = TME_LEAVE; + // track_mouse_event.hwndTrack = mWindowHandle; + // track_mouse_event.dwHoverTime = HOVER_DEFAULT; + // TrackMouseEvent( &track_mouse_event ); + // } + + + //----------------------------------------------------------------------- + // Create GL drawing context + //----------------------------------------------------------------------- + LLCoordScreen windowPos(x,y); + LLCoordScreen windowSize(window_rect.right - window_rect.left, + window_rect.bottom - window_rect.top); + if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos)) + { + return; + } + + //start with arrow cursor + initCursors(); + setCursor( UI_CURSOR_ARROW ); + + // Initialize (boot strap) the Language text input management, + // based on the system's (or user's) default settings. + allowLanguageTextInput(NULL, FALSE); +} + + +LLWindowWin32::~LLWindowWin32() +{ + delete mDragDrop; + + delete [] mWindowTitle; + mWindowTitle = NULL; + + delete [] mSupportedResolutions; + mSupportedResolutions = NULL; + + delete mWindowClassName; + mWindowClassName = NULL; +} + +void LLWindowWin32::show() +{ + ShowWindow(mWindowHandle, SW_SHOW); + SetForegroundWindow(mWindowHandle); + SetFocus(mWindowHandle); +} + +void LLWindowWin32::hide() +{ + setMouseClipping(FALSE); + ShowWindow(mWindowHandle, SW_HIDE); +} + +//virtual +void LLWindowWin32::minimize() +{ + setMouseClipping(FALSE); + showCursor(); + ShowWindow(mWindowHandle, SW_MINIMIZE); +} + +//virtual +void LLWindowWin32::restore() +{ + ShowWindow(mWindowHandle, SW_RESTORE); + SetForegroundWindow(mWindowHandle); + SetFocus(mWindowHandle); +} + + +// close() destroys all OS-specific code associated with a window. +// Usually called from LLWindowManager::destroyWindow() +void LLWindowWin32::close() +{ + LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL; + // Is window is already closed? + if (!mWindowHandle) + { + return; + } + + mDragDrop->reset(); + + // Make sure cursor is visible and we haven't mangled the clipping state. + setMouseClipping(FALSE); + showCursor(); + + // Go back to screen mode written in the registry. + if (mFullscreen) + { + resetDisplayResolution(); + } + + // Clean up remaining GL state + LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL; + gGLManager.shutdownGL(); + + LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL; + if (mhRC) + { + if (!wglMakeCurrent(NULL, NULL)) + { + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; + } + + if (!wglDeleteContext(mhRC)) + { + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; + } + + mhRC = NULL; + } + + // Restore gamma to the system values. + restoreGamma(); + + if (mhDC && !ReleaseDC(mWindowHandle, mhDC)) + { + LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL; + mhDC = NULL; + } + + LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; + + // Don't process events in our mainWindowProc any longer. + SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); + + // Make sure we don't leave a blank toolbar button. + ShowWindow(mWindowHandle, SW_HIDE); + + // This causes WM_DESTROY to be sent *immediately* + if (!DestroyWindow(mWindowHandle)) + { + OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), + mCallbacks->translateString("MBShutdownErr"), + OSMB_OK); + } + + mWindowHandle = NULL; +} + +BOOL LLWindowWin32::isValid() +{ + return (mWindowHandle != NULL); +} + +BOOL LLWindowWin32::getVisible() +{ + return (mWindowHandle && IsWindowVisible(mWindowHandle)); +} + +BOOL LLWindowWin32::getMinimized() +{ + return (mWindowHandle && IsIconic(mWindowHandle)); +} + +BOOL LLWindowWin32::getMaximized() +{ + return (mWindowHandle && IsZoomed(mWindowHandle)); +} + +BOOL LLWindowWin32::maximize() +{ + BOOL success = FALSE; + if (!mWindowHandle) return success; + + WINDOWPLACEMENT placement; + placement.length = sizeof(WINDOWPLACEMENT); + + success = GetWindowPlacement(mWindowHandle, &placement); + if (!success) return success; + + placement.showCmd = SW_MAXIMIZE; + + success = SetWindowPlacement(mWindowHandle, &placement); + return success; +} + +BOOL LLWindowWin32::getFullscreen() +{ + return mFullscreen; +} + +BOOL LLWindowWin32::getPosition(LLCoordScreen *position) +{ + RECT window_rect; + + if (!mWindowHandle || + !GetWindowRect(mWindowHandle, &window_rect) || + NULL == position) + { + return FALSE; + } + + position->mX = window_rect.left; + position->mY = window_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::getSize(LLCoordScreen *size) +{ + RECT window_rect; + + if (!mWindowHandle || + !GetWindowRect(mWindowHandle, &window_rect) || + NULL == size) + { + return FALSE; + } + + size->mX = window_rect.right - window_rect.left; + size->mY = window_rect.bottom - window_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::getSize(LLCoordWindow *size) +{ + RECT client_rect; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == size) + { + return FALSE; + } + + size->mX = client_rect.right - client_rect.left; + size->mY = client_rect.bottom - client_rect.top; + return TRUE; +} + +BOOL LLWindowWin32::setPosition(const LLCoordScreen position) +{ + LLCoordScreen size; + + if (!mWindowHandle) + { + return FALSE; + } + getSize(&size); + moveWindow(position, size); + return TRUE; +} + +BOOL LLWindowWin32::setSize(const LLCoordScreen size) +{ + LLCoordScreen position; + + getPosition(&position); + if (!mWindowHandle) + { + return FALSE; + } + + moveWindow(position, size); + return TRUE; +} + +// changing fullscreen resolution +BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp) +{ + GLuint pixel_format; + DEVMODE dev_mode; + DWORD current_refresh; + DWORD dw_ex_style; + DWORD dw_style; + RECT window_rect; + S32 width = size.mX; + S32 height = size.mY; + BOOL auto_show = FALSE; + + if (mhRC) + { + auto_show = TRUE; + resetDisplayResolution(); + } + + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + current_refresh = dev_mode.dmDisplayFrequency; + } + else + { + current_refresh = 60; + } + + gGLManager.shutdownGL(); + //destroy gl context + if (mhRC) + { + if (!wglMakeCurrent(NULL, NULL)) + { + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; + } + + if (!wglDeleteContext(mhRC)) + { + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; + } + + mhRC = NULL; + } + + if (fullscreen) + { + mFullscreen = TRUE; + BOOL success = FALSE; + DWORD closest_refresh = 0; + + for (S32 mode_num = 0;; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == BITS_PER_PIXEL) + { + success = TRUE; + if ((dev_mode.dmDisplayFrequency - current_refresh) + < (closest_refresh - current_refresh)) + { + closest_refresh = dev_mode.dmDisplayFrequency; + } + } + } + + if (closest_refresh == 0) + { + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; + return FALSE; + } + + // If we found a good resolution, use it. + if (success) + { + success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh); + } + + // Keep a copy of the actual current device mode in case we minimize + // and change the screen resolution. JC + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); + + if (success) + { + mFullscreen = TRUE; + mFullscreenWidth = dev_mode.dmPelsWidth; + mFullscreenHeight = dev_mode.dmPelsHeight; + mFullscreenBits = dev_mode.dmBitsPerPel; + mFullscreenRefresh = dev_mode.dmDisplayFrequency; + + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth + << "x" << dev_mode.dmPelsHeight + << "x" << dev_mode.dmBitsPerPel + << " @ " << dev_mode.dmDisplayFrequency + << LL_ENDL; + + window_rect.left = (long) 0; + window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel + window_rect.top = (long) 0; + window_rect.bottom = (long) height; + dw_ex_style = WS_EX_APPWINDOW; + dw_style = WS_POPUP; + + // Move window borders out not to cover window contents + AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style); + } + // If it failed, we don't want to run fullscreen + else + { + mFullscreen = FALSE; + mFullscreenWidth = -1; + mFullscreenHeight = -1; + mFullscreenBits = -1; + mFullscreenRefresh = -1; + + LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL; + return FALSE; + } + } + else + { + mFullscreen = FALSE; + window_rect.left = (long) (posp ? posp->mX : 0); + window_rect.right = (long) width + window_rect.left; // Windows GDI rects don't include rightmost pixel + window_rect.top = (long) (posp ? posp->mY : 0); + window_rect.bottom = (long) height + window_rect.top; + // Window with an edge + dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; + dw_style = WS_OVERLAPPEDWINDOW; + } + + // don't post quit messages when destroying old windows + mPostQuit = FALSE; + + // create window + DestroyWindow(mWindowHandle); + mWindowHandle = CreateWindowEx(dw_ex_style, + mWindowClassName, + mWindowTitle, + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, + window_rect.left, // x pos + window_rect.top, // y pos + window_rect.right - window_rect.left, // width + window_rect.bottom - window_rect.top, // height + NULL, + NULL, + mhInstance, + NULL); + + //----------------------------------------------------------------------- + // Create GL drawing context + //----------------------------------------------------------------------- + static PIXELFORMATDESCRIPTOR pfd = + { + sizeof(PIXELFORMATDESCRIPTOR), + 1, + PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, + PFD_TYPE_RGBA, + BITS_PER_PIXEL, + 0, 0, 0, 0, 0, 0, // RGB bits and shift, unused + 8, // alpha bits + 0, // alpha shift + 0, // accum bits + 0, 0, 0, 0, // accum RGBA + 24, // depth bits + 8, // stencil bits, avi added for stencil test + 0, + PFD_MAIN_PLANE, + 0, + 0, 0, 0 + }; + + if (!(mhDC = GetDC(mWindowHandle))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBDevContextErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + // Verify what pixel format we actually received. + if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), + &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cColorBits < 32) + { + close(); + OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cAlphaBits < 8) + { + close(); + OSMessageBox(mCallbacks->translateString("MBAlpha"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!SetPixelFormat(mhDC, pixel_format, &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(mhRC = wglCreateContext(mhDC))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!wglMakeCurrent(mhDC, mhRC)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + gGLManager.initWGL(); + + if (wglChoosePixelFormatARB) + { + // OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we + // can get exactly what we want. + GLint attrib_list[256]; + S32 cur_attrib = 0; + + attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB; + attrib_list[cur_attrib++] = 24; + + attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB; + attrib_list[cur_attrib++] = 8; + + attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB; + attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB; + + attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB; + attrib_list[cur_attrib++] = 24; + + attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB; + attrib_list[cur_attrib++] = 8; + + U32 end_attrib = 0; + if (mFSAASamples > 0) + { + end_attrib = cur_attrib; + attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB; + attrib_list[cur_attrib++] = GL_TRUE; + + attrib_list[cur_attrib++] = WGL_SAMPLES_ARB; + attrib_list[cur_attrib++] = mFSAASamples; + } + + // End the list + attrib_list[cur_attrib++] = 0; + + GLint pixel_formats[256]; + U32 num_formats = 0; + + // First we try and get a 32 bit depth pixel format + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit"); + return FALSE; + } + + if (!num_formats) + { + if (end_attrib > 0) + { + LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL; + attrib_list[end_attrib] = 0; + + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA"); + return FALSE; + } + } + + if (!num_formats) + { + LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL; + // Try 24-bit format + attrib_list[1] = 24; + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit"); + return FALSE; + } + + if (!num_formats) + { + LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL; + attrib_list[1] = 16; + BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); + if (!result || !num_formats) + { + close(); + show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit"); + return FALSE; + } + } + } + + LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL; + } + + + + S32 swap_method = 0; + S32 cur_format = num_formats-1; + GLint swap_query = WGL_SWAP_METHOD_ARB; + + BOOL found_format = FALSE; + + while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) + { + if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0) + { + found_format = TRUE; + } + else + { + --cur_format; + } + } + + pixel_format = pixel_formats[cur_format]; + + if (mhDC != 0) // Does The Window Have A Device Context? + { + wglMakeCurrent(mhDC, 0); // Set The Current Active Rendering Context To Zero + if (mhRC != 0) // Does The Window Have A Rendering Context? + { + wglDeleteContext (mhRC); // Release The Rendering Context + mhRC = 0; // Zero The Rendering Context + + } + ReleaseDC (mWindowHandle, mhDC); // Release The Device Context + mhDC = 0; // Zero The Device Context + } + DestroyWindow (mWindowHandle); // Destroy The Window + + + mWindowHandle = CreateWindowEx(dw_ex_style, + mWindowClassName, + mWindowTitle, + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style, + window_rect.left, // x pos + window_rect.top, // y pos + window_rect.right - window_rect.left, // width + window_rect.bottom - window_rect.top, // height + NULL, + NULL, + mhInstance, + NULL); + + if (!(mhDC = GetDC(mWindowHandle))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!SetPixelFormat(mhDC, pixel_format, &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"), + mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method)) + { + switch (swap_method) + { + case WGL_SWAP_EXCHANGE_ARB: + mSwapMethod = SWAP_METHOD_EXCHANGE; + LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL; + break; + case WGL_SWAP_COPY_ARB: + mSwapMethod = SWAP_METHOD_COPY; + LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL; + break; + case WGL_SWAP_UNDEFINED_ARB: + mSwapMethod = SWAP_METHOD_UNDEFINED; + LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL; + break; + default: + mSwapMethod = SWAP_METHOD_UNDEFINED; + LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL; + break; + } + } + } + else + { + LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL; + } + + // Verify what pixel format we actually received. + if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), + &pfd)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) + << " Alpha Bits " << S32(pfd.cAlphaBits) + << " Depth Bits " << S32(pfd.cDepthBits) + << LL_ENDL; + + // make sure we have 32 bits per pixel + if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32) + { + close(); + OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (pfd.cAlphaBits < 8) + { + close(); + OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!(mhRC = wglCreateContext(mhDC))) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!wglMakeCurrent(mhDC, mhRC)) + { + close(); + OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + if (!gGLManager.initGL()) + { + close(); + OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK); + return FALSE; + } + + // Disable vertical sync for swap + if (disable_vsync && wglSwapIntervalEXT) + { + LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL; + wglSwapIntervalEXT(0); + } + else + { + LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL; + } + + SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); + + // register this window as handling drag/drop events from the OS + DragAcceptFiles( mWindowHandle, TRUE ); + + mDragDrop->init( mWindowHandle ); + + //register joystick timer callback + SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer + + // ok to post quit messages now + mPostQuit = TRUE; + + if (auto_show) + { + show(); + glClearColor(0.0f, 0.0f, 0.0f, 0.f); + glClear(GL_COLOR_BUFFER_BIT); + swapBuffers(); + } + + return TRUE; +} + +void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size ) +{ + if( mIsMouseClipping ) + { + RECT client_rect_in_screen_space; + if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) + { + ClipCursor( &client_rect_in_screen_space ); + } + } + + // if the window was already maximized, MoveWindow seems to still set the maximized flag even if + // the window is smaller than maximized. + // So we're going to do a restore first (which is a ShowWindow call) (SL-44655). + + // THIS CAUSES DEV-15484 and DEV-15949 + //ShowWindow(mWindowHandle, SW_RESTORE); + // NOW we can call MoveWindow + MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE); +} + +BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position) +{ + LLCoordScreen screen_pos; + + mMousePositionModified = TRUE; + if (!mWindowHandle) + { + return FALSE; + } + + if (!convertCoords(position, &screen_pos)) + { + return FALSE; + } + + // Inform the application of the new mouse position (needed for per-frame + // hover/picking to function). + LLCoordGL gl_pos; + convertCoords(position, &gl_pos); + mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); + + // DEV-18951 VWR-8524 Camera moves wildly when alt-clicking. + // Because we have preemptively notified the application of the new + // mouse position via handleMouseMove() above, we need to clear out + // any stale mouse move events. RN/JC + MSG msg; + while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) + { } + + return SetCursorPos(screen_pos.mX, screen_pos.mY); +} + +BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position) +{ + POINT cursor_point; + LLCoordScreen screen_pos; + + if (!mWindowHandle || + !GetCursorPos(&cursor_point)) + { + return FALSE; + } + + screen_pos.mX = cursor_point.x; + screen_pos.mY = cursor_point.y; + + return convertCoords(screen_pos, position); +} + +void LLWindowWin32::hideCursor() +{ + while (ShowCursor(FALSE) >= 0) + { + // nothing, wait for cursor to push down + } + mCursorHidden = TRUE; + mHideCursorPermanent = TRUE; +} + +void LLWindowWin32::showCursor() +{ + // makes sure the cursor shows up + while (ShowCursor(TRUE) < 0) + { + // do nothing, wait for cursor to pop out + } + mCursorHidden = FALSE; + mHideCursorPermanent = FALSE; +} + +void LLWindowWin32::showCursorFromMouseMove() +{ + if (!mHideCursorPermanent) + { + showCursor(); + } +} + +void LLWindowWin32::hideCursorUntilMouseMove() +{ + if (!mHideCursorPermanent) + { + hideCursor(); + mHideCursorPermanent = FALSE; + } +} + +BOOL LLWindowWin32::isCursorHidden() +{ + return mCursorHidden; +} + + +HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name) +{ + return (HCURSOR)LoadImage(mhInstance, + name, + IMAGE_CURSOR, + 0, // default width + 0, // default height + LR_DEFAULTCOLOR); +} + + +void LLWindowWin32::initCursors() +{ + mCursor[ UI_CURSOR_ARROW ] = LoadCursor(NULL, IDC_ARROW); + mCursor[ UI_CURSOR_WAIT ] = LoadCursor(NULL, IDC_WAIT); + mCursor[ UI_CURSOR_HAND ] = LoadCursor(NULL, IDC_HAND); + mCursor[ UI_CURSOR_IBEAM ] = LoadCursor(NULL, IDC_IBEAM); + mCursor[ UI_CURSOR_CROSS ] = LoadCursor(NULL, IDC_CROSS); + mCursor[ UI_CURSOR_SIZENWSE ] = LoadCursor(NULL, IDC_SIZENWSE); + mCursor[ UI_CURSOR_SIZENESW ] = LoadCursor(NULL, IDC_SIZENESW); + mCursor[ UI_CURSOR_SIZEWE ] = LoadCursor(NULL, IDC_SIZEWE); + mCursor[ UI_CURSOR_SIZENS ] = LoadCursor(NULL, IDC_SIZENS); + mCursor[ UI_CURSOR_NO ] = LoadCursor(NULL, IDC_NO); + mCursor[ UI_CURSOR_WORKING ] = LoadCursor(NULL, IDC_APPSTARTING); + + HMODULE module = GetModuleHandle(NULL); + mCursor[ UI_CURSOR_TOOLGRAB ] = LoadCursor(module, TEXT("TOOLGRAB")); + mCursor[ UI_CURSOR_TOOLLAND ] = LoadCursor(module, TEXT("TOOLLAND")); + mCursor[ UI_CURSOR_TOOLFOCUS ] = LoadCursor(module, TEXT("TOOLFOCUS")); + mCursor[ UI_CURSOR_TOOLCREATE ] = LoadCursor(module, TEXT("TOOLCREATE")); + mCursor[ UI_CURSOR_ARROWDRAG ] = LoadCursor(module, TEXT("ARROWDRAG")); + mCursor[ UI_CURSOR_ARROWCOPY ] = LoadCursor(module, TEXT("ARROWCOPY")); + mCursor[ UI_CURSOR_ARROWDRAGMULTI ] = LoadCursor(module, TEXT("ARROWDRAGMULTI")); + mCursor[ UI_CURSOR_ARROWCOPYMULTI ] = LoadCursor(module, TEXT("ARROWCOPYMULTI")); + mCursor[ UI_CURSOR_NOLOCKED ] = LoadCursor(module, TEXT("NOLOCKED")); + mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED")); + mCursor[ UI_CURSOR_GRABLOCKED ] = LoadCursor(module, TEXT("GRABLOCKED")); + mCursor[ UI_CURSOR_TOOLTRANSLATE ] = LoadCursor(module, TEXT("TOOLTRANSLATE")); + mCursor[ UI_CURSOR_TOOLROTATE ] = LoadCursor(module, TEXT("TOOLROTATE")); + mCursor[ UI_CURSOR_TOOLSCALE ] = LoadCursor(module, TEXT("TOOLSCALE")); + mCursor[ UI_CURSOR_TOOLCAMERA ] = LoadCursor(module, TEXT("TOOLCAMERA")); + mCursor[ UI_CURSOR_TOOLPAN ] = LoadCursor(module, TEXT("TOOLPAN")); + mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN")); + mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3")); + mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); + + // Color cursors + mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); + mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); + mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); + + // Note: custom cursors that are not found make LoadCursor() return NULL. + for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) + { + if( !mCursor[i] ) + { + mCursor[i] = LoadCursor(NULL, IDC_ARROW); + } + } +} + + + +void LLWindowWin32::setCursor(ECursorType cursor) +{ + if (cursor == UI_CURSOR_ARROW + && mBusyCount > 0) + { + cursor = UI_CURSOR_WORKING; + } + + if( mCurrentCursor != cursor ) + { + mCurrentCursor = cursor; + SetCursor( mCursor[cursor] ); + } +} + +ECursorType LLWindowWin32::getCursor() const +{ + return mCurrentCursor; +} + +void LLWindowWin32::captureMouse() +{ + SetCapture(mWindowHandle); +} + +void LLWindowWin32::releaseMouse() +{ + // *NOTE:Mani ReleaseCapture will spawn new windows messages... + // which will in turn call our MainWindowProc. It therefore requires + // pausing *and more importantly resumption* of the mainlooptimeout... + // just like DispatchMessage below. + mCallbacks->handlePauseWatchdog(this); + ReleaseCapture(); + mCallbacks->handleResumeWatchdog(this); +} + + +void LLWindowWin32::delayInputProcessing() +{ + mInputProcessingPaused = TRUE; +} + +void LLWindowWin32::gatherInput() +{ + MSG msg; + int msg_count = 0; + + LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); + + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) + { + mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); + TranslateMessage(&msg); + + // turn watchdog off in here to not fail if windows is doing something wacky + mCallbacks->handlePauseWatchdog(this); + DispatchMessage(&msg); + mCallbacks->handleResumeWatchdog(this); + msg_count++; + + if ( mInputProcessingPaused ) + { + break; + } + /* Attempted workaround for problem where typing fast and hitting + return would result in only part of the text being sent. JC + + BOOL key_posted = TranslateMessage(&msg); + DispatchMessage(&msg); + msg_count++; + + // If a key was translated, a WM_CHAR might have been posted to the end + // of the event queue. We need it immediately. + if (key_posted && msg.message == WM_KEYDOWN) + { + if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + msg_count++; + } + } + */ + mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput"); + // For async host by name support. Really hacky. + if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) + { + gAsyncMsgCallback(msg); + } + } + + mInputProcessingPaused = FALSE; + + // clear this once we've processed all mouse messages that might have occurred after + // we slammed the mouse position + mMousePositionModified = FALSE; +} + +static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard"); +static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse"); + +LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param) +{ + LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA); + + + if (NULL != window_imp) + { + window_imp->mCallbacks->handleResumeWatchdog(window_imp); + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc"); + // Has user provided their own window callback? + if (NULL != window_imp->mWndProc) + { + if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param)) + { + // user has handled window message + return 0; + } + } + + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc"); + + // Juggle to make sure we can get negative positions for when + // mouse is outside window. + LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)); + + // This doesn't work, as LOWORD returns unsigned short. + //LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param)); + LLCoordGL gl_coord; + + // pass along extended flag in mask + MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0; + BOOL eat_keystroke = TRUE; + + switch(u_msg) + { + RECT update_rect; + S32 update_width; + S32 update_height; + + case WM_TIMER: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER"); + window_imp->mCallbacks->handleTimerEvent(window_imp); + break; + + case WM_DEVICECHANGE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE"); + if (gDebugWindowProc) + { + llinfos << " WM_DEVICECHANGE: wParam=" << w_param + << "; lParam=" << l_param << llendl; + } + if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL) + { + if (window_imp->mCallbacks->handleDeviceChange(window_imp)) + { + return 0; + } + } + break; + + case WM_PAINT: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT"); + GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE); + update_width = update_rect.right - update_rect.left + 1; + update_height = update_rect.bottom - update_rect.top + 1; + window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top, + update_width, update_height); + break; + case WM_PARENTNOTIFY: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY"); + u_msg = u_msg; + break; + + case WM_SETCURSOR: + // This message is sent whenever the cursor is moved in a window. + // You need to set the appropriate cursor appearance. + + // Only take control of cursor over client region of window + // This allows Windows(tm) to handle resize cursors, etc. + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR"); + if (LOWORD(l_param) == HTCLIENT) + { + SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] ); + return 0; + } + break; + + case WM_ENTERMENULOOP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP"); + window_imp->mCallbacks->handleWindowBlock(window_imp); + break; + + case WM_EXITMENULOOP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP"); + window_imp->mCallbacks->handleWindowUnblock(window_imp); + break; + + case WM_ACTIVATEAPP: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP"); + { + // This message should be sent whenever the app gains or loses focus. + BOOL activating = (BOOL) w_param; + BOOL minimized = window_imp->getMinimized(); + + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC ActivateApp " + << " activating " << S32(activating) + << " minimized " << S32(minimized) + << " fullscreen " << S32(window_imp->mFullscreen) + << LL_ENDL; + } + + if (window_imp->mFullscreen) + { + // When we run fullscreen, restoring or minimizing the app needs + // to switch the screen resolution + if (activating) + { + window_imp->setFullscreenResolution(); + window_imp->restore(); + } + else + { + window_imp->minimize(); + window_imp->resetDisplayResolution(); + } + } + + window_imp->mCallbacks->handleActivateApp(window_imp, activating); + + break; + } + + case WM_ACTIVATE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE"); + { + // Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE + BOOL activating = (LOWORD(w_param) != WA_INACTIVE); + + BOOL minimized = BOOL(HIWORD(w_param)); + + if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // JC - I'm not sure why, but if we don't report that we handled the + // WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work + // properly when we run fullscreen. + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC Activate " + << " activating " << S32(activating) + << " minimized " << S32(minimized) + << LL_ENDL; + } + + // Don't handle this. + break; + } + + case WM_QUERYOPEN: + // TODO: use this to return a nice icon + break; + + case WM_SYSCOMMAND: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND"); + switch(w_param) + { + case SC_KEYMENU: + // Disallow the ALT key from triggering the default system menu. + return 0; + + case SC_SCREENSAVE: + case SC_MONITORPOWER: + // eat screen save messages and prevent them! + return 0; + } + break; + + case WM_CLOSE: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE"); + // Will the app allow the window to close? + if (window_imp->mCallbacks->handleCloseRequest(window_imp)) + { + // Get the app to initiate cleanup. + window_imp->mCallbacks->handleQuit(window_imp); + // The app is responsible for calling destroyWindow when done with GL + } + return 0; + + case WM_DESTROY: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY"); + if (window_imp->shouldPostQuit()) + { + PostQuitMessage(0); // Posts WM_QUIT with an exit code of 0 + } + return 0; + + case WM_COMMAND: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND"); + if (!HIWORD(w_param)) // this message is from a menu + { + window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param)); + } + break; + + case WM_SYSKEYDOWN: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN"); + // allow system keys, such as ALT-F4 to be processed by Windows + eat_keystroke = FALSE; + case WM_KEYDOWN: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); + { + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN " + << " key " << S32(w_param) + << LL_ENDL; + } + if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke) + { + return 0; + } + // pass on to windows if we didn't handle it + break; + } + case WM_SYSKEYUP: + eat_keystroke = FALSE; + case WM_KEYUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); + LLFastTimer t2(FTM_KEYHANDLER); + + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " + << " key " << S32(w_param) + << LL_ENDL; + } + if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke) + { + return 0; + } + + // pass on to windows + break; + } + case WM_IME_SETCONTEXT: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_SETCONTEXT" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW; + // Invoke DefWinProc with the modified LPARAM. + } + break; + + case WM_IME_STARTCOMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_STARTCOMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->handleStartCompositionMessage(); + return 0; + } + break; + + case WM_IME_ENDCOMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_ENDCOMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + return 0; + } + break; + + case WM_IME_COMPOSITION: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_COMPOSITION" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->handleCompositionMessage(l_param); + return 0; + } + break; + + case WM_IME_REQUEST: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST"); + if (gDebugWindowProc) + { + llinfos << "WM_IME_REQUEST" << llendl; + } + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + LRESULT result = 0; + if (window_imp->handleImeRequests(w_param, l_param, &result)) + { + return result; + } + } + break; + + case WM_CHAR: + // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need + // to figure out how that works. - Doug + // + // ... Well, I don't think so. + // How it works is explained in Win32 API document, but WM_UNICHAR didn't work + // as specified at least on Windows XP SP1 Japanese version. I have never used + // it since then, and I'm not sure whether it has been fixed now, but I don't think + // it is worth trying. The good old WM_CHAR works just fine even for supplementary + // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's + // by ourselves. It is not that tough. -- Alissa Sabre @ SL + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "Debug WindowProc WM_CHAR " + << " key " << S32(w_param) + << LL_ENDL; + } + // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, + // we *did* processed the event, so I believe we should not pass it to DefWindowProc... + window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE)); + return 0; + + case WM_LBUTTONDOWN: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_LBUTTONDBLCLK: + //RN: ignore right button double clicks for now + //case WM_RBUTTONDBLCLK: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK"); + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) + { + return 0; + } + } + break; + + case WM_LBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + //if (gDebugClicks) + //{ + // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL; + //} + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_RBUTTONDBLCLK: + case WM_RBUTTONDOWN: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in the llviewerapp, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_RBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + // Because we move the cursor position in the app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MBUTTONDOWN: +// case WM_MBUTTONDBLCLK: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN"); + LLFastTimer t2(FTM_MOUSEHANDLER); + if (LLWinImm::isAvailable() && window_imp->mPreeditor) + { + window_imp->interruptLanguageTextInput(); + } + + // Because we move the cursor position in tllviewerhe app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MBUTTONUP: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP"); + LLFastTimer t2(FTM_MOUSEHANDLER); + // Because we move the cursor position in the llviewer app, we need to query + // to find out where the cursor at the time the event is handled. + // If we don't do this, many clicks could get buffered up, and if the + // first click changes the cursor position, all subsequent clicks + // will occur at the wrong location. JC + LLCoordWindow cursor_coord_window; + if (window_imp->mMousePositionModified) + { + window_imp->getCursorPosition(&cursor_coord_window); + window_imp->convertCoords(cursor_coord_window, &gl_coord); + } + else + { + window_imp->convertCoords(window_coord, &gl_coord); + } + MASK mask = gKeyboard->currentMask(TRUE); + // generate move event to update mouse coordinates + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) + { + return 0; + } + } + break; + + case WM_MOUSEWHEEL: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL"); + static short z_delta = 0; + + RECT client_rect; + + // eat scroll events that occur outside our window, since we use mouse position to direct scroll + // instead of keyboard focus + // NOTE: mouse_coord is in *window* coordinates for scroll events + POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)}; + + if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord) + && GetClientRect(window_imp->mWindowHandle, &client_rect)) + { + // we have a valid mouse point and client rect + if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x + || mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y) + { + // mouse is outside of client rect, so don't do anything + return 0; + } + } + + S16 incoming_z_delta = HIWORD(w_param); + z_delta += incoming_z_delta; + // cout << "z_delta " << z_delta << endl; + + // current mouse wheels report changes in increments of zDelta (+120, -120) + // Future, higher resolution mouse wheels may report smaller deltas. + // So we sum the deltas and only act when we've exceeded WHEEL_DELTA + // + // If the user rapidly spins the wheel, we can get messages with + // large deltas, like 480 or so. Thus we need to scroll more quickly. + if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta) + { + window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA); + z_delta = 0; + } + return 0; + } + /* + // TODO: add this after resolving _WIN32_WINNT issue + case WM_MOUSELEAVE: + { + window_imp->mCallbacks->handleMouseLeave(window_imp); + + // TRACKMOUSEEVENT track_mouse_event; + // track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT ); + // track_mouse_event.dwFlags = TME_LEAVE; + // track_mouse_event.hwndTrack = h_wnd; + // track_mouse_event.dwHoverTime = HOVER_DEFAULT; + // TrackMouseEvent( &track_mouse_event ); + return 0; + } + */ + // Handle mouse movement within the window + case WM_MOUSEMOVE: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE"); + window_imp->convertCoords(window_coord, &gl_coord); + MASK mask = gKeyboard->currentMask(TRUE); + window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); + return 0; + } + + case WM_SIZE: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE"); + S32 width = S32( LOWORD(l_param) ); + S32 height = S32( HIWORD(l_param) ); + + if (gDebugWindowProc) + { + BOOL maximized = ( w_param == SIZE_MAXIMIZED ); + BOOL restored = ( w_param == SIZE_RESTORED ); + BOOL minimized = ( w_param == SIZE_MINIMIZED ); + + LL_INFOS("Window") << "WINDOWPROC Size " + << width << "x" << height + << " max " << S32(maximized) + << " min " << S32(minimized) + << " rest " << S32(restored) + << LL_ENDL; + } + + // There's an odd behavior with WM_SIZE that I would call a bug. If + // the window is maximized, and you call MoveWindow() with a size smaller + // than a maximized window, it ends up sending WM_SIZE with w_param set + // to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work. + // (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see + // LLWindowWin32::moveWindow in this file). + + // If we are now restored, but we weren't before, this + // means that the window was un-minimized. + if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED) + { + window_imp->mCallbacks->handleActivate(window_imp, TRUE); + } + + // handle case of window being maximized from fully minimized state + if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED) + { + window_imp->mCallbacks->handleActivate(window_imp, TRUE); + } + + // Also handle the minimization case + if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED) + { + window_imp->mCallbacks->handleActivate(window_imp, FALSE); + } + + // Actually resize all of our views + if (w_param != SIZE_MINIMIZED) + { + // Ignore updates for minimizing and minimized "windows" + window_imp->mCallbacks->handleResize( window_imp, + LOWORD(l_param), + HIWORD(l_param) ); + } + + window_imp->mLastSizeWParam = w_param; + + return 0; + } + + case WM_SETFOCUS: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL; + } + window_imp->mCallbacks->handleFocus(window_imp); + return 0; + + case WM_KILLFOCUS: + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS"); + if (gDebugWindowProc) + { + LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL; + } + window_imp->mCallbacks->handleFocusLost(window_imp); + return 0; + + case WM_COPYDATA: + { + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA"); + // received a URL + PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param; + window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData); + }; + return 0; + + break; + } + + window_imp->mCallbacks->handlePauseWatchdog(window_imp); + } + + + // pass unhandled messages down to Windows + return DefWindowProc(h_wnd, u_msg, w_param, l_param); +} + +BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to) +{ + S32 client_height; + RECT client_rect; + LLCoordWindow window_position; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == to) + { + return FALSE; + } + + to->mX = from.mX; + client_height = client_rect.bottom - client_rect.top; + to->mY = client_height - from.mY - 1; + + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to) +{ + S32 client_height; + RECT client_rect; + + if (!mWindowHandle || + !GetClientRect(mWindowHandle, &client_rect) || + NULL == to) + { + return FALSE; + } + + to->mX = from.mX; + client_height = client_rect.bottom - client_rect.top; + to->mY = client_height - from.mY - 1; + + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to) +{ + POINT mouse_point; + + mouse_point.x = from.mX; + mouse_point.y = from.mY; + BOOL result = ScreenToClient(mWindowHandle, &mouse_point); + + if (result) + { + to->mX = mouse_point.x; + to->mY = mouse_point.y; + } + + return result; +} + +BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to) +{ + POINT mouse_point; + + mouse_point.x = from.mX; + mouse_point.y = from.mY; + BOOL result = ClientToScreen(mWindowHandle, &mouse_point); + + if (result) + { + to->mX = mouse_point.x; + to->mY = mouse_point.y; + } + + return result; +} + +BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to) +{ + LLCoordWindow window_coord; + + if (!mWindowHandle || (NULL == to)) + { + return FALSE; + } + + convertCoords(from, &window_coord); + convertCoords(window_coord, to); + return TRUE; +} + +BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to) +{ + LLCoordWindow window_coord; + + if (!mWindowHandle || (NULL == to)) + { + return FALSE; + } + + convertCoords(from, &window_coord); + convertCoords(window_coord, to); + return TRUE; +} + + +BOOL LLWindowWin32::isClipboardTextAvailable() +{ + return IsClipboardFormatAvailable(CF_UNICODETEXT); +} + + +BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst) +{ + BOOL success = FALSE; + + if (IsClipboardFormatAvailable(CF_UNICODETEXT)) + { + if (OpenClipboard(mWindowHandle)) + { + HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT); + if (h_data) + { + WCHAR *utf16str = (WCHAR*) GlobalLock(h_data); + if (utf16str) + { + dst = utf16str_to_wstring(utf16str); + LLWStringUtil::removeCRLF(dst); + GlobalUnlock(h_data); + success = TRUE; + } + } + CloseClipboard(); + } + } + + return success; +} + + +BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr) +{ + BOOL success = FALSE; + + if (OpenClipboard(mWindowHandle)) + { + EmptyClipboard(); + + // Provide a copy of the data in Unicode format. + LLWString sanitized_string(wstr); + LLWStringUtil::addCRLF(sanitized_string); + llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); + const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); + + // Memory is allocated and then ownership of it is transfered to the system. + HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); + if (hglobal_copy_utf16) + { + WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16); + if (copy_utf16) + { + memcpy(copy_utf16, out_utf16.c_str(), size_utf16); /* Flawfinder: ignore */ + GlobalUnlock(hglobal_copy_utf16); + + if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16)) + { + success = TRUE; + } + } + } + + CloseClipboard(); + } + + return success; +} + +// Constrains the mouse to the window. +void LLWindowWin32::setMouseClipping( BOOL b ) +{ + if( b != mIsMouseClipping ) + { + BOOL success = FALSE; + + if( b ) + { + GetClipCursor( &mOldMouseClip ); + + RECT client_rect_in_screen_space; + if( getClientRectInScreenSpace( &client_rect_in_screen_space ) ) + { + success = ClipCursor( &client_rect_in_screen_space ); + } + } + else + { + // Must restore the old mouse clip, which may be set by another window. + success = ClipCursor( &mOldMouseClip ); + SetRect( &mOldMouseClip, 0, 0, 0, 0 ); + } + + if( success ) + { + mIsMouseClipping = b; + } + } +} + +BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp ) +{ + BOOL success = FALSE; + + RECT client_rect; + if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) ) + { + POINT top_left; + top_left.x = client_rect.left; + top_left.y = client_rect.top; + ClientToScreen(mWindowHandle, &top_left); + + POINT bottom_right; + bottom_right.x = client_rect.right; + bottom_right.y = client_rect.bottom; + ClientToScreen(mWindowHandle, &bottom_right); + + SetRect( rectp, + top_left.x, + top_left.y, + bottom_right.x, + bottom_right.y ); + + success = TRUE; + } + + return success; +} + +void LLWindowWin32::flashIcon(F32 seconds) +{ + FLASHWINFO flash_info; + + flash_info.cbSize = sizeof(FLASHWINFO); + flash_info.hwnd = mWindowHandle; + flash_info.dwFlags = FLASHW_TRAY; + flash_info.uCount = UINT(seconds / ICON_FLASH_TIME); + flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds + FlashWindowEx(&flash_info); +} + +F32 LLWindowWin32::getGamma() +{ + return mCurrentGamma; +} + +BOOL LLWindowWin32::restoreGamma() +{ + return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); +} + +BOOL LLWindowWin32::setGamma(const F32 gamma) +{ + mCurrentGamma = gamma; + + LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; + + for ( int i = 0; i < 256; ++i ) + { + int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f ); + + int value = mult * i; + + if ( value > 0xffff ) + value = 0xffff; + + mCurrentGammaRamp [ 0 * 256 + i ] = + mCurrentGammaRamp [ 1 * 256 + i ] = + mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value; + }; + + return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp ); +} + +void LLWindowWin32::setFSAASamples(const U32 fsaa_samples) +{ + mFSAASamples = fsaa_samples; +} + +U32 LLWindowWin32::getFSAASamples() +{ + return mFSAASamples; +} + +LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions) +{ + if (!mSupportedResolutions) + { + mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS]; + DEVMODE dev_mode; + + mNumSupportedResolutions = 0; + for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++) + { + if (!EnumDisplaySettings(NULL, mode_num, &dev_mode)) + { + break; + } + + if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL && + dev_mode.dmPelsWidth >= 800 && + dev_mode.dmPelsHeight >= 600) + { + BOOL resolution_exists = FALSE; + for(S32 i = 0; i < mNumSupportedResolutions; i++) + { + if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth && + mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight) + { + resolution_exists = TRUE; + } + } + if (!resolution_exists) + { + mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth; + mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight; + mNumSupportedResolutions++; + } + } + } + } + + num_resolutions = mNumSupportedResolutions; + return mSupportedResolutions; +} + + +F32 LLWindowWin32::getNativeAspectRatio() +{ + if (mOverrideAspectRatio > 0.f) + { + return mOverrideAspectRatio; + } + else if (mNativeAspectRatio > 0.f) + { + // we grabbed this value at startup, based on the user's desktop settings + return mNativeAspectRatio; + } + // RN: this hack presumes that the largest supported resolution is monitor-limited + // and that pixels in that mode are square, therefore defining the native aspect ratio + // of the monitor...this seems to work to a close approximation for most CRTs/LCDs + S32 num_resolutions; + LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions); + + return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight); +} + +F32 LLWindowWin32::getPixelAspectRatio() +{ + F32 pixel_aspect = 1.f; + if (getFullscreen()) + { + LLCoordScreen screen_size; + getSize(&screen_size); + pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX; + } + + return pixel_aspect; +} + +// Change display resolution. Returns true if successful. +// protected +BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh) +{ + DEVMODE dev_mode; + dev_mode.dmSize = sizeof(dev_mode); + BOOL success = FALSE; + + // Don't change anything if we don't have to + if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) + { + if (dev_mode.dmPelsWidth == width && + dev_mode.dmPelsHeight == height && + dev_mode.dmBitsPerPel == bits && + dev_mode.dmDisplayFrequency == refresh ) + { + // ...display mode identical, do nothing + return TRUE; + } + } + + memset(&dev_mode, 0, sizeof(dev_mode)); + dev_mode.dmSize = sizeof(dev_mode); + dev_mode.dmPelsWidth = width; + dev_mode.dmPelsHeight = height; + dev_mode.dmBitsPerPel = bits; + dev_mode.dmDisplayFrequency = refresh; + dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY; + + // CDS_FULLSCREEN indicates that this is a temporary change to the device mode. + LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN); + + success = (DISP_CHANGE_SUCCESSFUL == cds_result); + + if (!success) + { + LL_WARNS("Window") << "setDisplayResolution failed, " + << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL; + } + + return success; +} + +// protected +BOOL LLWindowWin32::setFullscreenResolution() +{ + if (mFullscreen) + { + return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh); + } + else + { + return FALSE; + } +} + +// protected +BOOL LLWindowWin32::resetDisplayResolution() +{ + LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL; + + LONG cds_result = ChangeDisplaySettings(NULL, 0); + + BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result); + + if (!success) + { + LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL; + } + + LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL; + + return success; +} + +void LLWindowWin32::swapBuffers() +{ + SwapBuffers(mhDC); +} + + +// +// LLSplashScreenImp +// +LLSplashScreenWin32::LLSplashScreenWin32() +: mWindow(NULL) +{ +} + +LLSplashScreenWin32::~LLSplashScreenWin32() +{ +} + +void LLSplashScreenWin32::showImpl() +{ + // This appears to work. ??? + HINSTANCE hinst = GetModuleHandle(NULL); + + mWindow = CreateDialog(hinst, + TEXT("SPLASHSCREEN"), + NULL, // no parent + (DLGPROC) LLSplashScreenWin32::windowProc); + ShowWindow(mWindow, SW_SHOW); +} + + +void LLSplashScreenWin32::updateImpl(const std::string& mesg) +{ + if (!mWindow) return; + + WCHAR w_mesg[1024]; + mbstowcs(w_mesg, mesg.c_str(), 1024); + + SendDlgItemMessage(mWindow, + 666, // HACK: text id + WM_SETTEXT, + FALSE, + (LPARAM)w_mesg); +} + + +void LLSplashScreenWin32::hideImpl() +{ + if (mWindow) + { + DestroyWindow(mWindow); + mWindow = NULL; + } +} + + +// static +LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg, + WPARAM w_param, LPARAM l_param) +{ + // Just give it to windows + return DefWindowProc(h_wnd, u_msg, w_param, l_param); +} + +// +// Helper Funcs +// + +S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type) +{ + UINT uType; + + switch(type) + { + case OSMB_OK: + uType = MB_OK; + break; + case OSMB_OKCANCEL: + uType = MB_OKCANCEL; + break; + case OSMB_YESNO: + uType = MB_YESNO; + break; + default: + uType = MB_OK; + break; + } + + // HACK! Doesn't properly handle wide strings! + int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType); + S32 retval; + + switch(retval_win) + { + case IDYES: + retval = OSBTN_YES; + break; + case IDNO: + retval = OSBTN_NO; + break; + case IDOK: + retval = OSBTN_OK; + break; + case IDCANCEL: + retval = OSBTN_CANCEL; + break; + default: + retval = OSBTN_CANCEL; + break; + } + + return retval; +} + + +void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) +{ + bool found = false; + S32 i; + for (i = 0; i < gURLProtocolWhitelistCount; i++) + { + if (escaped_url.find(gURLProtocolWhitelist[i]) == 0) + { + found = true; + break; + } + } + + if (!found) + { + LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL; + return; + } + + LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL; + + // replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work + // reliablly on Vista. + + // this is madness.. no, this is.. + LLWString url_wstring = utf8str_to_wstring( escaped_url ); + llutf16string url_utf16 = wstring_to_utf16str( url_wstring ); + + // let the OS decide what to use to open the URL + SHELLEXECUTEINFO sei = { sizeof( sei ) }; + sei.fMask = SEE_MASK_FLAG_DDEWAIT; + sei.nShow = SW_SHOWNORMAL; + sei.lpVerb = L"open"; + sei.lpFile = url_utf16.c_str(); + ShellExecuteEx( &sei ); + + //// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES + //// DELETE THIS ONCE THE MERGES ARE DONE + + // Figure out the user's default web browser + // HKEY_CLASSES_ROOT\http\shell\open\command + /* + std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command"; + WCHAR reg_path_wstr[256]; + mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) ); + + HKEY key; + WCHAR browser_open_wstr[1024]; + DWORD buffer_length = 1024; + RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key); + RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length); + RegCloseKey(key); + + // Convert to STL string + LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr); + + if (browser_open_wstring.length() < 2) + { + LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL; + return; + } + + // Extract the process that's supposed to be launched + LLWString browser_executable; + if (browser_open_wstring[0] == '"') + { + // executable is quoted, find the matching quote + size_t quote_pos = browser_open_wstring.find('"', 1); + // copy out the string including both quotes + browser_executable = browser_open_wstring.substr(0, quote_pos+1); + } + else + { + // executable not quoted, find a space + size_t space_pos = browser_open_wstring.find(' ', 1); + browser_executable = browser_open_wstring.substr(0, space_pos); + } + + LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL; + LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL; + + // Convert URL to wide string for Windows API + // Assume URL is UTF8, as can come from scripts + LLWString url_wstring = utf8str_to_wstring(escaped_url); + llutf16string url_utf16 = wstring_to_utf16str(url_wstring); + + // Convert executable and path to wide string for Windows API + llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable); + + // ShellExecute returns HINSTANCE for backwards compatiblity. + // MS docs say to cast to int and compare to 32. + HWND our_window = NULL; + LPCWSTR directory_wstr = NULL; + int retval = (int) ShellExecute(our_window, // Flawfinder: ignore + L"open", + browser_exec_utf16.c_str(), + url_utf16.c_str(), + directory_wstr, + SW_SHOWNORMAL); + if (retval > 32) + { + LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL; + } + else + { + LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL; + } + */ +} + + +BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b ) +{ + BOOL retval = FALSE; + + static CHOOSECOLOR cc; + static COLORREF crCustColors[16]; + cc.lStructSize = sizeof(CHOOSECOLOR); + cc.hwndOwner = mWindowHandle; + cc.hInstance = NULL; + cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f)); + //cc.rgbResult = RGB (0x80,0x80,0x80); + cc.lpCustColors = crCustColors; + cc.Flags = CC_RGBINIT | CC_FULLOPEN; + cc.lCustData = 0; + cc.lpfnHook = NULL; + cc.lpTemplateName = NULL; + + // This call is modal, so pause agent + //send_agent_pause(); // this is in newview and we don't want to set up a dependency + { + retval = ChooseColor(&cc); + } + //send_agent_resume(); // this is in newview and we don't want to set up a dependency + + *b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f; + + *g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f; + + *r = ((F32)(cc.rgbResult & 0xff)) / 255.f; + + return (retval); +} + +void *LLWindowWin32::getPlatformWindow() +{ + return (void*)mWindowHandle; +} + +void LLWindowWin32::bringToFront() +{ + BringWindowToTop(mWindowHandle); +} + +// set (OS) window focus back to the client +void LLWindowWin32::focusClient() +{ + SetFocus ( mWindowHandle ); +} + +void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) +{ + if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable()) + { + return; + } + + if (preeditor != mPreeditor && !b) + { + // This condition may occur with a call to + // setEnabled(BOOL) from LLTextEditor or LLLineEditor + // when the control is not focused. + // We need to silently ignore the case so that + // the language input status of the focused control + // is not disturbed. + return; + } + + // Take care of old and new preeditors. + if (preeditor != mPreeditor || !b) + { + if (sLanguageTextInputAllowed) + { + interruptLanguageTextInput(); + } + mPreeditor = (b ? preeditor : NULL); + } + + sLanguageTextInputAllowed = b; + + if ( sLanguageTextInputAllowed ) + { + // Allowing: Restore the previous IME status, so that the user has a feeling that the previous + // text input continues naturally. Be careful, however, the IME status is meaningful only during the user keeps + // using same Input Locale (aka Keyboard Layout). + if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::setOpenStatus(himc, TRUE); + LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode); + LLWinImm::releaseContext(mWindowHandle, himc); + } + } + else + { + // Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly. + // However, do it after saving the current IME status. We need to restore the status when + // allowing language text input again. + sWinInputLocale = GetKeyboardLayout(0); + sWinIMEOpened = LLWinImm::isIME(sWinInputLocale); + if (sWinIMEOpened) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + sWinIMEOpened = LLWinImm::getOpenStatus(himc); + if (sWinIMEOpened) + { + LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode); + + // We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's + // keyboard hooking, because Some IME reacts only on the former and some other on the latter... + LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode); + LLWinImm::setOpenStatus(himc, FALSE); + } + LLWinImm::releaseContext(mWindowHandle, himc); + } + } +} + +void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, + CANDIDATEFORM *form) +{ + LLCoordWindow caret_coord, top_left, bottom_right; + convertCoords(caret, &caret_coord); + convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); + convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); + + memset(form, 0, sizeof(CANDIDATEFORM)); + form->dwStyle = CFS_EXCLUDE; + form->ptCurrentPos.x = caret_coord.mX; + form->ptCurrentPos.y = caret_coord.mY; + form->rcArea.left = top_left.mX; + form->rcArea.top = top_left.mY; + form->rcArea.right = bottom_right.mX; + form->rcArea.bottom = bottom_right.mY; +} + + +// Put the IME window at the right place (near current text input). Point coordinates should be the top of the current text line. +void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position ) +{ + if (sLanguageTextInputAllowed && LLWinImm::isAvailable()) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + + LLCoordWindow win_pos; + convertCoords( position, &win_pos ); + + if ( win_pos.mX >= 0 && win_pos.mY >= 0 && + (win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) ) + { + COMPOSITIONFORM ime_form; + memset( &ime_form, 0, sizeof(ime_form) ); + ime_form.dwStyle = CFS_POINT; + ime_form.ptCurrentPos.x = win_pos.mX; + ime_form.ptCurrentPos.y = win_pos.mY; + + LLWinImm::setCompositionWindow( himc, &ime_form ); + + sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY ); + } + + LLWinImm::releaseContext(mWindowHandle, himc); + } +} + + +void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control, + IMECHARPOSITION *char_position) +{ + LLCoordScreen caret_coord, top_left, bottom_right; + convertCoords(caret, &caret_coord); + convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left); + convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right); + + char_position->pt.x = caret_coord.mX; + char_position->pt.y = top_left.mY; // Windows wants the coordinate of upper left corner of a character... + char_position->cLineHeight = bottom_right.mY - top_left.mY; + char_position->rcDocument.left = top_left.mX; + char_position->rcDocument.top = top_left.mY; + char_position->rcDocument.right = bottom_right.mX; + char_position->rcDocument.bottom = bottom_right.mY; +} + +void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont) +{ + // Our font is a list of FreeType recognized font files that may + // not have a corresponding ones in Windows' fonts. Hence, we + // can't simply tell Windows which font we are using. We will + // notify a _standard_ font for a current input locale instead. + // We use a hard-coded knowledge about the Windows' standard + // configuration to do so... + + memset(logfont, 0, sizeof(LOGFONT)); + + const WORD lang_id = LOWORD(GetKeyboardLayout(0)); + switch (PRIMARYLANGID(lang_id)) + { + case LANG_CHINESE: + // We need to identify one of two Chinese fonts. + switch (SUBLANGID(lang_id)) + { + case SUBLANG_CHINESE_SIMPLIFIED: + case SUBLANG_CHINESE_SINGAPORE: + logfont->lfCharSet = GB2312_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("SimHei")); + break; + case SUBLANG_CHINESE_TRADITIONAL: + case SUBLANG_CHINESE_HONGKONG: + case SUBLANG_CHINESE_MACAU: + default: + logfont->lfCharSet = CHINESEBIG5_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("MingLiU")); + break; + } + break; + case LANG_JAPANESE: + logfont->lfCharSet = SHIFTJIS_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("MS Gothic")); + break; + case LANG_KOREAN: + logfont->lfCharSet = HANGUL_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("Gulim")); + break; + default: + logfont->lfCharSet = ANSI_CHARSET; + lstrcpy(logfont->lfFaceName, TEXT("Tahoma")); + break; + } + + logfont->lfHeight = mPreeditor->getPreeditFontSize(); + logfont->lfWeight = FW_NORMAL; +} + +U32 LLWindowWin32::fillReconvertString(const LLWString &text, + S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string) +{ + const llutf16string text_utf16 = wstring_to_utf16str(text); + const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR); + if (reconvert_string && reconvert_string->dwSize >= required_size) + { + const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus); + const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length); + + reconvert_string->dwVersion = 0; + reconvert_string->dwStrLen = text_utf16.length(); + reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING); + reconvert_string->dwCompStrLen = focus_utf16_length; + reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR); + reconvert_string->dwTargetStrLen = 0; + reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR); + + const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING)); + memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR)); + } + return required_size; +} + +void LLWindowWin32::updateLanguageTextInputArea() +{ + if (!mPreeditor || !LLWinImm::isAvailable()) + { + return; + } + + LLCoordGL caret_coord; + LLRect preedit_bounds; + if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL)) + { + mLanguageTextInputPointGL = caret_coord; + mLanguageTextInputAreaGL = preedit_bounds; + + CANDIDATEFORM candidate_form; + fillCandidateForm(caret_coord, preedit_bounds, &candidate_form); + + HIMC himc = LLWinImm::getContext(mWindowHandle); + // Win32 document says there may be up to 4 candidate windows. + // This magic number 4 appears only in the document, and + // there are no constant/macro for the value... + for (int i = 3; i >= 0; --i) + { + candidate_form.dwIndex = i; + LLWinImm::setCandidateWindow(himc, &candidate_form); + } + LLWinImm::releaseContext(mWindowHandle, himc); + } +} + +void LLWindowWin32::interruptLanguageTextInput() +{ + if (mPreeditor) + { + if (LLWinImm::isAvailable()) + { + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0); + LLWinImm::releaseContext(mWindowHandle, himc); + } + + // Win32 document says there will be no composition string + // after NI_COMPOSITIONSTR returns. The following call to + // resetPreedit should be a NOP unless IME goes mad... + mPreeditor->resetPreedit(); + } +} + +void LLWindowWin32::handleStartCompositionMessage() +{ + // Let IME know the font to use in feedback UI. + LOGFONT logfont; + fillCompositionLogfont(&logfont); + HIMC himc = LLWinImm::getContext(mWindowHandle); + LLWinImm::setCompositionFont(himc, &logfont); + LLWinImm::releaseContext(mWindowHandle, himc); +} + +// Handle WM_IME_COMPOSITION message. + +void LLWindowWin32::handleCompositionMessage(const U32 indexes) +{ + BOOL needs_update = FALSE; + LLWString result_string; + LLWString preedit_string; + S32 preedit_string_utf16_length = 0; + LLPreeditor::segment_lengths_t preedit_segment_lengths; + LLPreeditor::standouts_t preedit_standouts; + + // Step I: Receive details of preedits from IME. + + HIMC himc = LLWinImm::getContext(mWindowHandle); + + if (indexes & GCS_RESULTSTR) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0); + if (size >= 0) + { + const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; + size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size); + if (size > 0) + { + result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); + } + delete[] data; + needs_update = TRUE; + } + } + + if (indexes & GCS_COMPSTR) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0); + if (size >= 0) + { + const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1]; + size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size); + if (size > 0) + { + preedit_string_utf16_length = size / sizeof(WCHAR); + preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR))); + } + delete[] data; + needs_update = TRUE; + } + } + + if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0); + if (size > 0) + { + const LPDWORD data = new DWORD[size / sizeof(DWORD)]; + size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size); + if (size >= sizeof(DWORD) * 2 + && data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length) + { + preedit_segment_lengths.resize(size / sizeof(DWORD) - 1); + S32 offset = 0; + for (U32 i = 0; i < preedit_segment_lengths.size(); i++) + { + const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]); + preedit_segment_lengths[i] = length; + offset += length; + } + } + delete[] data; + } + } + + if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1) + { + LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0); + if (size > 0) + { + const LPBYTE data = new BYTE[size / sizeof(BYTE)]; + size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size); + if (size == preedit_string_utf16_length) + { + preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); + S32 offset = 0; + for (U32 i = 0; i < preedit_segment_lengths.size(); i++) + { + if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset]) + { + preedit_standouts[i] = TRUE; + } + offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]); + } + } + delete[] data; + } + } + + S32 caret_position = preedit_string.length(); + if (indexes & GCS_CURSORPOS) + { + const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0); + if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length) + { + caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16); + } + } + + if (indexes == 0) + { + // I'm not sure this condition really happens, but + // Windows SDK document says it is an indication + // of "reset everything." + needs_update = TRUE; + } + + LLWinImm::releaseContext(mWindowHandle, himc); + + // Step II: Update the active preeditor. + + if (needs_update) + { + mPreeditor->resetPreedit(); + + if (result_string.length() > 0) + { + for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++) + { + mPreeditor->handleUnicodeCharHere(*i); + } + } + + if (preedit_string.length() == 0) + { + preedit_segment_lengths.clear(); + preedit_standouts.clear(); + } + else + { + if (preedit_segment_lengths.size() == 0) + { + preedit_segment_lengths.assign(1, preedit_string.length()); + } + if (preedit_standouts.size() == 0) + { + preedit_standouts.assign(preedit_segment_lengths.size(), FALSE); + } + } + mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position); + + // Some IME doesn't query char position after WM_IME_COMPOSITION, + // so we need to update them actively. + updateLanguageTextInputArea(); + } +} + +// Given a text and a focus range, find_context finds and returns a +// surrounding context of the focused subtext. A variable pointed +// to by offset receives the offset in llwchars of the beginning of +// the returned context string in the given wtext. + +static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset) +{ + static const S32 CONTEXT_EXCESS = 30; // This value is by experiences. + + const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS); + S32 end = focus + focus_length; + while (end < e && '\n' != wtext[end]) + { + end++; + } + + const S32 s = llmax(0, focus - CONTEXT_EXCESS); + S32 start = focus; + while (start > s && '\n' != wtext[start - 1]) + { + --start; + } + + *offset = start; + return wtext.substr(start, end - start); +} + +// final stage of handling drop requests - both from WM_DROPFILES message +// for files and via IDropTarget interface requests. +LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ) +{ + return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url ); +} + +// Handle WM_IME_REQUEST message. +// If it handled the message, returns TRUE. Otherwise, FALSE. +// When it handled the message, the value to be returned from +// the Window Procedure is set to *result. + +BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result) +{ + if ( mPreeditor ) + { + switch (request) + { + case IMR_CANDIDATEWINDOW: // http://msdn2.microsoft.com/en-us/library/ms776080.aspx + { + LLCoordGL caret_coord; + LLRect preedit_bounds; + mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL); + + CANDIDATEFORM *const form = (CANDIDATEFORM *)param; + DWORD const dwIndex = form->dwIndex; + fillCandidateForm(caret_coord, preedit_bounds, form); + form->dwIndex = dwIndex; + + *result = 1; + return TRUE; + } + case IMR_QUERYCHARPOSITION: + { + IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param; + + // char_position->dwCharPos counts in number of + // WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the + // number to getPreeditLocation. + + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 preedit, preedit_length; + mPreeditor->getPreeditRange(&preedit, &preedit_length); + LLCoordGL caret_coord; + LLRect preedit_bounds, text_control; + const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos); + + if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control)) + { + LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL; + return FALSE; + } + fillCharPosition(caret_coord, preedit_bounds, text_control, char_position); + + *result = 1; + return TRUE; + } + case IMR_COMPOSITIONFONT: + { + fillCompositionLogfont((LOGFONT *)param); + + *result = 1; + return TRUE; + } + case IMR_RECONVERTSTRING: + { + mPreeditor->resetPreedit(); + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 select, select_length; + mPreeditor->getSelectionRange(&select, &select_length); + + S32 context_offset; + const LLWString context = find_context(wtext, select, select_length, &context_offset); + + RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param; + const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string); + if (reconvert_string) + { + if (select_length == 0) + { + // Let the IME to decide the reconversion range, and + // adjust the reconvert_string structure accordingly. + HIMC himc = LLWinImm::getContext(mWindowHandle); + const BOOL adjusted = LLWinImm::setCompositionString(himc, + SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0); + LLWinImm::releaseContext(mWindowHandle, himc); + if (adjusted) + { + const llutf16string & text_utf16 = wstring_to_utf16str(context); + const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR); + const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen; + select = utf16str_wstring_length(text_utf16, new_preedit_start); + select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select; + select += context_offset; + } + } + mPreeditor->markAsPreedit(select, select_length); + } + + *result = size; + return TRUE; + } + case IMR_CONFIRMRECONVERTSTRING: + { + *result = FALSE; + return TRUE; + } + case IMR_DOCUMENTFEED: + { + const LLWString & wtext = mPreeditor->getPreeditString(); + S32 preedit, preedit_length; + mPreeditor->getPreeditRange(&preedit, &preedit_length); + + S32 context_offset; + LLWString context = find_context(wtext, preedit, preedit_length, &context_offset); + preedit -= context_offset; + if (preedit_length) + { + // IMR_DOCUMENTFEED may be called when we have an active preedit. + // We should pass the context string *excluding* the preedit string. + // Otherwise, some IME are confused. + context.erase(preedit, preedit_length); + } + + RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param; + *result = fillReconvertString(context, preedit, 0, reconvert_string); + return TRUE; + } + default: + return FALSE; + } + } + + return FALSE; +} + +//static +std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList() +{ + // Fonts previously in getFontListSans() have moved to fonts.xml. + return std::vector<std::string>(); +} + + +#endif // LL_WINDOWS -- GitLab From 84e985e255b66e9ffb09deba373136c97eeb86b3 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Mon, 1 Feb 2010 17:24:03 -0800 Subject: [PATCH 415/521] Preferences clean up in advance of qa beta branch --- .../xui/en/panel_preferences_advanced.xml | 307 +++++++++--------- .../xui/en/panel_preferences_alerts.xml | 46 +-- .../xui/en/panel_preferences_general.xml | 24 +- .../xui/en/panel_preferences_sound.xml | 109 +++---- 4 files changed, 229 insertions(+), 257 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 141678f7eb2..4d14d46743d 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> - <panel border="true" - follows="left|top|right|bottom" + follows="all" height="408" + label="Advanced" layout="topleft" left="102" name="advanced" @@ -13,130 +13,29 @@ name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> - <check_box - control_name="UseChatBubbles" - follows="left|top" - height="16" - label="Bubble chat" - layout="topleft" - left="30" - top="10" - name="bubble_text_chat" - width="150" /> - <color_swatch - can_apply_immediately="true" - color="0 0 0 1" - control_name="BackgroundChatColor" - follows="left|top" - height="47" - layout="topleft" - left_delta="280" - name="background" - tool_tip="Choose color for bubble chat" - top_delta="1" - width="44"> - <color_swatch.init_callback - function="Pref.getUIColor" - parameter="BackgroundChatColor" /> - <color_swatch.commit_callback - function="Pref.applyUIColor" - parameter="BackgroundChatColor" /> - </color_swatch> - <slider - control_name="ChatBubbleOpacity" - follows="left|top" - height="16" - increment="0.05" - initial_value="1" - label="Opacity" - layout="topleft" - left_delta="-230" - top_pad="-28" - label_width="50" - name="bubble_chat_opacity" - width="200" /> - <text - follows="left|top" - type="string" - length="1" - height="25" - layout="topleft" - left="30" - top_pad="5" - name="AspectRatioLabel1" - tool_tip="width / height" - label_width="50" - width="120"> - Aspect ratio - </text> - <combo_box - allow_text_entry="true" - height="23" - follows="left|top" - layout="topleft" - left_pad="0" - max_chars="100" - name="aspect_ratio" - tool_tip="width / height" - top_delta="0" - width="150"> - <combo_box.item - enabled="true" - label=" 4:3 (Standard CRT)" - name="item1" - value="1.333333" /> - <combo_box.item - enabled="true" - label=" 5:4 (1280x1024 LCD)" - name="item2" - value="1.25" /> - <combo_box.item - enabled="true" - label=" 8:5 (Widescreen)" - name="item3" - value="1.6" /> - <combo_box.item - enabled="true" - label=" 16:9 (Widescreen)" - name="item4" - value="1.7777777" /> - </combo_box> - <check_box - control_name="FullScreenAutoDetectAspectRatio" - follows="left|top" - height="25" - label="Auto-detect" - layout="topleft" - left_pad="10" - name="aspect_auto_detect" - width="256"> - <check_box.commit_callback - function="Pref.AutoDetectAspect" /> - </check_box> - <text - follows="left|top" - type="string" - length="1" - height="10" - left="30" - name="heading1" - top_pad="5" - width="270"> -Camera: - </text> + <icon + follows="left|top" + height="18" + image_name="Cam_FreeCam_Off" + layout="topleft" + name="camera_icon" + mouse_opaque="false" + visible="true" + width="18" + left="30" + top="10"/> <slider can_edit_text="true" - control_name="CameraAngle" + control_name="CameraAngle" decimal_digits="2" - top_pad="5" follows="left|top" height="16" increment="0.025" initial_value="1.57" layout="topleft" label_width="100" - label="View Angle" - left_delta="50" + label="View angle" + left_pad="30" max_val="2.97" min_val="0.17" name="camera_fov" @@ -165,11 +64,11 @@ Camera: type="string" length="1" height="10" - left="30" + left="80" name="heading2" width="270" top_pad="5"> -Automatic positioning for: +Automatic position for: </text> <check_box control_name="EditCameraMovement" @@ -177,7 +76,7 @@ Automatic positioning for: follows="left|top" label="Build/Edit" layout="topleft" - left_delta="50" + left_delta="30" name="edit_camera_movement" tool_tip="Use automatic camera positioning when entering and exiting edit mode" width="280" @@ -191,27 +90,27 @@ Automatic positioning for: name="appearance_camera_movement" tool_tip="Use automatic camera positioning while in edit mode" width="242" /> - <text - follows="left|top" - type="string" - length="1" - height="10" - left="30" - name="heading3" - top_pad="5" - width="270"> -Avatars: - </text> + <icon + follows="left|top" + height="18" + image_name="Move_Walk_Off" + layout="topleft" + name="avatar_icon" + mouse_opaque="false" + visible="true" + width="18" + top_pad="2" + left="30" + /> <check_box control_name="FirstPersonAvatarVisible" follows="left|top" height="20" label="Show me in Mouselook" layout="topleft" - left_delta="50" + left_pad="30" name="first_person_avatar_visible" - width="256" - top_pad="0"/> + width="256" /> <check_box control_name="ArrowKeysAlwaysMove" follows="left|top" @@ -242,22 +141,61 @@ Avatars: name="enable_lip_sync" width="237" top_pad="0" /> + <check_box + control_name="UseChatBubbles" + follows="left|top" + height="16" + label="Bubble chat" + layout="topleft" + left="78" + top_pad="6" + name="bubble_text_chat" + width="150" /> + <slider + control_name="ChatBubbleOpacity" + follows="left|top" + height="16" + increment="0.05" + initial_value="1" + label="Opacity" + layout="topleft" + left="80" + label_width="50" + name="bubble_chat_opacity" + width="200" /> + <color_swatch + can_apply_immediately="true" + color="0 0 0 1" + control_name="BackgroundChatColor" + follows="left|top" + height="50" + layout="topleft" + left_pad="10" + name="background" + tool_tip="Choose color for bubble chat" + width="38"> + <color_swatch.init_callback + function="Pref.getUIColor" + parameter="BackgroundChatColor" /> + <color_swatch.commit_callback + function="Pref.applyUIColor" + parameter="BackgroundChatColor" /> + </color_swatch> <check_box control_name="ShowScriptErrors" follows="left|top" height="20" - label="Show script errors" + label="Show script errors in:" layout="topleft" left="30" name="show_script_errors" - width="256" - top_pad="5"/> + width="256" /> <radio_group enabled_control="ShowScriptErrors" control_name="ShowScriptErrorsLocation" follows="top|left" draw_border="false" - height="40" + height="16" layout="topleft" left_delta="50" name="show_location" @@ -265,7 +203,7 @@ Avatars: width="364"> <radio_item height="16" - label="In chat" + label="Nearby chat" layout="topleft" left="3" name="0" @@ -273,7 +211,7 @@ Avatars: width="315" /> <radio_item height="16" - label="In a window" + label="Separate window" layout="topleft" left_delta="175" name="1" @@ -284,50 +222,105 @@ Avatars: follows="top|left" enabled_control="EnableVoiceChat" control_name="PushToTalkToggle" - height="20" - label="Toggle mode for microphone when I press the Speak trigger key:" + height="15" + label="Toggle speak on/off when I press:" layout="topleft" left="30" name="push_to_talk_toggle_check" width="237" - top_pad="-25" tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/> <line_editor follows="top|left" control_name="PushToTalkButton" - enabled="false" + enabled="false" enabled_control="EnableVoiceChat" - height="19" - left_delta="50" - max_length="254" + height="23" + left="80" + max_length="200" name="modifier_combo" label="Push-to-Speak trigger" - top_pad="0" - width="280" /> + top_pad="5" + width="200" /> <button follows="top|left" enabled_control="EnableVoiceChat" height="23" label="Set Key" - left_delta="0" + left_pad="5" name="set_voice_hotkey_button" - width="115" - top_pad="5"> + width="100"> <button.commit_callback function="Pref.VoiceSetKey" /> </button> <button - bottom_delta="0" enabled_control="EnableVoiceChat" - follows="left" + follows="top|left" halign="center" height="23" - label="Middle Mouse Button" - left_delta="120" + image_overlay="Refresh_Off" + tool_tip="Reset to Middle Mouse Button" mouse_opaque="true" name="set_voice_middlemouse_button" - width="160"> + left_pad="5" + width="25"> <button.commit_callback function="Pref.VoiceSetMiddleMouse" /> </button> + <text + follows="left|top" + type="string" + length="1" + height="13" + layout="topleft" + left="30" + top_pad="8" + name="AspectRatioLabel1" + tool_tip="width / height" + label_width="50" + width="120"> + Aspect ratio + </text> + <combo_box + allow_text_entry="true" + height="23" + follows="left|top" + layout="topleft" + left="80" + max_chars="100" + name="aspect_ratio" + tool_tip="width / height" + width="150"> + <combo_box.item + enabled="true" + label=" 4:3 (Standard CRT)" + name="item1" + value="1.333333" /> + <combo_box.item + enabled="true" + label=" 5:4 (1280x1024 LCD)" + name="item2" + value="1.25" /> + <combo_box.item + enabled="true" + label=" 8:5 (Widescreen)" + name="item3" + value="1.6" /> + <combo_box.item + enabled="true" + label=" 16:9 (Widescreen)" + name="item4" + value="1.7777777" /> + </combo_box> + <check_box + control_name="FullScreenAutoDetectAspectRatio" + follows="left|top" + height="25" + label="Automatic" + layout="topleft" + left_pad="10" + name="aspect_auto_detect" + width="256"> + <check_box.commit_callback + function="Pref.AutoDetectAspect" /> + </check_box> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml index ace8281b4e3..188fd3b7bc0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel border="true" - height="500" + height="408" label="Popups" layout="topleft" left="0" @@ -14,7 +14,7 @@ follows="top|left" height="12" layout="topleft" - left="30" + left="10" name="tell_me_label" top="10" width="300"> @@ -32,7 +32,7 @@ <check_box control_name="ChatOnlineNotification" height="16" - label="When my friends log out or in" + label="When my friends log in or out" layout="topleft" left_delta="0" name="friends_online_notify_checkbox" @@ -42,38 +42,33 @@ type="string" length="1" follows="top|left" - font="SansSerifBold" height="12" layout="topleft" - left="30" + left="10" name="show_label" - top_pad="14" + top_pad="8" width="450"> - Always show these notifications: + Always show: </text> <scroll_list follows="top|left" - height="92" + height="140" layout="topleft" left="10" - multi_select="true" + multi_select="true" name="enabled_popups" width="475" /> <button enabled_control="FirstSelectedDisabledPopups" follows="top|left" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Up" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" - left_delta="137" + left="180" name="enable_this_popup" - top_pad="10" - width="43"> + top_pad="5" + width="40"> <button.commit_callback function="Pref.ClickEnablePopup" /> </button> @@ -81,17 +76,13 @@ enabled_control="FirstSelectedEnabledPopups" follows="top|left" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Down" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" - left_pad="50" + left_pad="40" name="disable_this_popup" top_delta="0" - width="43"> + width="40"> <button.commit_callback function="Pref.ClickDisablePopup" /> </button> @@ -99,21 +90,20 @@ type="string" length="1" follows="top|left" - font="SansSerifBold" height="12" layout="topleft" - left="30" + left="10" name="dont_show_label" - top_pad="10" + top_pad="-10" width="450"> - Never show these notifications: + Never show: </text> <scroll_list follows="top|left" - height="92" + height="140" layout="topleft" left="10" - multi_select="true" + multi_select="true" name="disabled_popups" width="475" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 22c75a595ed..099c789e4be 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -89,11 +89,12 @@ <text font="SansSerifSmall" type="string" + text_color="White_50" length="1" follows="left|top" height="18" layout="topleft" - left_pad="5" + left_pad="10" name="language_textbox2" width="200"> (Requires restart) @@ -179,7 +180,7 @@ left_pad="5" name="show_location_checkbox" top_delta="5" - width="256" /> + width="256" /> <text type="string" length="1" @@ -203,21 +204,21 @@ layout="topleft" name="radio" value="0" - width="100" /> + width="75" /> <radio_item label="On" layout="topleft" left_pad="12" name="radio2" value="1" - width="100" /> + width="75" /> <radio_item label="Show briefly" layout="topleft" left_pad="12" name="radio3" - value="2" - width="100" /> + value="2" + width="160" /> </radio_group> <check_box enabled_control="AvatarNameTagMode" @@ -323,11 +324,10 @@ follows="left|top" height="13" layout="topleft" - text_color="white" left="30" mouse_opaque="false" name="text_box3" - top_pad="15" + top_pad="10" width="240"> Busy mode response: </text> @@ -336,18 +336,16 @@ text_readonly_color="LabelDisabledColor" bg_writeable_color="LtGray" use_ellipses="false" - bg_visible="true" - border_visible="true" hover="false" commit_on_focus_lost = "true" follows="left|top" - height="50" + height="60" layout="topleft" left="50" name="busy_response" - width="400" + width="440" word_wrap="true"> log_in_to_change </text_editor> - + </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index c01a0322096..8bff865eb17 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -33,16 +33,15 @@ <button control_name="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" + left_pad="10" name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <check_box control_name="MuteWhenMinimized" height="15" @@ -74,20 +73,19 @@ function="Pref.setControlFalse" parameter="MuteAmbient" /> </slider> - <button - control_name="MuteAmbient" + <button + control_name="MuteAmbient" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_wind" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelUI" disabled_control="MuteAudio" @@ -113,16 +111,15 @@ control_name="MuteUI" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_ui" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelMedia" disabled_control="MuteAudio" @@ -144,20 +141,19 @@ function="Pref.setControlFalse" parameter="MuteMedia" /> </slider> - <button + <button control_name="MuteMedia" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_media" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelSFX" disabled_control="MuteAudio" @@ -179,20 +175,19 @@ function="Pref.setControlFalse" parameter="MuteSounds" /> </slider> - <button + <button control_name="MuteSounds" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_sfx" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelMusic" disabled_control="MuteAudio" @@ -214,20 +209,19 @@ function="Pref.setControlFalse" parameter="MuteMusic" /> </slider> - <button + <button control_name="MuteMusic" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_music" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <check_box label_text.halign="left" follows="left|top" @@ -236,10 +230,9 @@ disabled_control="CmdLineDisableVoice" label="Enable voice" layout="topleft" - font.style="BOLD" - left="101" + left="28" name="enable_voice_check" - top_pad="13" + top_pad="5" width="110" > </check_box> @@ -265,21 +258,19 @@ function="Pref.setControlFalse" parameter="MuteVoice" /> </slider> - <button + <button control_name="MuteVoice" - enabled_control="EnableVoiceChat" disabled_control="MuteAudio" follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_voice" + left_pad="10" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <text type="string" length="1" @@ -366,7 +357,7 @@ name="device_settings_panel" class="panel_voice_device_settings" width="501" - top="280"> + top="285"> <panel.string name="default_text"> Default -- GitLab From 4ad357ec70e15afdfe78816990cb23c7ba17619c Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Mon, 1 Feb 2010 17:51:30 -0800 Subject: [PATCH 416/521] Fixes for EXT-4689 (Long-word chat spam cripples fps and/or disconnects client) Removed some unnecessary string copies in LLTextBase and LLNormalTextSegment by changing getWText() to return const LLWString& (instead of LLWString), and storing the result in a const LLWString& instead of an LLWString in places where the string doesn't need to be modified. Made LLTextViewModel::getDisplay() also return const LLWString& instead of LLWString. Removed a couple of unused local string variables in LLTextBase (the compiler flagged these after converting the local copies to const LLWString&). --- indra/llui/lltextbase.cpp | 13 +++++-------- indra/llui/lltextbase.h | 2 +- indra/llui/llviewmodel.h | 3 ++- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index a12b7793f7c..259522a932b 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -312,7 +312,6 @@ void LLTextBase::drawSelectionBackground() // Draw selection even if we don't have keyboard focus for search/replace if( hasSelection() && !mLineInfoList.empty()) { - LLWString text = getWText(); std::vector<LLRect> selection_rects; S32 selection_left = llmin( mSelectionStart, mSelectionEnd ); @@ -411,7 +410,7 @@ void LLTextBase::drawCursor() && gFocusMgr.getAppHasFocus() && !mReadOnly) { - LLWString wtext = getWText(); + const LLWString &wtext = getWText(); const llwchar* text = wtext.c_str(); LLRect cursor_rect = getLocalRectFromDocIndex(mCursorPos); @@ -497,7 +496,6 @@ void LLTextBase::drawCursor() void LLTextBase::drawText() { - LLWString text = getWText(); const S32 text_len = getLength(); if( text_len <= 0 ) { @@ -1116,7 +1114,6 @@ void LLTextBase::reflow(S32 start_index) S32 line_start_index = 0; const S32 text_available_width = mVisibleTextRect.getWidth() - mHPad; // reserve room for margin S32 remaining_pixels = text_available_width; - LLWString text(getWText()); S32 line_count = 0; // find and erase line info structs starting at start_index and going to end of document @@ -1759,7 +1756,7 @@ void LLTextBase::setWText(const LLWString& text) setText(wstring_to_utf8str(text)); } -LLWString LLTextBase::getWText() const +const LLWString& LLTextBase::getWText() const { return getViewModel()->getDisplay(); } @@ -2454,7 +2451,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt if (num_chars > 0) { height = mFontHeight; - LLWString text = mEditor.getWText(); + const LLWString &text = mEditor.getWText(); // if last character is a newline, then return true, forcing line break llwchar last_char = text[mStart + first_char + num_chars - 1]; if (last_char == '\n') @@ -2481,7 +2478,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt S32 LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const { - LLWString text = mEditor.getWText(); + const LLWString &text = mEditor.getWText(); return mStyle->getFont()->charFromPixelOffset(text.c_str(), mStart + start_offset, (F32)segment_local_x_coord, F32_MAX, @@ -2491,7 +2488,7 @@ S32 LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const { - LLWString text = mEditor.getWText(); + const LLWString &text = mEditor.getWText(); LLUIImagePtr image = mStyle->getImage(); if( image.notNull()) diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 48d54780885..b5c7fab67a4 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -145,7 +145,7 @@ class LLTextBase // wide-char versions void setWText(const LLWString& text); - LLWString getWText() const; + const LLWString& getWText() const; void appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params()); // force reflow of text diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h index c8a9b52ccaa..992365d44dc 100644 --- a/indra/llui/llviewmodel.h +++ b/indra/llui/llviewmodel.h @@ -107,7 +107,8 @@ class LLTextViewModel: public LLViewModel // New functions /// Get the stored value in string form - LLWString getDisplay() const { return mDisplay; } + const LLWString& getDisplay() const { return mDisplay; } + /** * Set the display string directly (see LLTextEditor). What the user is * editing is actually the LLWString value rather than the underlying -- GitLab From 63b1305e4cc878290a9c66c685196e6a7cedc0cf Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Mon, 1 Feb 2010 18:03:17 -0800 Subject: [PATCH 417/521] EXT-4698 Object, avatar menu has --- .../skins/default/xui/en/menu_avatar_self.xml | 10 +++---- .../skins/default/xui/en/menu_object.xml | 28 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index 9212d2d6489..1e32cfd9dfc 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -13,11 +13,11 @@ function="Self.EnableStandUp" /> </menu_item_call> <context_menu - label="Take Off >" + label="Take Off â–¶" layout="topleft" name="Take Off >"> <context_menu - label="Clothes >" + label="Clothes â–¶" layout="topleft" name="Clothes >"> <menu_item_call @@ -151,7 +151,7 @@ <menu_item_call.on_enable function="Edit.EnableTakeOff" parameter="alpha" /> - </menu_item_call> + </menu_item_call> <menu_item_separator layout="topleft" /> <menu_item_call @@ -164,11 +164,11 @@ </menu_item_call> </context_menu> <context_menu - label="HUD >" + label="HUD â–¶" layout="topleft" name="Object Detach HUD" /> <context_menu - label="Detach >" + label="Detach â–¶" layout="topleft" name="Object Detach" /> <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 56028bb2e57..5a9509e2843 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -65,7 +65,7 @@ </menu_item_call> <menu_item_separator layout="topleft" /> <context_menu - label="Put On >" + label="Put On â–¶" name="Put On" > <menu_item_call enabled="false" @@ -77,15 +77,25 @@ function="Object.EnableWear" /> </menu_item_call> <context_menu - label="Attach >" + label="Attach â–¶" name="Object Attach" /> <context_menu - label="Attach HUD >" + label="Attach HUD â–¶" name="Object Attach HUD" /> </context_menu> <context_menu - label="Remove >" + label="Remove â–¶" name="Remove"> + <menu_item_call + enabled="false" + label="Take" + name="Pie Object Take"> + <menu_item_call.on_click + function="Tools.BuyOrTake" /> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake" + parameter="Buy,Take" /> + </menu_item_call> <menu_item_call enabled="false" label="Report Abuse" @@ -124,16 +134,6 @@ </menu_item_call> </context_menu> <menu_item_separator layout="topleft" /> - <menu_item_call - enabled="false" - label="Take" - name="Pie Object Take"> - <menu_item_call.on_click - function="Tools.BuyOrTake" /> - <menu_item_call.on_enable - function="Tools.EnableBuyOrTake" - parameter="Buy,Take" /> - </menu_item_call> <menu_item_call enabled="false" label="Take Copy" -- GitLab From 3fde73508e5b2fb5507b47d1f56d3fb47162b6fc Mon Sep 17 00:00:00 2001 From: Eli Linden <eli@lindenlab.com> Date: Mon, 1 Feb 2010 20:06:19 -0800 Subject: [PATCH 418/521] Test commit. --- indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index 7236351f2e0..b9bc45a10b0 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -19,7 +19,7 @@ width="320"> <string name="nudge_parabuild" translate="false">Nudge 1</string> <string name="test_the_vlt">This string CHANGE2 is extracted.</string> - <string name="testing_eli">Just a test. change here. more change.</string> + <string name="testing_eli">Just a test. changes.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" -- GitLab From ff4b80f27126adfc11e6facfa53aa1fafd3d19ec Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 2 Feb 2010 11:13:43 +0200 Subject: [PATCH 419/521] sidefix for EXT-4808 Unfocused Snapshot floater covers aother floaters fix preview position --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_snapshot.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 60c9810e955..2c9402f6cb9 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -46,8 +46,11 @@ <ui_ctrl height="90" width="90" + layout="topleft" name="thumbnail_placeholder" top_pad="6" + follows="left|top" + left="10" /> <text type="string" -- GitLab From 93a717283271b9b0f224a984b4e0069b2d7d408c Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Tue, 2 Feb 2010 18:08:39 +0800 Subject: [PATCH 420/521] EXT-3789 Change Teleport button on IM panel tooltip to read "Offer to teleport this person" --- indra/newview/skins/default/xui/en/panel_im_control_panel.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 9279d1e686a..c971914a2dd 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -93,6 +93,7 @@ height="23" label="Teleport" name="teleport_btn" + tool_tip = "Offer to teleport this person" width="100" /> </layout_panel> <layout_panel -- GitLab From 1094fa28c618370af9a95cf823cbd9287c92dd24 Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Tue, 2 Feb 2010 18:09:25 +0800 Subject: [PATCH 421/521] EXT-4603 Right-clicking a sound and choosing "Play" doesn't actually play it --- indra/newview/llsidepanelinventory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 5383158cd3f..9614be82405 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -164,7 +164,7 @@ void LLSidepanelInventory::onWearButtonClicked() void LLSidepanelInventory::onPlayButtonClicked() { - performActionOnSelection("activate"); + performActionOnSelection("open"); } void LLSidepanelInventory::onTeleportButtonClicked() -- GitLab From e6538ddbe95f0c297e67b9f5decabfcb6241ed2a Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 2 Feb 2010 13:18:23 +0200 Subject: [PATCH 422/521] fix for low EXT-4780 Nearby chat windows doesn't pop up when clicking on object chat toast --HG-- branch : product-engine --- indra/newview/llchatitemscontainerctrl.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index f7f7ee83afd..f772aea4bd8 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -258,8 +258,12 @@ BOOL LLNearbyChatToastPanel::handleMouseDown (S32 x, S32 y, MASK mask) BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask) { + /* + fix for request EXT-4780 + leaving this commented since I don't remember why ew block those messages... if(mSourceType != CHAT_SOURCE_AGENT) return LLPanel::handleMouseUp(x,y,mask); + */ LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false); S32 local_x = x - text_box->getRect().mLeft; -- GitLab From 61609d93bbc01dc5a6f87c4afbc6e0faad1f1711 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Tue, 2 Feb 2010 14:01:54 +0200 Subject: [PATCH 423/521] Fixed major bug (EXT-2316) Insert the option "pay" in the profile. - Restored fix made in viewer-2-0/product-engine changeset 4880:ff1363072741. --HG-- branch : product-engine --- .../skins/default/xui/en/panel_profile.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 27461571daf..40b9b569037 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -306,7 +306,7 @@ name="add_friend" tool_tip="Offer friendship to the Resident" top="5" - width="81" /> + width="80" /> <button follows="bottom|left" height="23" @@ -316,7 +316,7 @@ tool_tip="Open instant message session" top="5" left_pad="3" - width="45" /> + width="39" /> <button follows="bottom|left" height="23" @@ -326,7 +326,7 @@ tool_tip="Call this Resident" left_pad="3" top="5" - width="46" /> + width="43" /> <button enabled="false" follows="bottom|left" @@ -337,7 +337,7 @@ tool_tip="Show the Resident on the map" top="5" left_pad="3" - width="46" /> + width="41" /> <button follows="bottom|left" height="23" @@ -347,8 +347,8 @@ tool_tip="Offer teleport" left_pad="3" top="5" - width="78" /> - <!-- <button + width="69" /> + <button follows="bottom|right" height="23" label="â–¼" @@ -357,8 +357,8 @@ tool_tip="Pay money to or share inventory with the Resident" right="-1" top="5" - left_pad="3" - width="23" />--> + left_pad="3" + width="23" /> </layout_panel> <layout_panel follows="bottom|left" -- GitLab From f69510e20c14f8afbdaa9fad06f7dbb2ba09b774 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 2 Feb 2010 14:19:15 +0200 Subject: [PATCH 424/521] added loading/parsing of Nearby Chat history - EXT-4777 Implement saving and loading chat history for Nearby Chat (both plain text and widgeted chat) --HG-- branch : product-engine --- indra/newview/llnearbychat.cpp | 40 ++++++++++++++++++++++++++++++++++ indra/newview/llnearbychat.h | 4 ++++ indra/newview/llstartup.cpp | 10 +++++++++ 3 files changed, 54 insertions(+) diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 90482eb74d4..1dcb6abf810 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -62,6 +62,12 @@ static const S32 RESIZE_BAR_THICKNESS = 3; +const static std::string IM_TIME("time"); +const static std::string IM_TEXT("message"); +const static std::string IM_FROM("from"); +const static std::string IM_FROM_ID("from_id"); + + LLNearbyChat::LLNearbyChat(const LLSD& key) : LLDockableFloater(NULL, false, false, key) ,mChatHistory(NULL) @@ -262,6 +268,39 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue) nearby_chat->updateChatHistoryStyle(); } +void LLNearbyChat::loadHistory() +{ + std::list<LLSD> history; + LLLogChat::loadAllHistory("chat", history); + + std::list<LLSD>::const_iterator it = history.begin(); + while (it != history.end()) + { + const LLSD& msg = *it; + + std::string from = msg[IM_FROM]; + LLUUID from_id = LLUUID::null; + if (msg[IM_FROM_ID].isUndefined()) + { + gCacheName->getUUID(from, from_id); + } + + LLChat chat; + chat.mFromName = from; + chat.mFromID = from_id; + chat.mText = msg[IM_TEXT]; + chat.mTimeStr = msg[IM_TIME]; + addMessage(chat); + + it++; + } +} + +//static +LLNearbyChat* LLNearbyChat::getInstance() +{ + return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +} //////////////////////////////////////////////////////////////////////////////// // @@ -278,3 +317,4 @@ void LLNearbyChat::onFocusLost() setBackgroundOpaque(false); LLPanel::onFocusLost(); } + diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 5fb8ade19e7..6ea42485782 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -65,6 +65,10 @@ class LLNearbyChat: public LLDockableFloater static void processChatHistoryStyleUpdate(const LLSD& newvalue); + void loadHistory(); + + static LLNearbyChat* getInstance(); + private: virtual void applySavedVariables(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6b816f87863..ce5da8bb24f 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -67,6 +67,7 @@ #include "llmemorystream.h" #include "llmessageconfig.h" #include "llmoveview.h" +#include "llnearbychat.h" #include "llnotifications.h" #include "llnotificationsutil.h" #include "llteleporthistory.h" @@ -904,6 +905,7 @@ bool idle_startup() LLFile::mkdir(gDirUtilp->getChatLogsDir()); LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); + //good as place as any to create user windlight directories std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", "")); LLFile::mkdir(user_windlight_path_name.c_str()); @@ -1284,6 +1286,14 @@ bool idle_startup() LLAppViewer::instance()->loadNameCache(); } + //gCacheName is required for nearby chat history loading + //so I just moved nearby history loading a few states further + if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory")) + { + LLNearbyChat* nearby_chat = LLNearbyChat::getInstance(); + if (nearby_chat) nearby_chat->loadHistory(); + } + // *Note: this is where gWorldMap used to be initialized. // register null callbacks for audio until the audio system is initialized -- GitLab From 38315a063d83bf4dbf90569dbe37a344d91349a7 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Tue, 2 Feb 2010 14:25:31 +0200 Subject: [PATCH 425/521] Fixed normal bug EXT-4740 - Object inspector hides however context menu present --HG-- branch : product-engine --- indra/llui/lltextbase.cpp | 10 ++++++++++ indra/llui/lltextbase.h | 1 + indra/newview/llinspect.cpp | 24 ++++++++++++++++++++++++ indra/newview/llinspect.h | 3 +++ indra/newview/llinspectavatar.cpp | 13 ++++++++++--- indra/newview/llinspectobject.cpp | 11 +++++++++-- 6 files changed, 57 insertions(+), 5 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 259522a932b..b977e50bc1a 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1023,6 +1023,16 @@ void LLTextBase::setReadOnlyColor(const LLColor4 &c) mReadOnlyFgColor = c; } +//virtual +void LLTextBase::handleVisibilityChange( BOOL new_visibility ) +{ + if(!new_visibility && mPopupMenu) + { + mPopupMenu->hide(); + } + LLUICtrl::handleVisibilityChange(new_visibility); +} + //virtual void LLTextBase::setValue(const LLSD& value ) { diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index b5c7fab67a4..ed2f2394767 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -122,6 +122,7 @@ class LLTextBase /*virtual*/ BOOL acceptsTextInput() const { return !mReadOnly; } /*virtual*/ void setColor( const LLColor4& c ); virtual void setReadOnlyColor(const LLColor4 &c); + virtual void handleVisibilityChange( BOOL new_visibility ); /*virtual*/ void setValue(const LLSD& value ); /*virtual*/ LLTextViewModel* getViewModel() const; diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp index c7b8db9635c..c7b651f37cd 100644 --- a/indra/newview/llinspect.cpp +++ b/indra/newview/llinspect.cpp @@ -34,6 +34,7 @@ #include "llcontrol.h" // LLCachedControl #include "llui.h" // LLUI::sSettingsGroups +#include "llviewermenu.h" LLInspect::LLInspect(const LLSD& key) : LLFloater(key), @@ -108,3 +109,26 @@ void LLInspect::onMouseLeave(S32 x, S32 y, MASK mask) { mOpenTimer.unpause(); } + +bool LLInspect::childHasVisiblePopupMenu() +{ + // Child text-box may spawn a pop-up menu, if mouse is over the menu, Inspector + // will hide(which is not expected). + // This is an attempt to find out if child control has spawned a menu. + + LLView* child_menu = gMenuHolder->getVisibleMenu(); + if(child_menu) + { + LLRect floater_rc = calcScreenRect(); + LLRect menu_screen_rc = child_menu->calcScreenRect(); + S32 mx, my; + LLUI::getMousePositionScreen(&mx, &my); + + // This works wrong if we spawn a menu near Inspector and menu overlaps Inspector. + if(floater_rc.overlaps(menu_screen_rc) && menu_screen_rc.pointInRect(mx, my)) + { + return true; + } + } + return false; +} diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h index a1cb9cd71cd..f8c86618d26 100644 --- a/indra/newview/llinspect.h +++ b/indra/newview/llinspect.h @@ -56,6 +56,9 @@ class LLInspect : public LLFloater /*virtual*/ void onFocusLost(); protected: + + virtual bool childHasVisiblePopupMenu(); + LLFrameTimer mCloseTimer; LLFrameTimer mOpenTimer; }; diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 3a41aebf280..b2cdc0738f5 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -393,11 +393,18 @@ void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask) { LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); LLMenuGL* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu(); - if ( !(gear_menu && gear_menu->getVisible()) && - !(gear_menu_self && gear_menu_self->getVisible())) + if ( gear_menu && gear_menu->getVisible() && + gear_menu_self && gear_menu_self->getVisible() ) { - mOpenTimer.unpause(); + return; + } + + if(childHasVisiblePopupMenu()) + { + return; } + + mOpenTimer.unpause(); } void LLInspectAvatar::updateModeratorPanel() diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index dd313c528d8..1a5795a2ae4 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -575,10 +575,17 @@ void LLInspectObject::updateSecureBrowsing() void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask) { LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); - if ( !(gear_menu && gear_menu->getVisible())) + if ( gear_menu && gear_menu->getVisible() ) { - mOpenTimer.unpause(); + return; + } + + if(childHasVisiblePopupMenu()) + { + return; } + + mOpenTimer.unpause(); } void LLInspectObject::onClickBuy() -- GitLab From 81487c2a4c05042b35da114037068f478035a76a Mon Sep 17 00:00:00 2001 From: Paul Guslisty <pguslisty@productengine.com> Date: Tue, 2 Feb 2010 14:33:38 +0200 Subject: [PATCH 426/521] Fxed normal bug EXT - 4106 (Tabbed IM floater isn't highlighting labels when new IMs are received) --HG-- branch : product-engine --- indra/newview/llimfloatercontainer.cpp | 16 ++++++++++++++++ indra/newview/llimfloatercontainer.h | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 784c2eaaf96..22eb9a51d2c 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -52,6 +52,7 @@ LLIMFloaterContainer::~LLIMFloaterContainer(){} BOOL LLIMFloaterContainer::postBuild() { + LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1)); // Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button // mTabContainer will be initialized in LLMultiFloater::addChild() return TRUE; @@ -162,6 +163,21 @@ void LLIMFloaterContainer::onCloseFloater(LLUUID id) { LLAvatarPropertiesProcessor::instance().removeObserver(id, this); LLGroupMgr::instance().removeObserver(id, this); + +} + +void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data) +{ + LLUUID session_id = data["from_id"].asUUID(); + LLFloater* floaterp = get_ptr_in_map(mSessions, session_id); + LLFloater* current_floater = LLMultiFloater::getActiveFloater(); + + if(floaterp && current_floater && floaterp != current_floater) + { + if(LLMultiFloater::isFloaterFlashing(floaterp)) + LLMultiFloater::setFloaterFlashing(floaterp, FALSE); + LLMultiFloater::setFloaterFlashing(floaterp, TRUE); + } } LLIMFloaterContainer* LLIMFloaterContainer::findInstance() diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index e4a32dbe1dc..bc06f0cbd31 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -66,10 +66,12 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs static LLIMFloaterContainer* getInstance(); private: - typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t; + typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t; avatarID_panel_map_t mSessions; void onCloseFloater(LLUUID avatar_id); + + void onNewMessageReceived(const LLSD& data); }; #endif // LL_LLIMFLOATERCONTAINER_H -- GitLab From 371885c37311a772ff76bf2259306c2e58100f36 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Tue, 2 Feb 2010 14:35:37 +0200 Subject: [PATCH 427/521] fix for normal EXT-4810 Block hot-keys in mouse-look mode --HG-- branch : product-engine --- indra/llui/llfloater.cpp | 4 ++++ indra/llui/llfloaterreg.cpp | 4 ++++ indra/llui/llfloaterreg.h | 3 +++ 3 files changed, 11 insertions(+) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index de46d89d6f7..3b3e644d103 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2579,6 +2579,8 @@ void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list) view->pushVisible(visible); } } + + LLFloaterReg::blockShowFloaters(true); } void LLFloaterView::popVisibleAll(const skip_list_t& skip_list) @@ -2596,6 +2598,8 @@ void LLFloaterView::popVisibleAll(const skip_list_t& skip_list) view->popVisible(); } } + + LLFloaterReg::blockShowFloaters(false); } void LLFloater::setInstanceName(const std::string& name) diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index eb67e3a5614..5de3934c8a5 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -34,6 +34,7 @@ #include "llfloaterreg.h" +//#include "llagent.h" #include "llfloater.h" #include "llmultifloater.h" #include "llfloaterreglistener.h" @@ -45,6 +46,7 @@ LLFloaterReg::instance_list_t LLFloaterReg::sNullInstanceList; LLFloaterReg::instance_map_t LLFloaterReg::sInstanceMap; LLFloaterReg::build_map_t LLFloaterReg::sBuildMap; std::map<std::string,std::string> LLFloaterReg::sGroupMap; +bool LLFloaterReg::sBlockShowFloaters = false; static LLFloaterRegListener sFloaterRegListener; @@ -217,6 +219,8 @@ LLFloaterReg::const_instance_list_t& LLFloaterReg::getFloaterList(const std::str //static LLFloater* LLFloaterReg::showInstance(const std::string& name, const LLSD& key, BOOL focus) { + if( sBlockShowFloaters ) + return 0;// LLFloater* instance = getInstance(name, key); if (instance) { diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index 634a235926b..8a11d5c3f2b 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -75,6 +75,7 @@ class LLFloaterReg static instance_map_t sInstanceMap; static build_map_t sBuildMap; static std::map<std::string,std::string> sGroupMap; + static bool sBlockShowFloaters; public: // Registration @@ -152,6 +153,8 @@ class LLFloaterReg { return dynamic_cast<T*>(showInstance(name, key, focus)); } + + static void blockShowFloaters(bool value) { sBlockShowFloaters = value;} }; -- GitLab From 0763fac7653d0c280ed2fd808f2c1bb594c2e804 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 2 Feb 2010 14:37:31 +0200 Subject: [PATCH 428/521] added saving of nearby chat history - EXT-4777 Implement saving and loading chat history for Nearby Chat (both plain text and widgeted chat) --HG-- branch : product-engine --- indra/newview/llnearbychat.cpp | 12 ++++++++++++ indra/newview/llnearbychat.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 1dcb6abf810..49ab61556f8 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -200,6 +200,18 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args) mMessageArchive.push_back(chat); if(mMessageArchive.size()>200) mMessageArchive.erase(mMessageArchive.begin()); + + if (gSavedPerAccountSettings.getBOOL("LogChat")) + { + if (chat.mChatType != CHAT_TYPE_WHISPER && chat.mChatType != CHAT_TYPE_SHOUT) + { + LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText); + } + else + { + LLLogChat::saveHistory("chat", "", chat.mFromID, chat.mFromName + " " + chat.mText); + } + } } } diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 6ea42485782..6ef2a1fee3f 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -47,6 +47,8 @@ class LLNearbyChat: public LLDockableFloater ~LLNearbyChat(); BOOL postBuild (); + + /** @param archive true - to save a message to the chat history log */ void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD()); void onNearbyChatContextMenuItemClicked(const LLSD& userdata); bool onNearbyChatCheckContextMenuItem(const LLSD& userdata); -- GitLab From 47162acede25dadae52fb43bd36f57fa26988aa5 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Tue, 2 Feb 2010 14:49:58 +0200 Subject: [PATCH 429/521] no ticket. Removing the hack from llfloater.This code is dangerous. It involved losing of topctrl in focusmgr and can cause strange bugs and problems. --HG-- branch : product-engine --- indra/llui/llfloater.cpp | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 3b3e644d103..a55915af359 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1650,24 +1650,8 @@ void LLFloater::draw() } else { - //FIXME: get rid of this hack - // draw children - LLView* focused_child = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); - BOOL focused_child_visible = FALSE; - if (focused_child && focused_child->getParent() == this) - { - focused_child_visible = focused_child->getVisible(); - focused_child->setVisible(FALSE); - } - // don't call LLPanel::draw() since we've implemented custom background rendering LLView::draw(); - - if (focused_child_visible) - { - focused_child->setVisible(TRUE); - } - drawChild(focused_child); } // update tearoff button for torn off floaters -- GitLab From 6ea944b38f1e619df2c52283f6b33bbcc1cbbc40 Mon Sep 17 00:00:00 2001 From: Aimee Linden <aimee@lindenlab.com> Date: Tue, 2 Feb 2010 14:10:38 +0000 Subject: [PATCH 430/521] Supplementary fix EXT-4770 : Voice muting not working properly due to a change in the Vivox API The master voice mute in preferences wasn't working either, due to the minimum scaled volume now being 30 instead of 0. Reviewed by Lynx. --- indra/newview/llvoiceclient.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index c062dd1732d..3914064d726 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -1258,7 +1258,6 @@ LLVoiceClient::LLVoiceClient() : mEarLocation(0), mSpeakerVolumeDirty(true), mSpeakerMuteDirty(true), - mSpeakerVolume(0), mMicVolume(0), mMicVolumeDirty(true), @@ -1271,6 +1270,8 @@ LLVoiceClient::LLVoiceClient() : mAPIVersion = LLTrans::getString("NotConnected"); + mSpeakerVolume = scale_speaker_volume(0); + #if LL_DARWIN || LL_LINUX || LL_SOLARIS // HACK: THIS DOES NOT BELONG HERE // When the vivox daemon dies, the next write attempt on our socket generates a SIGPIPE, which kills us. @@ -3525,7 +3526,7 @@ void LLVoiceClient::buildLocalAudioUpdates(std::ostringstream &stream) if(mSpeakerMuteDirty) { - const char *muteval = ((mSpeakerVolume == 0)?"true":"false"); + const char *muteval = ((mSpeakerVolume <= scale_speaker_volume(0))?"true":"false"); mSpeakerMuteDirty = false; @@ -6062,7 +6063,8 @@ void LLVoiceClient::setVoiceVolume(F32 volume) if(scaled_volume != mSpeakerVolume) { - if((scaled_volume == 0) || (mSpeakerVolume == 0)) + int min_volume = scale_speaker_volume(0); + if((scaled_volume == min_volume) || (mSpeakerVolume == min_volume)) { mSpeakerMuteDirty = true; } -- GitLab From 7c7bea034467987781774fef8c27b54eae434cce Mon Sep 17 00:00:00 2001 From: gabriel lee <gabriel@lindenlab.com> Date: Tue, 2 Feb 2010 14:28:47 +0000 Subject: [PATCH 431/521] acted on code review advise, check some return pointers for nullness etc --- indra/newview/llfloaterland.cpp | 13 ++- indra/newview/llfloaterscriptlimits.cpp | 146 ++++++++++++++++++------ 2 files changed, 124 insertions(+), 35 deletions(-) diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 1b1e4ef612b..8cd63deebea 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -427,16 +427,25 @@ BOOL LLPanelLandGeneral::postBuild() mBtnBuyLand = getChild<LLButton>("Buy Land..."); mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND); + // note: on region change this will not be re checked, should not matter on Agni as + // 99% of the time all regions will return the same caps. In case of an erroneous setting + // to enabled the floater will just throw an error when trying to get it's cap std::string url = gAgent.getRegion()->getCapability("LandResources"); if (!url.empty()) { mBtnScriptLimits = getChild<LLButton>("Scripts..."); - mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + if(mBtnScriptLimits) + { + mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + } } else { mBtnScriptLimits = getChild<LLButton>("Scripts..."); - mBtnScriptLimits->setVisible(false); + if(mBtnScriptLimits) + { + mBtnScriptLimits->setVisible(false); + } } mBtnBuyGroupLand = getChild<LLButton>("Buy For Group..."); diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 55ff106be8f..4194416a013 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -73,7 +73,7 @@ // use fake LLSD responses to check the viewer side is working correctly // I'm syncing this with the server side efforts so hopfully we can keep // the to-ing and fro-ing between the two teams to a minimum -#define USE_FAKE_RESPONSES +//#define USE_FAKE_RESPONSES #ifdef USE_FAKE_RESPONSES const S32 FAKE_NUMBER_OF_URLS = 329; @@ -107,6 +107,12 @@ BOOL LLFloaterScriptLimits::postBuild() } mTab = getChild<LLTabContainer>("scriptlimits_panels"); + + if(!mTab) + { + llinfos << "Error! couldn't get scriptlimits_panels, aborting Script Information setup" << llendl; + return FALSE; + } // contruct the panels std::string land_url = gAgent.getRegion()->getCapability("LandResources"); @@ -128,11 +134,12 @@ BOOL LLFloaterScriptLimits::postBuild() mTab->addTabPanel(panel_attachments); } - if(selectParcelPanel) + if(mInfoPanels.size() > 0) { mTab->selectTab(0); } - else + + if(!selectParcelPanel && (mInfoPanels.size() > 1)) { mTab->selectTab(1); } @@ -257,18 +264,18 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) fake_content["summary"] = summary; - const LLSD* content = &fake_content; + const LLSD& content = fake_content; #else - const LLSD* content = &content_ref; + const LLSD& content = content_ref; #endif #ifdef DUMP_REPLIES_TO_LLINFOS - LLSDNotationStreamer notation_streamer(*content); + LLSDNotationStreamer notation_streamer(content); std::ostringstream nice_llsd; nice_llsd << notation_streamer; @@ -287,7 +294,7 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel_memory->setRegionSummary(*content); + panel_memory->setRegionSummary(content); } } @@ -352,23 +359,23 @@ result (map) parcels.append(parcel); fake_content["parcels"] = parcels; - const LLSD* content = &fake_content; + const LLSD& content = fake_content; #else - const LLSD* content = &content_ref; + const LLSD& content = content_ref; #endif #ifdef DUMP_REPLIES_TO_LLINFOS - LLSDNotationStreamer notation_streamer(*content); + LLSDNotationStreamer notation_streamer(content); std::ostringstream nice_llsd; nice_llsd << notation_streamer; OSMessageBox(nice_llsd.str(), "details response:", 0); - llinfos << "details response:" << *content << llendl; + llinfos << "details response:" << content << llendl; #endif @@ -381,8 +388,22 @@ result (map) else { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel_memory->setRegionDetails(*content); + if(tab) + { + LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); + if(panel_memory) + { + panel_memory->setRegionDetails(content); + } + else + { + llinfos << "Failed to get scriptlimits memory panel" << llendl; + } + } + else + { + llinfos << "Failed to get scriptlimits_panels" << llendl; + } } } @@ -426,23 +447,23 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) fake_content["summary"] = summary; fake_content["attachments"] = content_ref["attachments"]; - const LLSD* content = &fake_content; + const LLSD& content = fake_content; #else - const LLSD* content = &content_ref; + const LLSD& content = content_ref; #endif #ifdef DUMP_REPLIES_TO_LLINFOS - LLSDNotationStreamer notation_streamer(*content); + LLSDNotationStreamer notation_streamer(content); std::ostringstream nice_llsd; nice_llsd << notation_streamer; OSMessageBox(nice_llsd.str(), "attachment response:", 0); - llinfos << "attachment response:" << *content << llendl; + llinfos << "attachment response:" << content << llendl; #endif @@ -455,8 +476,22 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) else { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel"); - panel->setAttachmentDetails(*content); + if(tab) + { + LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel"); + if(panel) + { + panel->setAttachmentDetails(content); + } + else + { + llinfos << "Failed to get script_limits_my_avatar_panel" << llendl; + } + } + else + { + llinfos << "Failed to get scriptlimits_panels" << llendl; + } } } @@ -534,6 +569,11 @@ void LLPanelScriptLimitsRegionMemory::onNameCache( std::string name = first_name + " " + last_name; LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + if(!list) + { + return; + } + std::vector<LLSD>::iterator id_itor; for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor) { @@ -554,6 +594,12 @@ void LLPanelScriptLimitsRegionMemory::onNameCache( void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) { LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + + if(!list) + { + llinfos << "Error getting the scripts_list control" << llendl; + return; + } S32 number_parcels = content["parcels"].size(); @@ -634,8 +680,6 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) LLSD element; element["id"] = task_id; - element["owner_id"] = owner_id; - element["local_id"] = local_id; element["columns"][0]["column"] = "size"; element["columns"][0]["value"] = llformat("%d", size); element["columns"][0]["font"] = "SANSSERIF"; @@ -663,6 +707,9 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) element["columns"][5]["font"] = "SANSSERIF"; list->addElement(element, ADD_SORTED); + + element["owner_id"] = owner_id; + element["local_id"] = local_id; mObjectListItems.push_back(element); } } @@ -670,17 +717,25 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) if (has_locations) { LLButton* btn = getChild<LLButton>("highlight_btn"); - btn->setVisible(true); + if(btn) + { + btn->setVisible(true); + } } if (has_local_ids) { LLButton* btn = getChild<LLButton>("return_btn"); - btn->setVisible(true); + if(btn) + { + btn->setVisible(true); + } } // save the structure to make object return easier mContent = content; + + childSetValue("loading_text", LLSD(std::string(""))); } void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content) @@ -744,8 +799,6 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content) std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls); childSetValue("urls_used", LLSD(msg_parcel_urls)); } - - childSetValue("loading_text", LLSD(std::string(""))); } BOOL LLPanelScriptLimitsRegionMemory::postBuild() @@ -758,6 +811,10 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild() childSetValue("loading_text", LLSD(msg_waiting)); LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + if(!list) + { + return FALSE; + } //set all columns to resizable mode even if some columns will be empty for(S32 column = 0; column < list->getNumColumns(); column++) @@ -862,17 +919,22 @@ void LLPanelScriptLimitsRegionMemory::clearList() // static void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata) { - //**don't use userdata without checking for null-ness** llinfos << "LLPanelRegionGeneralInfo::onClickRefresh" << llendl; LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits"); if(instance) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel_memory->clearList(); + if(tab) + { + LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); + if(panel_memory) + { + panel_memory->clearList(); - panel_memory->StartRequestChain(); + panel_memory->StartRequestChain(); + } + } return; } else @@ -912,8 +974,14 @@ void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata) if(instance) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel->showBeacon(); + if(tab) + { + LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); + if(panel) + { + panel->showBeacon(); + } + } return; } else @@ -1012,8 +1080,14 @@ void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata) if(instance) { LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels"); - LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); - panel->returnObjects(); + if(tab) + { + LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); + if(panel) + { + panel->returnObjects(); + } + } return; } else @@ -1045,6 +1119,12 @@ BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails() void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) { LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + + if(!list) + { + return; + } + S32 number_attachments = content["attachments"].size(); for(int i = 0; i < number_attachments; i++) -- GitLab From 85cb82fdda339c573ecddf5010d9e78f8e9a984d Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Tue, 2 Feb 2010 17:04:31 +0200 Subject: [PATCH 432/521] Fixed normal bug EXT-4696 - Teleport offer window is not alligned to the center of game area --HG-- branch : product-engine --- indra/newview/llscreenchannel.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index a00b6a92882..8f36c0e88ab 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -487,10 +487,21 @@ void LLScreenChannel::showToastsBottom() toast_rect.setOriginAndSize(getRect().mLeft, bottom + toast_margin, toast_rect.getWidth() ,toast_rect.getHeight()); (*it).toast->setRect(toast_rect); - // don't show toasts if there is not enough space if(floater && floater->overlapsScreenChannel()) { + if(it == mToastList.rbegin()) + { + // move first toast above docked floater + S32 shift = floater->getRect().getHeight(); + if(floater->getDockControl()) + { + shift += floater->getDockControl()->getTongueHeight(); + } + (*it).toast->translate(0, shift); + } + LLRect world_rect = gViewerWindow->getWorldViewRectScaled(); + // don't show toasts if there is not enough space if(toast_rect.mTop > world_rect.mTop) { break; @@ -802,16 +813,6 @@ void LLScreenChannel::updateShowToastsState() S32 channel_bottom = gViewerWindow->getWorldViewRectScaled().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");; LLRect this_rect = getRect(); - // adjust channel's height - if(floater->overlapsScreenChannel()) - { - channel_bottom += floater->getRect().getHeight(); - if(floater->getDockControl()) - { - channel_bottom += floater->getDockControl()->getTongueHeight(); - } - } - if(channel_bottom != this_rect.mBottom) { setRect(LLRect(this_rect.mLeft, this_rect.mTop, this_rect.mRight, channel_bottom)); -- GitLab From 250680a07871001bdb108b5aab33f04847ab823f Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 2 Feb 2010 17:58:29 +0200 Subject: [PATCH 433/521] fixed EXT-4755 Own context menu in voice chat participants list has 'Add Friend' and 'Pay' enabled --HG-- branch : product-engine --- indra/newview/lllogchat.cpp | 12 ++++++++---- indra/newview/llnotificationhandlerutil.cpp | 6 ++++++ indra/newview/llparticipantlist.cpp | 3 ++- .../skins/default/xui/en/floater_im_session.xml | 1 + .../skins/default/xui/en/menu_participant_list.xml | 3 +++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index dc187bf36cc..96ce01c05f5 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -138,16 +138,20 @@ void LLLogChat::saveHistory(const std::string& filename, const LLUUID& from_id, const std::string& line) { - if(!filename.size()) + std::string tmp_filename = filename; + LLStringUtil::trim(tmp_filename); + if (tmp_filename.empty()) { - llinfos << "Filename is Empty!" << llendl; + std::string warn = "Chat history filename [" + filename + "] is empty!"; + llwarning(warn, 666); + llassert(tmp_filename.size()); return; } - + llofstream file (LLLogChat::makeLogFileName(filename), std::ios_base::app); if (!file.is_open()) { - llinfos << "Couldn't open chat history log!" << llendl; + llwarns << "Couldn't open chat history log! - " + filename << llendl; return; } diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index e2a748a1c50..b8e0892b02c 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -168,6 +168,12 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi session_name = "chat"; } + //there still appears a log history file with weird name " .txt" + if (" " == session_name || "{waiting}" == session_name || "{nobody}" == session_name) + { + llwarning("Weird session name (" + session_name + ") for notification " + notification->getName(), 666) + } + if(to_file_only) { logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index f83f3eba968..ad47e351ee0 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -583,7 +583,8 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata) { std::string item = userdata.asString(); - if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item) + if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item + || "can_pay" == item || "can_add" == item) { return mUUIDs.front() != gAgentID; } 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 9aaa660574c..f8fd40632cd 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + can_tear_off="false" legacy_header_height="18" background_visible="true" follows="all" diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 805ffbae668..d03a7e3d414 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -78,6 +78,9 @@ name="Pay"> <menu_item_call.on_click function="Avatar.Pay" /> + <menu_item_call.on_enable + function="ParticipantList.EnableItem" + parameter="can_pay" /> </menu_item_call> <menu_item_separator layout="topleft" /> -- GitLab From 0a41542f2388a3b6142a15fef653b3e663e1dcc7 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Tue, 2 Feb 2010 18:00:45 +0200 Subject: [PATCH 434/521] reverted accidental change to floater_im_session.xml --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_im_session.xml | 1 - 1 file changed, 1 deletion(-) 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 f8fd40632cd..9aaa660574c 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater - can_tear_off="false" legacy_header_height="18" background_visible="true" follows="all" -- GitLab From 5fc508bbc2ddd5bb3d91a20a16dcc68783099986 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Tue, 2 Feb 2010 18:19:39 +0200 Subject: [PATCH 435/521] Fixed major bug EXT-4811 ([BSI] Attempt to pay an object shows wrong Resident name in Pay Resident floater). Removed hardcoded payee name. --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_pay_object.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index 455018f467d..d09a0a05350 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -36,7 +36,7 @@ top_delta="3" name="payee_name" width="184"> - Ericacita Moostopolison + [FIRST] [LAST] </text> <text type="string" -- GitLab From e367c412988a55515fb68179d21f5d1c19249969 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk <slitovchuk@productengine.com> Date: Tue, 2 Feb 2010 18:48:40 +0200 Subject: [PATCH 436/521] Working on (EXT-4347) Moving object contents to inventory opens files, changes menu. - Removing LLPanelPlaces dependency from open_inventory_offer handler. - Added landmark offer handling to Places panel. --HG-- branch : product-engine --- indra/newview/llpanelplaces.cpp | 57 +++++++++++++++++++++++++------ indra/newview/llpanelplaces.h | 8 +++-- indra/newview/llviewermessage.cpp | 53 +++++++++++++++++----------- indra/newview/llviewermessage.h | 5 +++ 4 files changed, 91 insertions(+), 32 deletions(-) diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 29cfbbe606d..a49386cb5ce 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -70,6 +70,7 @@ #include "lltoggleablemenu.h" #include "llviewerinventory.h" #include "llviewermenu.h" +#include "llviewermessage.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" #include "llviewerwindow.h" @@ -105,22 +106,35 @@ class LLPlacesParcelObserver : public LLParcelObserver LLPanelPlaces* mPlaces; }; -class LLPlacesInventoryObserver : public LLInventoryObserver +class LLPlacesInventoryObserver : public LLInventoryAddedObserver { public: LLPlacesInventoryObserver(LLPanelPlaces* places_panel) : - LLInventoryObserver(), - mPlaces(places_panel) + mPlaces(places_panel), + mTabsCreated(false) {} /*virtual*/ void changed(U32 mask) { - if (mPlaces) - mPlaces->changedInventory(mask); + LLInventoryAddedObserver::changed(mask); + + if (!mTabsCreated && mPlaces) + { + mPlaces->createTabs(); + mTabsCreated = true; + } + } + +protected: + /*virtual*/ void done() + { + mPlaces->showAddedLandmarkInfo(mAdded); + mAdded.clear(); } private: LLPanelPlaces* mPlaces; + bool mTabsCreated; }; class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver @@ -943,7 +957,7 @@ void LLPanelPlaces::changedParcelSelection() updateVerbs(); } -void LLPanelPlaces::changedInventory(U32 mask) +void LLPanelPlaces::createTabs() { if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance())) return; @@ -979,10 +993,6 @@ void LLPanelPlaces::changedInventory(U32 mask) // Filter applied to show all items. if (mActivePanel) mActivePanel->onSearchEdit(mActivePanel->getFilterSubString()); - - // we don't need to monitor inventory changes anymore, - // so remove the observer - gInventory.removeObserver(mInventoryObserver); } void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos) @@ -991,6 +1001,33 @@ void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos) updateVerbs(); } +void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items) +{ + for (std::vector<LLUUID>::const_iterator item_iter = items.begin(); + item_iter != items.end(); + ++item_iter) + { + const LLUUID& item_id = (*item_iter); + if(!highlight_offered_item(item_id)) + { + continue; + } + + LLInventoryItem* item = gInventory.getItem(item_id); + + if (LLAssetType::AT_LANDMARK == item->getType()) + { + // Created landmark is passed to Places panel to allow its editing. + // If the panel is closed we don't reopen it until created landmark is loaded. + if("create_landmark" == getPlaceInfoType() && !getItem()) + { + setItem(item); + } + break; + } + } +} + void LLPanelPlaces::updateVerbs() { bool is_place_info_visible; diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 110d7a10547..78fcbbb11d6 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -66,11 +66,15 @@ class LLPanelPlaces : public LLPanel // Called on parcel selection change to update place information. void changedParcelSelection(); - // Called on agent inventory change to find out when inventory gets usable. - void changedInventory(U32 mask); + // Called once on agent inventory first change to find out when inventory gets usable + // and to create "My Landmarks" and "Teleport History" tabs. + void createTabs(); // Called when we receive the global 3D position of a parcel. void changedGlobalPos(const LLVector3d &global_pos); + // Opens landmark info panel when agent creates or receives landmark. + void showAddedLandmarkInfo(const std::vector<LLUUID>& items); + void setItem(LLInventoryItem* item); LLInventoryItem* getItem() { return mItem; } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index b0952dd698f..26c9a1dd796 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -860,28 +860,12 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f ++item_iter) { const LLUUID& item_id = (*item_iter); - LLInventoryItem* item = gInventory.getItem(item_id); - if(!item) + if(!highlight_offered_item(item_id)) { - LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL; continue; } - //////////////////////////////////////////////////////////////////////////////// - // Don't highlight if it's in certain "quiet" folders which don't need UI - // notification (e.g. trash, cof, lost-and-found). - if(!gAgent.getAFK()) - { - const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id); - if (parent) - { - const LLFolderType::EType parent_type = parent->getPreferredType(); - if (LLViewerFolderType::lookupIsQuietType(parent_type)) - { - continue; - } - } - } + LLInventoryItem* item = gInventory.getItem(item_id); //////////////////////////////////////////////////////////////////////////////// // Special handling for various types. @@ -928,10 +912,11 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places")); if (places_panel) { - // we are creating a landmark + // Landmark creation handling is moved to LLPanelPlaces::showAddedLandmarkInfo() + // TODO* LLPanelPlaces dependency is going to be removed. See EXT-4347. if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem()) { - places_panel->setItem(item); + //places_panel->setItem(item); } // we are opening a group notice attachment else @@ -981,6 +966,34 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f } } +bool highlight_offered_item(const LLUUID& item_id) +{ + LLInventoryItem* item = gInventory.getItem(item_id); + if(!item) + { + LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL; + return false; + } + + //////////////////////////////////////////////////////////////////////////////// + // Don't highlight if it's in certain "quiet" folders which don't need UI + // notification (e.g. trash, cof, lost-and-found). + if(!gAgent.getAFK()) + { + const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id); + if (parent) + { + const LLFolderType::EType parent_type = parent->getPreferredType(); + if (LLViewerFolderType::lookupIsQuietType(parent_type)) + { + return false; + } + } + } + + return true; +} + void inventory_offer_mute_callback(const LLUUID& blocked_id, const std::string& first_name, const std::string& last_name, diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 1415c16090e..7dd629dcfd3 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -203,6 +203,11 @@ void process_initiate_download(LLMessageSystem* msg, void**); void start_new_inventory_observer(); void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name); +// Returns true if item is not in certain "quiet" folder which don't need UI +// notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise. +// Returns false if item is not found. +bool highlight_offered_item(const LLUUID& item_id); + struct LLOfferInfo { LLOfferInfo() -- GitLab From 353ed64274b09b60d8b055a9d9cbd78927adcc6b Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Tue, 2 Feb 2010 12:04:42 -0500 Subject: [PATCH 437/521] Created new graphics for build tools "selected" states. http://jira.secondlife.com/browse/EXT-4357 --- .../textures/build/Object_Cone_Selected.png | Bin 0 -> 576 bytes .../textures/build/Object_Cube_Selected.png | Bin 0 -> 477 bytes .../build/Object_Cylinder_Selected.png | Bin 0 -> 443 bytes .../textures/build/Object_Grass_Selected.png | Bin 0 -> 757 bytes .../build/Object_Hemi_Cone_Selected.png | Bin 0 -> 531 bytes .../build/Object_Hemi_Cylinder_Selected.png | Bin 0 -> 463 bytes .../build/Object_Hemi_Sphere_Selected.png | Bin 0 -> 696 bytes .../textures/build/Object_Prism_Selected.png | Bin 0 -> 485 bytes .../build/Object_Pyramid_Selected.png | Bin 0 -> 594 bytes .../textures/build/Object_Ring_Selected.png | Bin 0 -> 738 bytes .../textures/build/Object_Sphere_Selected.png | Bin 0 -> 1003 bytes .../build/Object_Tetrahedron_Selected.png | Bin 0 -> 558 bytes .../textures/build/Object_Torus_Selected.png | Bin 0 -> 825 bytes .../textures/build/Object_Tree_Selected.png | Bin 0 -> 839 bytes .../textures/build/Object_Tube_Selected.png | Bin 0 -> 552 bytes .../skins/default/textures/textures.xml | 20 +++++++++ .../skins/default/xui/en/floater_tools.xml | 41 +++++++++--------- 17 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 indra/newview/skins/default/textures/build/Object_Cone_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Cube_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Grass_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Prism_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Ring_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Sphere_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Torus_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Tree_Selected.png create mode 100644 indra/newview/skins/default/textures/build/Object_Tube_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..d50dc69ffe924ffa1f5edae2e466364d856e17d7 GIT binary patch literal 576 zcmV-G0>Ax<P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^z1|GYYtN;K3(n&-?R5;6} z)4gj`Q5eVZ?{iMBk~PEKbQ3c4pD>eyYg2G42t^ze6<;Z0>6AsxAQ`G{!Iyx7DB^3W zU<Fg5I=hN<EoyC=`*I!!dv6kxG&k+D-NWH?e$RQ%g$(s*WvM*B{CqjfUXx`Lo}CFK zE>)jBEbkk9{iQLDl_Ee(+|0hfrO&IrGn`XZR3Q>AUcX;Ey=TxFDhh@4TOC^x&+Z9) zyVmey!vuh;;#2`pL*e3Lbzx*Mw$y=q=i0y4l`tn0SMS{NGlQ?zK9-zNYPYH=+TI}K zLr?0N!ARWge(S1jG|EZo%H8VNQ1EHvec1`ceyw(R0E8Zohk}vS+OCuDP-82_%k$Op zK(M~@=4R(JNfWY@5bZf2@TArkoO|)aZ{bccVyU5UX`wpZ0|pXTkmQ+2SBptHr`i_{ zJh_%UBLgt|U~X(%;>q+Bk%80gTS7j{NhJkCaTk(Q|5@#%PIrYvPbO2)AR9)cCt33U zx?u?car{WZ8z-jDTjcwY>mLj&%>#jscMavtvGKz>XBL6xC{wnvem&UI<CT+V-*u03 zr(S;g;A8ESSUHNwk-$ZVHvar(ee);lo4?p<Z8xpcZ^p4|V(ukSQhxzZ>DK$bIkolx O0000<MNUMnLSTZ^4Frz> literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6964530d17386cc110f012aa612c9817983030 GIT binary patch literal 477 zcmV<30V4j1P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^$9&n)hzW@LMZ%IT!R5;7+ z)W1u^KpX||ce$k4DhTfGB3=6rv}<P_w5x+Z25}J#idfV|oK%$Jq6MvM2A2kRSBFkQ zD`+UOEk$BTa(6COYPrT}JNm|h_Zhwik02zMWh2cMY%q#608j=~;W(YoWJ~=zMD}=L z8aks`5CoIblE4#XILoE8`MzMWY$Tb2HKt$|1aU-(z&qu*r5u}cnd}1qkYd?L1{CL9 zK?(yz;kc&^>uSxmrq!`{YCJItjjDgbT;D_0wo<LvMot9)$8+I$E)ua3{08nosJEK{ zfEa*p&8ToM)E#M~AMCRLkM(CM6bj1Vmh*;sy9vfw=oum%%kf;iwCrfVjUneB90I6t zaYqAT4hm@jOv-TZwKn@#g`}_IhEp;nD^zVu3Q>ki%oj^XE4nG&!@cXmOhB>S3-^MQ zp`rz1>v&l&{W!24c+uC$jv$!m1{HyZ=8MCVB|RT`vAeTdD(HbqR%^C}Fz7QMwkxu2 T=hpz*00000NkvXXu0mjfu7$x7 literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed03899610829f1dff7335df6757111ebc2d101 GIT binary patch literal 443 zcmV;s0Yv_ZP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^%3j}5^6#xJMO-V#SR5;7+ z)V)drK@<hxGe3z&EF~{sleE5o5Zg2s7GfiasT50JA-;fEh>ZqptYR5OTRXubU>OJ~ zCYVh&vzhGNYo#o^D<*20(+zj-H_dPaQc`Qw^CU%u1y)#~7@Y}5TQD9a<7{iK{1o36 zamXog;uO{~K_sE69X6t{j9v(}xStdQ0Fo$JjfYyJo=<=mH`gVSC}7$M<VcE20_+X@ zOZa65BeR?Uy`hgmV5Y{5wP?M)e4TZ4*!4X)a#);SfRge@tTXV?e(yjzN(TX;XMFUG zkF3rhm&rm&1+5eSfSF;#F+5}71w(}7001houfKcUhGW=poI2|V0f;&ME8(9r183l0 zKuLTj7~QD_hLH~E3Gi@p_cd#IRXT1?++2k2+=$CZI|sL^js2PG<!Q+&?2$l`lqken ly5*bT86jO&xA%|ZyC0A!iAaNicY*)_002ovPDHLkV1n!dt4{y` literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3ebd5ea7a1c7059fd82e165ec2a6b99639118a58 GIT binary patch literal 757 zcmV<R0t)?!P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^&1i$oPM*si<he<?1R5;7c zls{<IP!z_0=Ohjt9DK;z)Io%*T?GZ9nD@rCIM^b*7MxUEL>+XflMXHp4k}KquX*_2 zr5AK)-lHHm6pBNuA_(f>@P>jo2%6mElGN0ylY*I&+?-#&d%o`;_#dw%by0b*e*re0 z2VD7UK(8EC&$B-QJE<G0KDT==O;R`h8{n`QZXK}QbJOjfOH0_dkcDbr0?+9z<mRt_ zY(j0K5qH-CgWS%0W!G%iO|=^Fa+ooeg*+&stwy}8o)_(&n_j0*IIN!6)prWeYL4{7 zjAL2Ir6hIHL?iA7Ik&Trna=!N9Y8&|yfRuXHsO#MuQmWX^K<nAGLr{f2bhfFvj$u9 zK<)rcG~)XJN!OjK^lz6KOO;+vE5O%H@-9hT6y$c^3p+{!0?*StASz8#&w>}46@}Zx zcmpuobyFtn*P`%V7BbUnj`Rc1bFZ8z0Cxd$<r;t*^IjRQCPCn3lDa4hxfJG%t(juN zw%M+mQsYss9H?${O{MYLgc^Xsp3<-^<Ux=#(`v-a+U~i>t>#ES$m!+*XT;k>gn`mw zF;)we=gN2_sT((8zZk1Y*PSw<7I>}#s2EG_o=equWJ1lW92aBNgt!3q3j=;QENnGl zix_<`G{snLHR5Feos8nkz^Ag=UKtgm@0EjVQSdC9P)kx5VSMqzJ`?r=pH0{;#@nBR zebOt##m7Tpd^BNa;bdKm6^t)lnN;I_QM*};6|W46v9dAPITsNI5C%-xY(lLwKUXhJ zP~&}}s?6XZu)Wy9lMTaRB8qR6$EZ~2RW7Wx&G_h*eJ0d@KGOm(e>rW`(<y+pA}&WN n%OA=$H5Lo!50ugQXVd#Tz|1vFmL<fQ00000NkvXXu0mjf{DDvb literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdc4d1fd5bd66813ef3a50bdcf5dfd262ea3800 GIT binary patch literal 531 zcmV+u0_^>XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^&D-<PN9smFVrAb6VR5;6} zls`xtVHn1r_q}MFHG^a6n8CS=bP2c=$>5M;r%IO+k<z+ehCmjVqG*&(brBb#tqw)1 zfmW$i>ZZGpMO++}+~s{74*y*4OLF4D!M*SI-H+e*e0Lv^@><{9Db0OfE%%$3NeeVj zswZcs0I<|+o~D6q9`5>7<l7$d<;7a*QNUkE|Ax$yk2iIYk?Ny>rkI5wM@Dr&OYLXZ zR=kcXB8_EFVB5nQ$t+12dB2~ZTBr>_2)K2$Uob(T+jy9f`3C__QNMjA!Fz_$vQcnZ zI)Oj`|1Fsyf7fAZOD8Z;TaMWhpabf%OaOlz{QgWxF5V^5W*Gyn|Jfc2l<!p}j$?E? zSJPn`0|sKV0J82^-9*pORO5L9_;qVzI8?p`;&w)Ypwm!*%fS|3EqtgXfuYz8AW-R+ zR+9MiievR@|Ja$Kie5y~36dES*1>zyVx>OqH@bc{??#KCl+x^k87*Nr5b)dblwa%n zr@R>%eWq=!0J!Yj<y%;Y#+R}`p89YozIZt~5aPLKs3_48qIqNI8JdGFo9K0*Tmx}6 Vukn9Bub2P;002ovPDHLkV1m?0>EZwY literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..0912442e29334aa59d295183e8cd256a03e9e174 GIT binary patch literal 463 zcmV;=0WkiFP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^(5>h+lR{#J3VM#<mR5;7+ zlRZnrP!xvWdy_^S1<^mC(60Ugp<P|<Cb~E%Si3nm7&irffwmyxpdc;|I;!X@I24p> zTSY}h{HP>0O`7E1>mY(D&4<vz!FRgnyoZPL!6op~=KgLEr({wP3<!e6Pmc&Z5`h90 zSQ||Zoq4=gASRI<lQ4`3s@&b|ERJQ<-?7|W;L7BfQ^cdd3fHBIVVR!p>Ca%}U@sXR zc3IXPv#&Yt0c!P+?l2JJoS&4>-*w08Z{>S{dfh<HG6P|!S4FMC-7dcx+MK8wI<$HX zjPqZ^S{?-eG}C})8c^gII%5hXDxvgn`_kZUZ`exYAk%go*sk;SW-f_xEQ&VkANU7= zl#629fH4<``HY%w3s7;ydVXpy6*w~G;)n=T!(bh@n9pU@@z5R4j!Zl&wiu*LTm->Z zrqu;M-}gH$ZLKDmge)gWaEZj9-d^vC<;*N+)$O3}KLPC4o!&TE=Pv*N002ovPDHLk FV1kA>!_fc$ literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..33db4a2de8c185b7d639d8cc7d0e2bbde8f60d72 GIT binary patch literal 696 zcmV;p0!RIcP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^(I}nL{I{*LzN=ZaPR5;7+ zls!n6Q5462_ul7ud>>!+6%nN&S{+&n0>{WnXvhLv)2TV3T-<ADt!U6GsK6Q>BB@Op zs-eapiHzP-Q{U%(KJLe9@B<{HBHKD}hI`@sIRA6*{lowG+fWBxF1}nE5XI@;vnWOZ zl(4W@C_FoJa=3XQ@ae0i<D!@p#b{6*1Jd7YDA&TW5*Cy&J91+9je7EW=~2*(9fn*T zc&rZ#1`sr3`omiD&=#`MZf!+N@7}VWZF014ke;-T(fW@d?W*AO#yao6exi}2A0v&* zSH7*Lt+Jqz)~R>Y=uB$FCPFENh#&|)gq`#hwqhgCSZi&t-fj^>z-U9GFC~hCT5gxc zP-jx3bQXZhIgHkO5Enc?1S(fyy~lco^Nzw+gb)BolLRHKMBP!x!WWkfWo3?13LgSS zTOw@$!G(Z`V7<e7j}IQ_J=S}2TkT2juGP_j`DmctbA2<bE^ig>bXQ_z43X9Z5rPOJ zg4+R!1Y8LFx~s(ropHz7)pM6_>8bI_=3uSo0l;RSu~lTW%bcwuCo2m|TT$2w>nzqg zN@r;mIn~a1lv4C{HHe+e?E88%_iw*gX|10U5sWs(#t<2UR@+<Oo}0%7kBIESj`a4^ zrQ^lv^AjTg(Jru8cbrw-eb1Zi&7sO!eDGj@{#=qMroX#)AM8MLxG_IBw_0Tvv#Ln* zs{8>|ixawPoix&V9yz&l?ZU*BU%JiBhqD9DsOg{?&Ac5F5tLG-agysG%f@rh1i3pk eKH2=|e)t{tgG7*<r^}@P0000<MNUMnLSTX#n?5W6 literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..9e80fe2b8455daac86e758f22ce44f5732bec279 GIT binary patch literal 485 zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^)Bv9LbPyhe{cS%G+R5;76 zls!)ZF#v|&mIH;wgn_VJLPA^&I*Eyii4hpj#K8?GM;ZJR3=VE2F0QhhzzF;SR~83J zAmO|mhX}dwRj%iR;o~?e_)cx}=4qd#ErCPwr9#N2<eC$tIK{DK;o&BsJV7AD31Ab* zb1fSKAG0Ir)TO=-C_R^78)Gk#*KF&bNTdkhWF3%x7^*Cy!YSe}mEzr6px*1i91cX7 zU>-c?ONEdt5CCc|RR}nv?hfqsO=#UO{D(T74jOF@%$jVi{tFy2hR^Tz*6MV2Qa3aV z*?22;y0}o&n-GnY`Vz2h_R#H{8>>^N-n-TiKINjiBXGnRnjK>!b-JolH^i^etollz z#Vyoy^-t>gaxq5TN}})FW1-?>I7}y%s<b<@GZsb4lE^tH2rgZtmWm@ex)S8!xKAgQ z>f8rAO(vI(af&NW$;Cv%sSWr6U_UG)yccu@IRY1x$z>CqLfHxU&kiEdII--v0P)^B bfu{KZD`>A|;DZRR00000NkvXXu0mjfZ}rD1 literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..d36bfa55d44667ae5f90912be2ca55e222da7953 GIT binary patch literal 594 zcmV-Y0<HatP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^*419Iw>i_@&<Vi$9R5;6} zls#xuQ5462=e~E_q)qc6mTZFH;zuT-(7`D>)J;KB5Cq*Mse{gLW>AoV)Ye5*YC;u3 zkUTpjDRs4rli;8ZB2J1(sLA`d4w_KgG<h$c?Htbi-SfZa+ygP}*3$>MVL2))tkQIg zEfs7I%d?`us`Xmdvt>QNqz|7wacJvR^W}e4=-aZ1kaQ*{@wCiey?Zk|GVn>$T?`dR z0JLS3Nu`sWF|{@lu-b5QzQvWDu}sRrv&om1%K6wp-{Lt!a%b#7Dh)tK%W|xytZulE zLW|RT4k$&dy-mw+PtVTfgRS-E>!B4^8g4$YxU}D8nUn*7r{&u22C4pC<?*1W=*kX- zjHl)HK;Y_z`@#qZ2LZKZ_n@AZ`O;E3*B4l6xP`#tT$I^#CZ+%|ko2@X+ykuEYgyms ze$=nnt?=(O%oOjH3;zHEOV*5#i3&{UF($_oJ>S!Er#Cj0rd#xF7Kmw~f$y!Kf20e} z>|EZFYQ2{2X!*2zfTP$iufv-U?|Qz#w(@OpM}hT|tv&P1I)CxP4`ui)hOYtws5lpN zWh=wC@wPcD`!3XmTR@l&g&89p2d27Pr=RRZ+mu!oZmdXLnbn4yGjJ?aoB<po9DV!o g{g=hd*G~cb2Emn_YM|f)4*&oF07*qoM6N<$g8%RpdH?_b literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..962f6efb93acc7f8fa6bc0d104f872d88e177c53 GIT binary patch literal 738 zcmV<80v-K{P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^*JH*IC<NyEybV)=(R5;7! zlut-hQ51*2d*6NP{Lz;)Dnm61lA+K-LKm$9Y1>MWq!uj-!WQDnjqc0}+8IPPOQFnY z5pFfw7DTj)%!N*v4mhUH_-5XF_uUqy=%nVlesDMU{P;NM+;cAc6Plcz>7JaO={=5D z90-`3>DQ7Qq2N4%NM&4xyq6)bWoRa@UA~e#6gc)GGu+tFFsPJD?7c7f9)Z@xYbw|V zcP*cvT3lKj8Xp+R?E)V>d)l<FOEWE}(p|Qt@O40L^9QRNYZS|+eT-_`CJ}QuooJ-S zt^#0j^?P=0d8KoFU?e91Za*1&*Vf$9<wWBYN-m$W3+Pb)wO_5NG$|*6uLC}O{hU>9 z&>`<X&s?-4)m=_B4sdK3!2C*<lJ8+#idZa~j@8Dmt5DM0SX)nBBnGe#CJlK@^HCVH z^s8k!p(Q%CB)#Jav<4fJaR+1jmy{7S84PQM4U%z()>N8>)o-p{4#ytf86G_-v;Ie; zy}m6TCQsC-cOEJ<1|X@7;0(Zeu|P8Ja4wZ55v@fXQT2th?Sx8VSJ?n;mA28L#sb9M z>CDSOi5`GxRSnGzDJ&@g*xW9<(y%BD%fN;av>QQ_5$ulDR%x5{;uZiZFt3yhnE-kK zw!IQxR<hJZqNJQ8b<tP^X#0J3wO-u9^~w~=E?(g89r(8bV01b&tCi@kEX}qQLI`Y2 zp`^t1J&ZB<I^clq$yWKMLju@=>9YbeS84KffEV}_%Pt#k5ijr$hk0S=(AAsyKUObL zVsLMdj+DVwftga;3=Q?&${qSS+?&euYe|n0oD40|R+)_m&Ac?cv9y`k0sY7N39y(I UN)F0uG5`Po07*qoM6N<$f|tZbGynhq literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..715d597144e2e42d6a73bba378e0a12664274ae8 GIT binary patch literal 1003 zcmV<H0~Gv;P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^+CXC~J{r~_2eMv+?R5;6h zl+TY8MHI(BRbACRy}QE>yW^n1#wZ>}gGc`W^+e*qXar6MI1m!TMS^mG#ANrNAs&bk z4F~sNOi;qv+a}zM@oc;q5+o5>mfe}2{#EtLL(g=COn8@iRjK;a_tks#6m#st_4R=> z>a1w>wkQtH*0olo%KX|(7JvBs<MUhd&Z=h@&fVD9RB3!-wcAVkOUr28Y}v~vY>#)@ zos3aR(T$Qn4=t^nzx2`Rt+~Jp*VhMrA-;R~z>CARl>xD_D5VG?5JJF-$BQtj3jX-} zFS4>AHkQL_@9LG4XE)j?W=_3ee?R)lYr`XhLo6gIi%Cjq6B28&#$qEwq&11Lyt#IS zez!;EYVPMx);Dh5yz&(A+>MRRH(q{qt>5jD#tEs7u~9^%HAWjEtuWKMQVNm4!Cs%l zS}Iqw?eq0(w>RGb(C5G2IJ&>TdTMoPnb;VNjxbS#)*2HvzR?CyC=^<0lmZC6(A^Kf z?qp0B>TdwFXwIyy46u=zs%ccH|K%%$FfXBWY>bUe1FiGnwcDG=b+FN~G)@4JAb1f% z2uKhl1Vn^D15}N)>8Maj5t{~>S0!F^QpagBti7Z54llleOfxGYbCqeO+j25fg_Wxb zn%9jNp>hrz)x^dUX+cCy6^B+Wgf{eMKHp5`9C=k>bVSEGv{FbAw9<I-E!cVAh7KUo z__IANP(ePa$~3VtMO^_9>83<vrfB-EUIZ_`RT@H|_O3kxppB?|JJ|^5J(a5|>Wa$M zRIbK*kM|x4(*6{gf@|+6>WZ?i0Z8K*6?kB}Ci&%2F&U1E$u!*N)>%1drQ6V)`1az` z)jS$KX+!OH7SX~TGg#dB#a>pOd$98;odIoR@FGnqt643AlLj`aN_Min_K7++X2B+p zKYjny4Sn(WnTH2D`+jobx&QcI9%m!QWzM+BnN$UNRg#qj<1%MdOc)gt{@LATCmXdj zxw5p3b>Zq$-RA18Z-09*-gzs8z+%#AnnRor=?D>_a20t~GA{Bqvq~vm>h)RDcI)y7 zr{4uIGhk0A@2T#}-G`ICVOADoWx?|-HkN+3_Y`bygZ=W(=H_;loye*p&8u?m|6S@V zu$(UD#)a=b`|$K9&+XU%U;X_3z(wk^XpUvR9)=K5N|D+)*AnhUo*yF#H!mJP^YGcT Z{{hvn)HotfGV1^U002ovPDHLkV1g>M-@pI> literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ea680f23b470fc312da01824c9d0e2064ed85c GIT binary patch literal 558 zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^-6kRVIKL7v$z)3_wR5;7M zlf5qkaTv$Hzn5$8+N08htyqLaCkcbGF&J1a3>}CdA_f~%+r)rG8bl-BI|&27usC9p z;14jHL}J$J-Th4DuD#YF@r=*QC(rYJo(K4En_f*d&224D`pu`cf>YUayr9yDmgeTA zLqjC~1f0sI69tvrfwNdx)ijgiD1Uj@^ef=RT6(^q5+MPtAruAxNP?)ziTE*aVl6#i z43LxrGysT%>b_z&Mfbs#Sn&-U-^dun07*H05iRU0Fga#x=}A5}SqxHPGITqGj574L z#Ve~M-U21rI@~w-;@M$Ar4QvW0Ql6;qYcgE<fiJ#MB>>i7}X<HwX!KX_OHc`Cy-h4 z)T^i=q}SZ2#gIHS#83s0n=)6P98?sjO5oc=E^+MU4H0(%voi}X%)+C4ySl$$BhX45 z=M`teEqUPrhIHTmE(v1$*W$zlq&BvHqF;rc6#aQa#EH{6wwZadC}QEDimujnAFbhy z*|?<=$0Lb>bpYV5L$;)0QIf2$rJo1HX=OkhKta-LTx#Q<+Bl`Q%z1r?>-C&An#;WQ wv~@-m#(hJob_f8CL48k?9Q0i-`h_^{1Ex%n&d9&3H~;_u07*qoM6N<$g3ZzMKmY&$ literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc22686eb996e7aa4298ab2d8cfa935785066e9 GIT binary patch literal 825 zcmV-91IGM`P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^-H~&a&O#lD_%Sl8*R5;7! zl)rCWMG%0$+1>ZvozM1hwq;DjFVQ4_fI|zSrvgPuA2&1zgk(TSG$BzWM2QfbL_rY( zREUBK5M?U52nnI+aOB*@j_v#L-n;j9cPK6w9FzP7nQ~V8X0-Foz!MkpsN|LF-M7@4 zH?u4|Z4>tls)~w7V;-aSg7<erRsSX-ez|>NYw%d$<?p&5c_;6v&{=7<C9#&oIYf-2 zs-OxI6Jx!C-y0r`r+NOf1U`8G{KftQ;MHqit=EbC6s(+`!xQTmO>@esrrm6jB?+lZ zS#CCIFDz-pIxT%24<|!^_vo<iO8@fqg{^@AT>7DV<2dXvAJgymsqzv4mnCGa1#Fs- z8pm>Tfzzj+XQkCvApSMj(XuFa(<*M-E7!Z{d?IhpVF!~DJGXj-+CTI$A_i*>5v8ar zZXfQE*;JZYL(00Q^wko|x(k-~1Te;;8rj?5Kh7yqu{V~M+jp92qnZZasx-V3(bW(F zH+OG=K~OOW1S_vQ71=Pxu$VP*&a$?;raPmF2o#MnzWB|h&ju$g*!tp=o56AhRYv)Q zMv@8&YFKsiUK(jaXR%F)DxHPJBJq0p!*dr0kJ9R;&eI<crT#i|X)~%y6+ECb(rh5+ z?CMgRXFKZ{fj@V9Os0hz<iG^|LzLeAy6tFWGa8<=Vo(ucjQ_!ud(H+v4OYJ$=3_a^ znyj>zd0}mX{qd0;OhzlU_}3m5S4f>Bv6ean>KO0iz<T|0rp@==Ut(fj&8(A+r`Bj? z4MYr}985;kVK#AV3`Q&=2FBBZd|D87hBJ|W(kgBmfW+&0Q^#LRUu$pg4!7?O7#3s7 zy22VmBS~o_Db6_RP%|oXifZ~l*aNXotlqmSbmlp0EY=tRVvP705ClaPrE*@cxuDzg zoqp_b2!=OQI2Em&IrgLyv}csRt@67G`uWM@@C3%c5GZL|0b|m200000NkvXXu0mjf D(|>j0 literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd87f8a2fbf944c26c1b2adc743973099477723 GIT binary patch literal 839 zcmV-N1GxN&P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^;9c!{OTmS$9*-1n}R5;76 z)X!^FR}=^E@45HBH}B1_%)DqK>JXtQBW6{|A7HW)X3+}9MGPp23#+!qEEI83Qc;RO zT51s_(u#`W4-^T43$qTmb&*XecKm@>C(dMM-kbN{y{C&}7-W)2^sMeZ=knojx#tp= ziEGnS`?bJ9rLkjVsPuHX^R!rD;>P4~q@z_TX-|O2Q--Fi?`tQu!f~N-R~o)^YVQwk zmIP1Voa~PjZc9VgLpECj(u0x+QV0+cLcjIIhaPY(8`@~ZkuIy4Fa5md`=34-q8&^) z?l(qK(J0#IWxF=6%dLW?6ueXxf(WtTelUDnDP-Lg^4V-bON_J|s(q79r@!_RdAzC3 z6(VSOP7(};V_B&A4TwOG+YGcs>tH79^faQDCzR}KHx@d){OJC0OGld>%Lc%x2TfFK z^G`C4i+A-J7>utr^!=Xe&YeMQX6m*2l`xJ0ZJu=m108Prw^=O)QHXr13qtd3Gw|ny z!R-IJ3@oWYf?PL~++9O-xEZ$mG+Ezu1QXJlBSu9KA)yqEq+(#=jeoy>IWLIdST?H7 z1}gP==vbF!#P_mp(iN%1RL47XZFi;@UcOSTZAsWxraO}>zL<Mk5QKta#_X#y!0?6U zr;!l-OjvJg+!G%?yoC;xEyj~6XLmJh3^b!wUnB5gONltr<sY~2rL>i(bS0Cn<=O*| zZMy|;HP-g7`L>Ynx!DmU#&cp+nAs2F&=o|mAj;D4<MC_1{S)Ze)3L7PV%e)A{xfYm z4?cNPu1-&#ixm#580SX^OJhfFTwrYsq`~aj(L<Y;8a>e|IXYMxvm)#q9W0Ht=cUHX za<eQJE9@F7-NFh&;0wpH;PERLhCi&0z?RPjnXsvCo%w7~OIr9%v_SFb<zM?(44$}t z@ed=ZNCp+br~p7{)5Bwvzx1pKB*tG(i-*pP9Oyo`>ri(h;328`F%vBc{s%}|B!d1C RhQ0s*002ovPDHLkV1fece+U2o literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c3f39e148be9a4a9eebe1cfb7a77989affcac7 GIT binary patch literal 552 zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^<BrU9q6#xJMx=BPqR5;7+ zls}6TK^TXhncXBLhO8zUuh463yv9PXR-$DrtmHTgL9|h^^edcS;3`2-4r~<RERWL< zAXb8cU=uuIF4@a^SvR{of2<Pjc5}o7JAJEp-}%im@9!NL!Hihn+-Mpp?peV_D_GjU zCoG?Z<)gH`S-IN&lszl5h3D_yKGTw$2+GU}N3-Q<yS#GkdT&y5GqBg%;l?B%jU$36 zL>oQTc;#bwl_~(*p=G4_04(M@T;JSiCPncBpuZRJZRb02n$GS_I-IGWVzF@=fP&)w ztyX&tKu$!FO0G=S+r$2$FaT{d-C!`yW0hXYS>6eDX_QV<a9l2&Jx4e2@kar}Um44l zDvhc~vvz!1>kOtNJUGMtUO=;U0!K;~ygCbBecrp!8T1I_@oZqK72CUgYUK*$Vu_+# zm<dUgViZSohd!y%>{q#2vBeTZAwd)Z<e;fi{2WIZYcba3E_3HuN>s{GLh_g6Kk%Od zN@L#(i+^N-C6byKIpE{vyS-v!FH3E|{3%Nq{8DV&PwqV0I`qc|Sbh1lr5zp^!IE*r q`2&^=oiG}IMVVKtw;!%$&;ABTIkHf4f3Up(0000<MNUMnLSTXeXzgYI literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 60c1470b894..ea66897b356 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -321,20 +321,35 @@ with the same filename but different name <texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" /> <texture name="Object_Cone" file_name="build/Object_Cone.png" preload="false" /> + <texture name="Object_Cone_Selected" file_name="build/Object_Cone_Selected.png" preload="false" /> <texture name="Object_Cube" file_name="build/Object_Cube.png" preload="false" /> + <texture name="Object_Cube_Selected" file_name="build/Object_Cube_Selected.png" preload="false" /> <texture name="Object_Cylinder" file_name="build/Object_Cylinder.png" preload="false" /> + <texture name="Object_Cylinder_Selected" file_name="build/Object_Cylinder_Selected.png" preload="false" /> <texture name="Object_Grass" file_name="build/Object_Grass.png" preload="false" /> + <texture name="Object_Grass_Selected" file_name="build/Object_Grass_Selected.png" preload="false" /> <texture name="Object_Hemi_Cone" file_name="build/Object_Hemi_Cone.png" preload="false" /> + <texture name="Object_Hemi_Cone_Selected" file_name="build/Object_Hemi_Cone_Selected.png" preload="false" /> <texture name="Object_Hemi_Cylinder" file_name="build/Object_Hemi_Cylinder.png" preload="false" /> + <texture name="Object_Hemi_Cylinder_Selected" file_name="build/Object_Hemi_Cylinder_Selected.png" preload="false" /> <texture name="Object_Hemi_Sphere" file_name="build/Object_Hemi_Sphere.png" preload="false" /> + <texture name="Object_Hemi_Sphere_Selected" file_name="build/Object_Hemi_Sphere_Selected.png" preload="false" /> <texture name="Object_Prism" file_name="build/Object_Prism.png" preload="false" /> + <texture name="Object_Prism_Selected" file_name="build/Object_Prism_Selected.png" preload="false" /> <texture name="Object_Pyramid" file_name="build/Object_Pyramid.png" preload="false" /> + <texture name="Object_Pyramid_Selected" file_name="build/Object_Pyramid_Selected.png" preload="false" /> <texture name="Object_Ring" file_name="build/Object_Ring.png" preload="false" /> + <texture name="Object_Ring_Selected" file_name="build/Object_Ring_Selected.png" preload="false" /> <texture name="Object_Sphere" file_name="build/Object_Sphere.png" preload="false" /> + <texture name="Object_Sphere_Selected" file_name="build/Object_Sphere_Selected.png" preload="false" /> <texture name="Object_Tetrahedron" file_name="build/Object_Tetrahedron.png" preload="false" /> + <texture name="Object_Tetrahedron_Selected" file_name="build/Object_Tetrahedron_Selected.png" preload="false" /> <texture name="Object_Torus" file_name="build/Object_Torus.png" preload="false" /> + <texture name="Object_Torus_Selected" file_name="build/Object_Torus_Selected.png" preload="false" /> <texture name="Object_Tree" file_name="build/Object_Tree.png" preload="false" /> + <texture name="Object_Tree_Selected" file_name="build/Object_Tree_Selected.png" preload="false" /> <texture name="Object_Tube" file_name="build/Object_Tube.png" preload="false" /> + <texture name="Object_Tube_Selected" file_name="build/Object_Tube_Selected.png" preload="false" /> <texture name="OptionsMenu_Disabled" file_name="icons/OptionsMenu_Disabled.png" preload="false" /> <texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" /> @@ -585,10 +600,15 @@ with the same filename but different name scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" /> <texture name="Tool_Create" file_name="build/Tool_Create.png" preload="false" /> + <texture name="Tool_Create_Selected" file_name="build/Tool_Create_Selected.png" preload="false" /> <texture name="Tool_Dozer" file_name="build/Tool_Dozer.png" preload="false" /> + <texture name="Tool_Dozer_Selected" file_name="build/Tool_Dozer_Selected.png" preload="false" /> <texture name="Tool_Face" file_name="build/Tool_Face.png" preload="false" /> + <texture name="Tool_Face_Selected" file_name="build/Tool_Face_Selected.png" preload="false" /> <texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" /> + <texture name="Tool_Grab_Selected" file_name="build/Tool_Grab_Selected.png" preload="false" /> <texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" /> + <texture name="Tool_Zoom_Selected" file_name="build/Tool_Zoom_Selected.png" preload="false" /> <texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" /> <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" /> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index f1aa5c27c16..5630dfbe8fa 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -70,7 +70,7 @@ height="20" image_disabled="Tool_Zoom" image_disabled_selected="Tool_Zoom" - image_selected="Tool_Zoom" + image_selected="Tool_Zoom_Selected" image_unselected="Tool_Zoom" layout="topleft" left="10" @@ -86,7 +86,7 @@ height="20" image_disabled="Tool_Grab" image_disabled_selected="Tool_Grab" - image_selected="Tool_Grab" + image_selected="Tool_Grab_Selected" image_unselected="Tool_Grab" layout="topleft" left_pad="20" @@ -102,7 +102,7 @@ height="20" image_disabled="Tool_Face" image_disabled_selected="Tool_Face" - image_selected="Tool_Face" + image_selected="Tool_Face_Selected" image_unselected="Tool_Face" layout="topleft" left_pad="20" @@ -118,7 +118,7 @@ height="20" image_disabled="Tool_Create" image_disabled_selected="Tool_Create" - image_selected="Tool_Create" + image_selected="Tool_Create_Selected" image_unselected="Tool_Create" layout="topleft" left_pad="20" @@ -134,7 +134,7 @@ height="20" image_disabled="Tool_Dozer" image_disabled_selected="Tool_Dozer" - image_selected="Tool_Dozer" + image_selected="Tool_Dozer_Selected" image_unselected="Tool_Dozer" layout="topleft" left_pad="20" @@ -344,7 +344,7 @@ height="20" image_disabled="Object_Cube" image_disabled_selected="Object_Cube" - image_selected="Object_Cube" + image_selected="Object_Cube_Selected" image_unselected="Object_Cube" layout="topleft" left="4" @@ -357,7 +357,7 @@ height="20" image_disabled="Object_Prism" image_disabled_selected="Object_Prism" - image_selected="Object_Prism" + image_selected="Object_Prism_Selected" image_unselected="Object_Prism" layout="topleft" left_delta="26" @@ -370,7 +370,7 @@ height="20" image_disabled="Object_Pyramid" image_disabled_selected="Object_Pyramid" - image_selected="Object_Pyramid" + image_selected="Object_Pyramid_Selected" image_unselected="Object_Pyramid" layout="topleft" left_delta="26" @@ -383,7 +383,7 @@ height="20" image_disabled="Object_Tetrahedron" image_disabled_selected="Object_Tetrahedron" - image_selected="Object_Tetrahedron" + image_selected="Object_Tetrahedron_Selected" image_unselected="Object_Tetrahedron" layout="topleft" left_delta="26" @@ -396,7 +396,7 @@ height="20" image_disabled="Object_Cylinder" image_disabled_selected="Object_Cylinder" - image_selected="Object_Cylinder" + image_selected="Object_Cylinder_Selected" image_unselected="Object_Cylinder" layout="topleft" left_delta="26" @@ -409,7 +409,7 @@ height="20" image_disabled="Object_Hemi_Cylinder" image_disabled_selected="Object_Hemi_Cylinder" - image_selected="Object_Hemi_Cylinder" + image_selected="Object_Hemi_Cylinder_Selected" image_unselected="Object_Hemi_Cylinder" layout="topleft" left_delta="26" @@ -422,7 +422,7 @@ height="20" image_disabled="Object_Cone" image_disabled_selected="Object_Cone" - image_selected="Object_Cone" + image_selected="Object_Cone_Selected" image_unselected="Object_Cone" layout="topleft" left_delta="26" @@ -435,7 +435,7 @@ height="20" image_disabled="Object_Hemi_Cone" image_disabled_selected="Object_Hemi_Cone" - image_selected="Object_Hemi_Cone" + image_selected="Object_Hemi_Cone_Selected" image_unselected="Object_Hemi_Cone" layout="topleft" left_delta="26" @@ -448,7 +448,7 @@ height="20" image_disabled="Object_Sphere" image_disabled_selected="Object_Sphere" - image_selected="Object_Sphere" + image_selected="Object_Sphere_Selected" image_unselected="Object_Sphere" layout="topleft" left_delta="26" @@ -461,7 +461,7 @@ height="20" image_disabled="Object_Hemi_Sphere" image_disabled_selected="Object_Hemi_Sphere" - image_selected="Object_Hemi_Sphere" + image_selected="Object_Hemi_Sphere_Selected" image_unselected="Object_Hemi_Sphere" layout="topleft" left_delta="26" @@ -474,7 +474,7 @@ height="20" image_disabled="Object_Torus" image_disabled_selected="Object_Torus" - image_selected="Object_Torus" + image_selected="Object_Torus_Selected" image_unselected="Object_Torus" layout="topleft" left="4" @@ -487,7 +487,7 @@ height="20" image_disabled="Object_Tube" image_disabled_selected="Object_Tube" - image_selected="Object_Tube" + image_selected="Object_Tube_Selected" image_unselected="Object_Tube" layout="topleft" left_delta="26" @@ -500,7 +500,7 @@ height="20" image_disabled="Object_Ring" image_disabled_selected="Object_Ring" - image_selected="Object_Ring" + image_selected="Object_Ring_Selected" image_unselected="Object_Ring" layout="topleft" left_delta="26" @@ -513,7 +513,7 @@ height="20" image_disabled="Object_Tree" image_disabled_selected="Object_Tree" - image_selected="Object_Tree" + image_selected="Object_Tree_Selected" image_unselected="Object_Tree" layout="topleft" left_delta="26" @@ -526,8 +526,9 @@ height="20" image_disabled="Object_Grass" image_disabled_selected="Object_Grass" - image_selected="Object_Grass" + image_selected="Object_Grass_Selected" image_unselected="Object_Grass" + image_overlay_color="Red" layout="topleft" left_delta="26" name="ToolGrass" -- GitLab From e563a07659b74b2dca850834a44c3b92ff993b44 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Tue, 2 Feb 2010 17:19:14 +0000 Subject: [PATCH 438/521] DEV-32540: Lots of object IM and SLurl improvements - Don't let object names that are URLs override links to display the remote object inspector - Don't hyperlink the object name in the remote object inspector - Made the <nolink>...</nolink> regex more robust and made it support non-URLs between the tags, so that we don't get random <nolink> tags when trying to disable URLs in user-typed text. - Improved the llurlentry unit test and added some more test cases. - Hooked up another LLViewerMessage code path to objectim SLapps to pass down the owner and slurl information. - Made a few LLUrlEntryBase methods be const methods, because they are - Fixed a bug in the remote object inspector where it would never show the teleport URL. --- indra/llui/llurlentry.cpp | 20 +- indra/llui/llurlentry.h | 13 +- indra/llui/llurlregistry.cpp | 3 +- indra/llui/tests/llurlentry_test.cpp | 305 +++++++++++++----------- indra/newview/llchathistory.cpp | 19 +- indra/newview/llinspectremoteobject.cpp | 5 +- indra/newview/llviewermessage.cpp | 5 +- 7 files changed, 203 insertions(+), 167 deletions(-) diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 58148ad2aa0..b20de914a08 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -49,7 +49,7 @@ LLUrlEntryBase::~LLUrlEntryBase() { } -std::string LLUrlEntryBase::getUrl(const std::string &string) +std::string LLUrlEntryBase::getUrl(const std::string &string) const { return escapeUrl(string); } @@ -89,7 +89,7 @@ std::string LLUrlEntryBase::escapeUrl(const std::string &url) const return LLURI::escape(url, no_escape_chars, true); } -std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) +std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) const { // return the label part from [http://www.example.org Label] const char *text = url.c_str(); @@ -105,7 +105,7 @@ std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) return unescapeUrl(url.substr(start, url.size()-start-1)); } -std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string) +std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string) const { // return the url part from [http://www.example.org Label] const char *text = string.c_str(); @@ -192,7 +192,7 @@ std::string LLUrlEntryHTTPLabel::getLabel(const std::string &url, const LLUrlLab return getLabelFromWikiLink(url); } -std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) +std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) const { return getUrlFromWikiLink(string); } @@ -217,7 +217,7 @@ std::string LLUrlEntryHTTPNoProtocol::getLabel(const std::string &url, const LLU return unescapeUrl(url); } -std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) +std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const { if (string.find("://") == std::string::npos) { @@ -597,7 +597,7 @@ std::string LLUrlEntrySLLabel::getLabel(const std::string &url, const LLUrlLabel return getLabelFromWikiLink(url); } -std::string LLUrlEntrySLLabel::getUrl(const std::string &string) +std::string LLUrlEntrySLLabel::getUrl(const std::string &string) const { return getUrlFromWikiLink(string); } @@ -648,14 +648,18 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const // LLUrlEntryNoLink::LLUrlEntryNoLink() { - mPattern = boost::regex("<nolink>[^[:space:]<]+</nolink>", + mPattern = boost::regex("<nolink>[^<]*</nolink>", boost::regex::perl|boost::regex::icase); mDisabledLink = true; } -std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb) +std::string LLUrlEntryNoLink::getUrl(const std::string &url) const { // return the text between the <nolink> and </nolink> tags return url.substr(8, url.size()-8-9); } +std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb) +{ + return getUrl(url); +} diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index 94455ac247d..3abada0f24e 100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -71,7 +71,7 @@ class LLUrlEntryBase boost::regex getPattern() const { return mPattern; } /// Return the url from a string that matched the regex - virtual std::string getUrl(const std::string &string); + virtual std::string getUrl(const std::string &string) const; /// Given a matched Url, return a label for the Url virtual std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) { return url; } @@ -98,8 +98,8 @@ class LLUrlEntryBase std::string getIDStringFromUrl(const std::string &url) const; std::string escapeUrl(const std::string &url) const; std::string unescapeUrl(const std::string &url) const; - std::string getLabelFromWikiLink(const std::string &url); - std::string getUrlFromWikiLink(const std::string &string); + std::string getLabelFromWikiLink(const std::string &url) const; + std::string getUrlFromWikiLink(const std::string &string) const; void addObserver(const std::string &id, const std::string &url, const LLUrlLabelCallback &cb); void callObservers(const std::string &id, const std::string &label); @@ -135,7 +135,7 @@ class LLUrlEntryHTTPLabel : public LLUrlEntryBase public: LLUrlEntryHTTPLabel(); /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); - /*virtual*/ std::string getUrl(const std::string &string); + /*virtual*/ std::string getUrl(const std::string &string) const; }; /// @@ -146,7 +146,7 @@ class LLUrlEntryHTTPNoProtocol : public LLUrlEntryBase public: LLUrlEntryHTTPNoProtocol(); /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); - /*virtual*/ std::string getUrl(const std::string &string); + /*virtual*/ std::string getUrl(const std::string &string) const; }; /// @@ -256,7 +256,7 @@ class LLUrlEntrySLLabel : public LLUrlEntryBase public: LLUrlEntrySLLabel(); /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); - /*virtual*/ std::string getUrl(const std::string &string); + /*virtual*/ std::string getUrl(const std::string &string) const; }; /// @@ -279,6 +279,7 @@ class LLUrlEntryNoLink : public LLUrlEntryBase public: LLUrlEntryNoLink(); /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); + /*virtual*/ std::string getUrl(const std::string &string) const; }; #endif diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index 55eb8950e9c..722dbe41b35 100644 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -132,7 +132,8 @@ static bool stringHasUrl(const std::string &text) text.find(".com") != std::string::npos || text.find(".net") != std::string::npos || text.find(".edu") != std::string::npos || - text.find(".org") != std::string::npos); + text.find(".org") != std::string::npos || + text.find("<nolink>") != std::string::npos); } bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb) diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index bc97cf3df2a..cbb303a0592 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -52,9 +52,10 @@ namespace namespace tut { - void testRegex(const std::string &testname, boost::regex regex, + void testRegex(const std::string &testname, LLUrlEntryBase &entry, const char *text, const std::string &expected) { + boost::regex regex = entry.getPattern(); std::string url = ""; boost::cmatch result; bool found = boost::regex_search(text, result, regex); @@ -62,7 +63,7 @@ namespace tut { S32 start = static_cast<U32>(result[0].first - text); S32 end = static_cast<U32>(result[0].second - text); - url = std::string(text+start, end-start); + url = entry.getUrl(std::string(text+start, end-start)); } ensure_equals(testname, url, expected); } @@ -74,74 +75,73 @@ namespace tut // test LLUrlEntryHTTP - standard http Urls // LLUrlEntryHTTP url; - boost::regex r = url.getPattern(); - testRegex("no valid url", r, + testRegex("no valid url", url, "htp://slurl.com/", ""); - testRegex("simple http (1)", r, + testRegex("simple http (1)", url, "http://slurl.com/", "http://slurl.com/"); - testRegex("simple http (2)", r, + testRegex("simple http (2)", url, "http://slurl.com", "http://slurl.com"); - testRegex("simple http (3)", r, + testRegex("simple http (3)", url, "http://slurl.com/about.php", "http://slurl.com/about.php"); - testRegex("simple https", r, + testRegex("simple https", url, "https://slurl.com/about.php", "https://slurl.com/about.php"); - testRegex("http in text (1)", r, + testRegex("http in text (1)", url, "XX http://slurl.com/ XX", "http://slurl.com/"); - testRegex("http in text (2)", r, + testRegex("http in text (2)", url, "XX http://slurl.com/about.php XX", "http://slurl.com/about.php"); - testRegex("https in text", r, + testRegex("https in text", url, "XX https://slurl.com/about.php XX", "https://slurl.com/about.php"); - testRegex("two http urls", r, + testRegex("two http urls", url, "XX http://slurl.com/about.php http://secondlife.com/ XX", "http://slurl.com/about.php"); - testRegex("http url with port and username", r, + testRegex("http url with port and username", url, "XX http://nobody@slurl.com:80/about.php http://secondlife.com/ XX", "http://nobody@slurl.com:80/about.php"); - testRegex("http url with port, username, and query string", r, + testRegex("http url with port, username, and query string", url, "XX http://nobody@slurl.com:80/about.php?title=hi%20there http://secondlife.com/ XX", "http://nobody@slurl.com:80/about.php?title=hi%20there"); // note: terminating commas will be removed by LLUrlRegistry:findUrl() - testRegex("http url with commas in middle and terminating", r, + testRegex("http url with commas in middle and terminating", url, "XX http://slurl.com/?title=Hi,There, XX", "http://slurl.com/?title=Hi,There,"); // note: terminating periods will be removed by LLUrlRegistry:findUrl() - testRegex("http url with periods in middle and terminating", r, + testRegex("http url with periods in middle and terminating", url, "XX http://slurl.com/index.php. XX", "http://slurl.com/index.php."); // DEV-19842: Closing parenthesis ")" breaks urls - testRegex("http url with brackets (1)", r, + testRegex("http url with brackets (1)", url, "XX http://en.wikipedia.org/wiki/JIRA_(software) XX", "http://en.wikipedia.org/wiki/JIRA_(software)"); // DEV-19842: Closing parenthesis ")" breaks urls - testRegex("http url with brackets (2)", r, + testRegex("http url with brackets (2)", url, "XX http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg XX", "http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg"); // DEV-10353: URLs in chat log terminated incorrectly when newline in chat - testRegex("http url with newlines", r, + testRegex("http url with newlines", url, "XX\nhttp://www.secondlife.com/\nXX", "http://www.secondlife.com/"); } @@ -153,39 +153,38 @@ namespace tut // test LLUrlEntryHTTPLabel - wiki-style http Urls with labels // LLUrlEntryHTTPLabel url; - boost::regex r = url.getPattern(); - testRegex("invalid wiki url [1]", r, + testRegex("invalid wiki url [1]", url, "[http://www.example.org]", ""); - testRegex("invalid wiki url [2]", r, + testRegex("invalid wiki url [2]", url, "[http://www.example.org", ""); - testRegex("invalid wiki url [3]", r, + testRegex("invalid wiki url [3]", url, "[http://www.example.org Label", ""); - testRegex("example.org with label (spaces)", r, + testRegex("example.org with label (spaces)", url, "[http://www.example.org Text]", - "[http://www.example.org Text]"); + "http://www.example.org"); - testRegex("example.org with label (tabs)", r, + testRegex("example.org with label (tabs)", url, "[http://www.example.org\t Text]", - "[http://www.example.org\t Text]"); + "http://www.example.org"); - testRegex("SL http URL with label", r, + testRegex("SL http URL with label", url, "[http://www.secondlife.com/ Second Life]", - "[http://www.secondlife.com/ Second Life]"); + "http://www.secondlife.com/"); - testRegex("SL https URL with label", r, + testRegex("SL https URL with label", url, "XXX [https://www.secondlife.com/ Second Life] YYY", - "[https://www.secondlife.com/ Second Life]"); + "https://www.secondlife.com/"); - testRegex("SL http URL with label", r, + testRegex("SL http URL with label", url, "[http://www.secondlife.com/?test=Hi%20There Second Life]", - "[http://www.secondlife.com/?test=Hi%20There Second Life]"); + "http://www.secondlife.com/?test=Hi%20There"); } template<> template<> @@ -195,69 +194,68 @@ namespace tut // test LLUrlEntrySLURL - second life URLs // LLUrlEntrySLURL url; - boost::regex r = url.getPattern(); - testRegex("no valid slurl [1]", r, + testRegex("no valid slurl [1]", url, "htp://slurl.com/secondlife/Ahern/50/50/50/", ""); - testRegex("no valid slurl [2]", r, + testRegex("no valid slurl [2]", url, "http://slurl.com/secondlife/", ""); - testRegex("no valid slurl [3]", r, + testRegex("no valid slurl [3]", url, "hhtp://slurl.com/secondlife/Ahern/50/FOO/50/", ""); - testRegex("Ahern (50,50,50) [1]", r, + testRegex("Ahern (50,50,50) [1]", url, "http://slurl.com/secondlife/Ahern/50/50/50/", "http://slurl.com/secondlife/Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [2]", r, + testRegex("Ahern (50,50,50) [2]", url, "XXX http://slurl.com/secondlife/Ahern/50/50/50/ XXX", "http://slurl.com/secondlife/Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [3]", r, + testRegex("Ahern (50,50,50) [3]", url, "XXX http://slurl.com/secondlife/Ahern/50/50/50 XXX", "http://slurl.com/secondlife/Ahern/50/50/50"); - testRegex("Ahern (50,50,50) multicase", r, + testRegex("Ahern (50,50,50) multicase", url, "XXX http://SLUrl.com/SecondLife/Ahern/50/50/50/ XXX", "http://SLUrl.com/SecondLife/Ahern/50/50/50/"); - testRegex("Ahern (50,50) [1]", r, + testRegex("Ahern (50,50) [1]", url, "XXX http://slurl.com/secondlife/Ahern/50/50/ XXX", "http://slurl.com/secondlife/Ahern/50/50/"); - testRegex("Ahern (50,50) [2]", r, + testRegex("Ahern (50,50) [2]", url, "XXX http://slurl.com/secondlife/Ahern/50/50 XXX", "http://slurl.com/secondlife/Ahern/50/50"); - testRegex("Ahern (50)", r, + testRegex("Ahern (50)", url, "XXX http://slurl.com/secondlife/Ahern/50 XXX", "http://slurl.com/secondlife/Ahern/50"); - testRegex("Ahern", r, + testRegex("Ahern", url, "XXX http://slurl.com/secondlife/Ahern/ XXX", "http://slurl.com/secondlife/Ahern/"); - testRegex("Ahern SLURL with title", r, + testRegex("Ahern SLURL with title", url, "XXX http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX", "http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!"); - testRegex("Ahern SLURL with msg", r, + testRegex("Ahern SLURL with msg", url, "XXX http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here. XXX", "http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here."); // DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat - testRegex("SLURL with brackets", r, + testRegex("SLURL with brackets", url, "XXX http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30 XXX", "http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30"); // DEV-35459: SLURLs and teleport Links not parsed properly - testRegex("SLURL with quote", r, + testRegex("SLURL with quote", url, "XXX http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701 XXX", - "http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701"); + "http://slurl.com/secondlife/A%27ksha%20Oasis/41/166/701"); } template<> template<> @@ -267,25 +265,24 @@ namespace tut // test LLUrlEntryAgent - secondlife://app/agent Urls // LLUrlEntryAgent url; - boost::regex r = url.getPattern(); - testRegex("Invalid Agent Url", r, + testRegex("Invalid Agent Url", url, "secondlife:///app/agent/0e346d8b-4433-4d66-XXXX-fd37083abc4c/about", ""); - testRegex("Agent Url ", r, + testRegex("Agent Url ", url, "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about", "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about"); - testRegex("Agent Url in text", r, + testRegex("Agent Url in text", url, "XXX secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about XXX", "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about"); - testRegex("Agent Url multicase", r, + testRegex("Agent Url multicase", url, "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About XXX", "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About"); - testRegex("Agent Url alternate command", r, + testRegex("Agent Url alternate command", url, "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar", "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar"); @@ -298,25 +295,24 @@ namespace tut // test LLUrlEntryGroup - secondlife://app/group Urls // LLUrlEntryGroup url; - boost::regex r = url.getPattern(); - testRegex("Invalid Group Url", r, + testRegex("Invalid Group Url", url, "secondlife:///app/group/00005ff3-4044-c79f-XXXX-fb28ae0df991/about", ""); - testRegex("Group Url ", r, + testRegex("Group Url ", url, "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about", "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about"); - testRegex("Group Url ", r, + testRegex("Group Url ", url, "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect", "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect"); - testRegex("Group Url in text", r, + testRegex("Group Url in text", url, "XXX secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about XXX", "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about"); - testRegex("Group Url multicase", r, + testRegex("Group Url multicase", url, "XXX secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About XXX", "secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About"); } @@ -328,45 +324,44 @@ namespace tut // test LLUrlEntryPlace - secondlife://<location> URLs // LLUrlEntryPlace url; - boost::regex r = url.getPattern(); - testRegex("no valid slurl [1]", r, + testRegex("no valid slurl [1]", url, "secondlife://Ahern/FOO/50/", ""); - testRegex("Ahern (50,50,50) [1]", r, + testRegex("Ahern (50,50,50) [1]", url, "secondlife://Ahern/50/50/50/", "secondlife://Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [2]", r, + testRegex("Ahern (50,50,50) [2]", url, "XXX secondlife://Ahern/50/50/50/ XXX", "secondlife://Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [3]", r, + testRegex("Ahern (50,50,50) [3]", url, "XXX secondlife://Ahern/50/50/50 XXX", "secondlife://Ahern/50/50/50"); - testRegex("Ahern (50,50,50) multicase", r, + testRegex("Ahern (50,50,50) multicase", url, "XXX SecondLife://Ahern/50/50/50/ XXX", "SecondLife://Ahern/50/50/50/"); - testRegex("Ahern (50,50) [1]", r, + testRegex("Ahern (50,50) [1]", url, "XXX secondlife://Ahern/50/50/ XXX", "secondlife://Ahern/50/50/"); - testRegex("Ahern (50,50) [2]", r, + testRegex("Ahern (50,50) [2]", url, "XXX secondlife://Ahern/50/50 XXX", "secondlife://Ahern/50/50"); // DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat - testRegex("SLURL with brackets", r, + testRegex("SLURL with brackets", url, "XXX secondlife://Burning%20Life%20(Hyper)/27/210/30 XXX", "secondlife://Burning%20Life%20(Hyper)/27/210/30"); // DEV-35459: SLURLs and teleport Links not parsed properly - testRegex("SLURL with quote", r, + testRegex("SLURL with quote", url, "XXX secondlife://A'ksha%20Oasis/41/166/701 XXX", - "secondlife://A'ksha%20Oasis/41/166/701"); + "secondlife://A%27ksha%20Oasis/41/166/701"); } template<> template<> @@ -376,21 +371,20 @@ namespace tut // test LLUrlEntryParcel - secondlife://app/parcel Urls // LLUrlEntryParcel url; - boost::regex r = url.getPattern(); - testRegex("Invalid Classified Url", r, + testRegex("Invalid Classified Url", url, "secondlife:///app/parcel/0000060e-4b39-e00b-XXXX-d98b1934e3a8/about", ""); - testRegex("Classified Url ", r, + testRegex("Classified Url ", url, "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about", "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about"); - testRegex("Classified Url in text", r, + testRegex("Classified Url in text", url, "XXX secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about XXX", "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about"); - testRegex("Classified Url multicase", r, + testRegex("Classified Url multicase", url, "XXX secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About XXX", "secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About"); } @@ -401,73 +395,72 @@ namespace tut // test LLUrlEntryTeleport - secondlife://app/teleport URLs // LLUrlEntryTeleport url; - boost::regex r = url.getPattern(); - testRegex("no valid teleport [1]", r, + testRegex("no valid teleport [1]", url, "http://slurl.com/secondlife/Ahern/50/50/50/", ""); - testRegex("no valid teleport [2]", r, + testRegex("no valid teleport [2]", url, "secondlife:///app/teleport/", ""); - testRegex("no valid teleport [3]", r, + testRegex("no valid teleport [3]", url, "second-life:///app/teleport/Ahern/50/50/50/", ""); - testRegex("no valid teleport [3]", r, + testRegex("no valid teleport [3]", url, "hhtp://slurl.com/secondlife/Ahern/50/FOO/50/", ""); - testRegex("Ahern (50,50,50) [1]", r, + testRegex("Ahern (50,50,50) [1]", url, "secondlife:///app/teleport/Ahern/50/50/50/", "secondlife:///app/teleport/Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [2]", r, + testRegex("Ahern (50,50,50) [2]", url, "XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX", "secondlife:///app/teleport/Ahern/50/50/50/"); - testRegex("Ahern (50,50,50) [3]", r, + testRegex("Ahern (50,50,50) [3]", url, "XXX secondlife:///app/teleport/Ahern/50/50/50 XXX", "secondlife:///app/teleport/Ahern/50/50/50"); - testRegex("Ahern (50,50,50) multicase", r, + testRegex("Ahern (50,50,50) multicase", url, "XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX", "secondlife:///app/teleport/Ahern/50/50/50/"); - testRegex("Ahern (50,50) [1]", r, + testRegex("Ahern (50,50) [1]", url, "XXX secondlife:///app/teleport/Ahern/50/50/ XXX", "secondlife:///app/teleport/Ahern/50/50/"); - testRegex("Ahern (50,50) [2]", r, + testRegex("Ahern (50,50) [2]", url, "XXX secondlife:///app/teleport/Ahern/50/50 XXX", "secondlife:///app/teleport/Ahern/50/50"); - testRegex("Ahern (50)", r, + testRegex("Ahern (50)", url, "XXX secondlife:///app/teleport/Ahern/50 XXX", "secondlife:///app/teleport/Ahern/50"); - testRegex("Ahern", r, + testRegex("Ahern", url, "XXX secondlife:///app/teleport/Ahern/ XXX", "secondlife:///app/teleport/Ahern/"); - testRegex("Ahern teleport with title", r, + testRegex("Ahern teleport with title", url, "XXX secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX", "secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!"); - testRegex("Ahern teleport with msg", r, + testRegex("Ahern teleport with msg", url, "XXX secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here. XXX", "secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here."); // DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat - testRegex("Teleport with brackets", r, + testRegex("Teleport with brackets", url, "XXX secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30 XXX", "secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30"); // DEV-35459: SLURLs and teleport Links not parsed properly - testRegex("Teleport url with quote", r, + testRegex("Teleport url with quote", url, "XXX secondlife:///app/teleport/A'ksha%20Oasis/41/166/701 XXX", - "secondlife:///app/teleport/A'ksha%20Oasis/41/166/701"); + "secondlife:///app/teleport/A%27ksha%20Oasis/41/166/701"); } template<> template<> @@ -477,33 +470,32 @@ namespace tut // test LLUrlEntrySL - general secondlife:// URLs // LLUrlEntrySL url; - boost::regex r = url.getPattern(); - testRegex("no valid slapp [1]", r, + testRegex("no valid slapp [1]", url, "http:///app/", ""); - testRegex("valid slapp [1]", r, + testRegex("valid slapp [1]", url, "secondlife:///app/", "secondlife:///app/"); - testRegex("valid slapp [2]", r, + testRegex("valid slapp [2]", url, "secondlife:///app/teleport/Ahern/50/50/50/", "secondlife:///app/teleport/Ahern/50/50/50/"); - testRegex("valid slapp [3]", r, + testRegex("valid slapp [3]", url, "secondlife:///app/foo", "secondlife:///app/foo"); - testRegex("valid slapp [4]", r, + testRegex("valid slapp [4]", url, "secondlife:///APP/foo?title=Hi%20There", "secondlife:///APP/foo?title=Hi%20There"); - testRegex("valid slapp [5]", r, + testRegex("valid slapp [5]", url, "secondlife://host/app/", "secondlife://host/app/"); - testRegex("valid slapp [6]", r, + testRegex("valid slapp [6]", url, "secondlife://host:8080/foo/bar", "secondlife://host:8080/foo/bar"); } @@ -515,35 +507,34 @@ namespace tut // test LLUrlEntrySLLabel - general secondlife:// URLs with labels // LLUrlEntrySLLabel url; - boost::regex r = url.getPattern(); - testRegex("invalid wiki url [1]", r, + testRegex("invalid wiki url [1]", url, "[secondlife:///app/]", ""); - testRegex("invalid wiki url [2]", r, + testRegex("invalid wiki url [2]", url, "[secondlife:///app/", ""); - testRegex("invalid wiki url [3]", r, + testRegex("invalid wiki url [3]", url, "[secondlife:///app/ Label", ""); - testRegex("agent slurl with label (spaces)", r, + testRegex("agent slurl with label (spaces)", url, "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about Text]", - "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about Text]"); + "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about"); - testRegex("agent slurl with label (tabs)", r, + testRegex("agent slurl with label (tabs)", url, "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]", - "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]"); + "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about"); - testRegex("agent slurl with label", r, + testRegex("agent slurl with label", url, "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]", - "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]"); + "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about"); - testRegex("teleport slurl with label", r, + testRegex("teleport slurl with label", url, "XXX [secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern] YYY", - "[secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern]"); + "secondlife:///app/teleport/Ahern/50/50/50/"); } template<> template<> @@ -553,70 +544,98 @@ namespace tut // test LLUrlEntryHTTPNoProtocol - general URLs without a protocol // LLUrlEntryHTTPNoProtocol url; - boost::regex r = url.getPattern(); - testRegex("naked .com URL", r, + testRegex("naked .com URL", url, "see google.com", - "google.com"); + "http://google.com"); - testRegex("naked .org URL", r, + testRegex("naked .org URL", url, "see en.wikipedia.org for details", - "en.wikipedia.org"); + "http://en.wikipedia.org"); - testRegex("naked .net URL", r, + testRegex("naked .net URL", url, "example.net", - "example.net"); + "http://example.net"); - testRegex("naked .edu URL (2 instances)", r, + testRegex("naked .edu URL (2 instances)", url, "MIT web site is at web.mit.edu and also www.mit.edu", - "web.mit.edu"); + "http://web.mit.edu"); - testRegex("don't match e-mail addresses", r, + testRegex("don't match e-mail addresses", url, "test@lindenlab.com", ""); - testRegex(".com URL with path", r, + testRegex(".com URL with path", url, "see secondlife.com/status for grid status", - "secondlife.com/status"); + "http://secondlife.com/status"); - testRegex(".com URL with port", r, + testRegex(".com URL with port", url, "secondlife.com:80", - "secondlife.com:80"); + "http://secondlife.com:80"); - testRegex(".com URL with port and path", r, + testRegex(".com URL with port and path", url, "see secondlife.com:80/status", - "secondlife.com:80/status"); + "http://secondlife.com:80/status"); - testRegex("www.*.com URL with port and path", r, + testRegex("www.*.com URL with port and path", url, "see www.secondlife.com:80/status", - "www.secondlife.com:80/status"); + "http://www.secondlife.com:80/status"); - testRegex("invalid .com URL [1]", r, + testRegex("invalid .com URL [1]", url, "..com", ""); - testRegex("invalid .com URL [2]", r, + testRegex("invalid .com URL [2]", url, "you.come", ""); - testRegex("invalid .com URL [3]", r, + testRegex("invalid .com URL [3]", url, "recommended", ""); - testRegex("invalid .edu URL", r, + testRegex("invalid .edu URL", url, "hi there scheduled maitenance has begun", ""); - testRegex("invalid .net URL", r, + testRegex("invalid .net URL", url, "foo.netty", ""); - testRegex("XML tags around URL [1]", r, + testRegex("XML tags around URL [1]", url, "<foo>secondlife.com</foo>", - "secondlife.com"); + "http://secondlife.com"); - testRegex("XML tags around URL [2]", r, + testRegex("XML tags around URL [2]", url, "<foo>secondlife.com/status?bar=1</foo>", - "secondlife.com/status?bar=1"); + "http://secondlife.com/status?bar=1"); + } + + template<> template<> + void object::test<12>() + { + // + // test LLUrlEntryNoLink - turn off hyperlinking + // + LLUrlEntryNoLink url; + + testRegex("<nolink> [1]", url, + "<nolink>google.com</nolink>", + "google.com"); + + testRegex("<nolink> [2]", url, + "<nolink>google.com", + ""); + + testRegex("<nolink> [3]", url, + "google.com</nolink>", + ""); + + testRegex("<nolink> [4]", url, + "<nolink>Hello World</nolink>", + "Hello World"); + + testRegex("<nolink> [5]", url, + "<nolink>My Object</nolink>", + "My Object"); } } diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 581c210bd5c..7c22ac9e36d 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -579,19 +579,26 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL url += "?name=" + chat.mFromName; url += "&owner=" + args["owner_id"].asString(); - LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent); - if (region) + std::string slurl = args["slurl"].asString(); + if (slurl.empty()) { - S32 x, y, z; - LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z); - url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z); + LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent); + if (region) + { + S32 x, y, z; + LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z); + slurl = region->getName() + llformat("/%d/%d/%d", x, y, z); + } } + url += "&slurl=" + slurl; // set the link for the object name to be the objectim SLapp + // (don't let object names with hyperlinks override our objectim Url) LLStyle::Params link_params(style_params); link_params.color.control = "HTMLLinkColor"; link_params.link_href = url; - mEditor->appendText(chat.mFromName + delimiter, false, link_params); + mEditor->appendText("<nolink>" + chat.mFromName + "</nolink>" + delimiter, + false, link_params); } else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) { diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index 898f1cd9acd..66e4a1bf660 100644 --- a/indra/newview/llinspectremoteobject.cpp +++ b/indra/newview/llinspectremoteobject.cpp @@ -167,7 +167,8 @@ void LLInspectRemoteObject::nameCallback(const LLUUID& id, const std::string& fi void LLInspectRemoteObject::update() { // show the object name as the inspector's title - getChild<LLUICtrl>("object_name")->setValue(mName); + // (don't hyperlink URLs in object names) + getChild<LLUICtrl>("object_name")->setValue("<nolink>" + mName + "</nolink>"); // show the object's owner - click it to show profile std::string owner = mOwner; @@ -192,7 +193,7 @@ void LLInspectRemoteObject::update() std::string url; if (! mSLurl.empty()) { - std::string url = "secondlife:///app/teleport/" + mSLurl; + url = "secondlife:///app/teleport/" + mSLurl; } getChild<LLUICtrl>("object_slurl")->setValue(url); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index b0952dd698f..aa9d0f469d3 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2189,7 +2189,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); if(nearby_chat) { - nearby_chat->addMessage(chat); + LLSD args; + args["owner_id"] = from_id; + args["slurl"] = location; + nearby_chat->addMessage(chat, true, args); } -- GitLab From b6bc7d94f244597f3109f2332aa395f8b3623048 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 2 Feb 2010 17:22:47 +0000 Subject: [PATCH 439/521] trivial comment fix while I was there! --- indra/newview/llstartup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ce5da8bb24f..522adc05ced 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -906,7 +906,7 @@ bool idle_startup() LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); - //good as place as any to create user windlight directories + //good a place as any to create user windlight directories std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", "")); LLFile::mkdir(user_windlight_path_name.c_str()); -- GitLab From 8920a18aff91b7ff2db63be5f3cb8110b83f2ebf Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Tue, 2 Feb 2010 12:32:38 -0500 Subject: [PATCH 440/521] Updated filter text. http://jira.secondlife.com/browse/EXT-4844 --- indra/newview/skins/default/xui/en/panel_places.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 9bfd8b91d8b..c4e4b9aa9b0 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -17,12 +17,13 @@ background_visible="true" name="teleport_history_tab_title" value="TELEPORT HISTORY" /> <filter_editor + text_pad_left="14" follows="left|top|right" - font="SansSerif" + font="SansSerifSmall" height="23" layout="topleft" left="15" - label="Filter Places" + label="Filter My Places" max_length="300" name="Filter" top="3" -- GitLab From f0a18ec0a6cf555a44d0a81a8815445dc1d0848c Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Tue, 2 Feb 2010 20:55:45 +0200 Subject: [PATCH 441/521] Fixed normal bug EXT-4758 ("Call" button in IM window is disabled after call from parcel with disabled voice) - One more voice client state is now treated by voiceWorking() as valid. --HG-- branch : product-engine --- indra/newview/llvoiceclient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index c062dd1732d..7c6ba33553e 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -5981,7 +5981,7 @@ bool LLVoiceClient::voiceEnabled() bool LLVoiceClient::voiceWorking() { - return (stateLoggedIn <= mState) && (mState <= stateLeavingSession); + return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated); } void LLVoiceClient::setLipSyncEnabled(BOOL enabled) -- GitLab From 27c08cec255bddb8a350b0d56ad419c6a8c18c24 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Tue, 2 Feb 2010 21:03:04 +0200 Subject: [PATCH 442/521] fixed bug EXT-4241 Back button in nav bar should remain depressed during click-hold Cause: mouse capture was reset by the popup menu. It broke mouse event workflow and made invalid changing of pressed state. Solution: Workaround with mouseUp callback of gMenuHolder has been implemented to handle mouseUp event and to change pressed state of the buttons. --HG-- branch : product-engine --- indra/newview/llnavigationbar.cpp | 56 +++++++++++++++++++++---------- indra/newview/llnavigationbar.h | 6 ++-- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 71dc0f90113..fdecda86e6a 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -224,20 +224,13 @@ BOOL LLNavigationBar::postBuild() fillSearchComboBox(); - if (!mBtnBack || !mBtnForward || !mBtnHome || - !mCmbLocation || !mSearchComboBox) - { - llwarns << "Malformed navigation bar" << llendl; - return FALSE; - } - mBtnBack->setEnabled(FALSE); mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this)); - mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2)); + mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this,_1, _2)); mBtnForward->setEnabled(FALSE); mBtnForward->setClickedCallback(boost::bind(&LLNavigationBar::onForwardButtonClicked, this)); - mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2)); + mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2)); mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this)); @@ -332,10 +325,10 @@ void LLNavigationBar::onBackButtonClicked() LLTeleportHistory::getInstance()->goBack(); } -void LLNavigationBar::onBackOrForwardButtonHeldDown(const LLSD& param) +void LLNavigationBar::onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param) { if (param["count"].asInteger() == 0) - showTeleportHistoryMenu(); + showTeleportHistoryMenu(ctrl); } void LLNavigationBar::onForwardButtonClicked() @@ -571,7 +564,7 @@ void LLNavigationBar::onRegionNameResponse( gAgent.teleportViaLocation(global_pos); } -void LLNavigationBar::showTeleportHistoryMenu() +void LLNavigationBar::showTeleportHistoryMenu(LLUICtrl* btn_ctrl) { // Don't show the popup if teleport history is empty. if (LLTeleportHistory::getInstance()->isEmpty()) @@ -585,14 +578,43 @@ void LLNavigationBar::showTeleportHistoryMenu() if (mTeleportHistoryMenu == NULL) return; - // *TODO: why to draw/update anything before showing the menu? - mTeleportHistoryMenu->buildDrawLabels(); mTeleportHistoryMenu->updateParent(LLMenuGL::sMenuContainer); const S32 MENU_SPAWN_PAD = -1; - LLMenuGL::showPopup(mBtnBack, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD); - + LLMenuGL::showPopup(btn_ctrl, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD); + LLButton* nav_button = dynamic_cast<LLButton*>(btn_ctrl); + if(nav_button) + { + if(mHistoryMenuConnection.connected()) + { + LL_WARNS("Navgationbar")<<"mHistoryMenuConnection should be disconnected at this moment."<<LL_ENDL; + mHistoryMenuConnection.disconnect(); + } + mHistoryMenuConnection = gMenuHolder->setMouseUpCallback(boost::bind(&LLNavigationBar::onNavigationButtonHeldUp, this, nav_button)); + // pressed state will be update after mouseUp in onBackOrForwardButtonHeldUp(); + nav_button->setForcePressedState(true); + } // *HACK pass the mouse capturing to the drop-down menu - gFocusMgr.setMouseCapture( NULL ); + // it need to let menu handle mouseup event + gFocusMgr.setMouseCapture(gMenuHolder); +} +/** + * Taking into account the HACK above, this callback-function is responsible for correct handling of mouseUp event in case of holding-down the navigation buttons.. + * We need to process this case separately to update a pressed state of navigation button. + */ +void LLNavigationBar::onNavigationButtonHeldUp(LLButton* nav_button) +{ + if(nav_button) + { + nav_button->setForcePressedState(false); + } + if(gFocusMgr.getMouseCapture() == gMenuHolder) + { + // we had passed mouseCapture in showTeleportHistoryMenu() + // now we MUST release mouseCapture to continue a proper mouseevent workflow. + gFocusMgr.setMouseCapture(NULL); + } + //gMenuHolder is using to display bunch of menus. Disconnect signal to avoid unnecessary calls. + mHistoryMenuConnection.disconnect(); } void LLNavigationBar::handleLoginComplete() diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 9d0687f193d..55bbfa164a6 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -70,13 +70,14 @@ class LLNavigationBar private: void rebuildTeleportHistoryMenu(); - void showTeleportHistoryMenu(); + void showTeleportHistoryMenu(LLUICtrl* btn_ctrl); void invokeSearch(std::string search_text); // callbacks void onTeleportHistoryMenuItemClicked(const LLSD& userdata); void onTeleportHistoryChanged(); void onBackButtonClicked(); - void onBackOrForwardButtonHeldDown(const LLSD& param); + void onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param); + void onNavigationButtonHeldUp(LLButton* nav_button); void onForwardButtonClicked(); void onHomeButtonClicked(); void onLocationSelection(); @@ -103,6 +104,7 @@ class LLNavigationBar LLRect mDefaultFpRect; boost::signals2::connection mTeleportFailedConnection; boost::signals2::connection mTeleportFinishConnection; + boost::signals2::connection mHistoryMenuConnection; bool mPurgeTPHistoryItems; // if true, save location to location history when teleport finishes bool mSaveToLocationHistory; -- GitLab From df7292b716168b464b957731325b76d2e952f3aa Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Tue, 2 Feb 2010 21:38:36 +0200 Subject: [PATCH 443/521] fixed low Bug EXT-4242 History Dropdown should appear immediately when click-dragging downward from back button LLPullButton has been implemented to handle such behavior --HG-- branch : product-engine --- indra/newview/llnavigationbar.cpp | 81 ++++++++++++++++++- indra/newview/llnavigationbar.h | 53 +++++++++++- .../default/xui/en/panel_navigation_bar.xml | 6 +- 3 files changed, 132 insertions(+), 8 deletions(-) diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index fdecda86e6a..59708fcfb52 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -34,6 +34,8 @@ #include "llnavigationbar.h" +#include "v2math.h" + #include "llregionhandle.h" #include "llfloaterreg.h" @@ -181,6 +183,77 @@ void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask) mArrowIcon->setVisible(FALSE); } +static LLDefaultChildRegistry::Register<LLPullButton> menu_button("pull_button"); + +LLPullButton::LLPullButton(const LLPullButton::Params& params): + LLButton(params) + , mClickDraggingSignal(NULL) +{ + setDirectionFromName(params.direction); +} +boost::signals2::connection LLPullButton::setClickDraggingCallback( const commit_signal_t::slot_type& cb ) +{ + if (!mClickDraggingSignal) mClickDraggingSignal = new commit_signal_t(); + return mClickDraggingSignal->connect(cb); +} + +/*virtual*/ +void LLPullButton::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLButton::onMouseLeave(x, y, mask); + + if(mMouseDownTimer.getStarted() ) + { + const LLVector2 cursor_direction = LLVector2(F32(x),F32(y)) - mLastMouseDown; + if( angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4 + { + if(mClickDraggingSignal) + { + (*mClickDraggingSignal)(this, LLSD()); + } + } + } + +} + +/*virtual*/ +BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask) + { + BOOL handled = LLButton::handleMouseDown(x,y, mask); + if(handled) + { + mLastMouseDown.set(F32(x), F32(y)); + } + return handled; +} + +/*virtual*/ +BOOL LLPullButton::handleMouseUp(S32 x, S32 y, MASK mask) +{ + mLastMouseDown.clear(); + return LLButton::handleMouseUp(x, y, mask); +} + +void LLPullButton::setDirectionFromName(const std::string& name) +{ + if (name == "left") + { + mDraggingDirection.set(F32(-1), F32(0)); + } + else if (name == "right") + { + mDraggingDirection.set(F32(0), F32(1)); + } + else if (name == "down") + { + mDraggingDirection.set(F32(0), F32(-1)); + } + else if (name == "up") + { + mDraggingDirection.set(F32(0), F32(1)); + } +} + //-- LNavigationBar ---------------------------------------------------------- /* @@ -215,8 +288,8 @@ LLNavigationBar::~LLNavigationBar() BOOL LLNavigationBar::postBuild() { - mBtnBack = getChild<LLButton>("back_btn"); - mBtnForward = getChild<LLButton>("forward_btn"); + mBtnBack = getChild<LLPullButton>("back_btn"); + mBtnForward = getChild<LLPullButton>("forward_btn"); mBtnHome = getChild<LLButton>("home_btn"); mCmbLocation= getChild<LLLocationInputCtrl>("location_combo"); @@ -227,10 +300,12 @@ BOOL LLNavigationBar::postBuild() mBtnBack->setEnabled(FALSE); mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this)); mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this,_1, _2)); - + mBtnBack->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1)); + mBtnForward->setEnabled(FALSE); mBtnForward->setClickedCallback(boost::bind(&LLNavigationBar::onForwardButtonClicked, this)); mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2)); + mBtnForward->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1)); mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this)); diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 55bbfa164a6..9d0abc7a3a7 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -34,13 +34,60 @@ #define LL_LLNAVIGATIONBAR_H #include "llpanel.h" +#include "llbutton.h" -class LLButton; class LLLocationInputCtrl; class LLMenuGL; class LLSearchEditor; class LLSearchComboBox; +/** + * This button is able to handle click-dragging mouse event. + * It has appropriated signal for this event. + * Dragging direction can be set from xml by attribute called 'direction' + * + * *TODO: move to llui? + */ + +class LLPullButton : public LLButton +{ + LOG_CLASS(LLPullButton); + +public: + + struct Params : public LLInitParam::Block<Params, LLButton::Params> + { + Optional<std::string> direction; // left, right, down, up + + Params() + : direction("direction","down") + {} + }; + + /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + + /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); + + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + + boost::signals2::connection setClickDraggingCallback( const commit_signal_t::slot_type& cb ); + + /* virtual*/ ~LLPullButton() + { + delete mClickDraggingSignal; + } + +protected: + friend class LLUICtrlFactory; + // convert string name into direction vector + void setDirectionFromName(const std::string& name); + LLPullButton(const LLPullButton::Params& params); + + commit_signal_t* mClickDraggingSignal; + LLVector2 mLastMouseDown; + LLVector2 mDraggingDirection; +}; + /** * Web browser-like navigation bar. */ @@ -95,8 +142,8 @@ class LLNavigationBar void fillSearchComboBox(); LLMenuGL* mTeleportHistoryMenu; - LLButton* mBtnBack; - LLButton* mBtnForward; + LLPullButton* mBtnBack; + LLPullButton* mBtnForward; LLButton* mBtnHome; LLSearchComboBox* mSearchComboBox; LLLocationInputCtrl* mCmbLocation; diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 5fe5db892a9..02eddc92122 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -39,8 +39,9 @@ layout="topleft" name="navigation_panel" width="600"> - <button + <pull_button follows="left|top" + direction="down" height="23" image_overlay="Arrow_Left_Off" layout="topleft" @@ -49,8 +50,9 @@ tool_tip="Go back to previous location" top="2" width="31" /> - <button + <pull_button follows="left|top" + direction="down" height="23" image_overlay="Arrow_Right_Off" layout="topleft" -- GitLab From 347daac67daddad37f0722ea2ea9b717e96c10ab Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Tue, 2 Feb 2010 21:53:52 +0200 Subject: [PATCH 444/521] Fixed normal bug EXT-4105 ([BSI] group names are not able to be copied from side panel) - changed LLTextBoxEx class to inherit the LLTextEditor behavior --HG-- branch : product-engine --- indra/newview/llexpandabletextbox.cpp | 11 ++++++++--- indra/newview/llexpandabletextbox.h | 11 ++++++++--- .../skins/default/xui/en/widgets/expandable_text.xml | 9 ++++++--- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index e0a9e080fa0..3818ee6f786 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -116,7 +116,7 @@ LLExpandableTextBox::LLTextBoxEx::Params::Params() } LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p) -: LLTextBox(p), +: LLTextEditor(p), mExpanderLabel(p.more_label), mExpanderVisible(false) { @@ -127,7 +127,7 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p) void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent) { hideExpandText(); - LLTextBox::reshape(width, height, called_from_parent); + LLTextEditor::reshape(width, height, called_from_parent); if (getTextPixelHeight() > getRect().getHeight()) { @@ -140,7 +140,7 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons // LLTextBox::setText will obliterate the expander segment, so make sure // we generate it again by clearing mExpanderVisible mExpanderVisible = false; - LLTextBox::setText(text, input_params); + LLTextEditor::setText(text, input_params); // text contents have changed, segments are cleared out // so hide the expander and determine if we need it @@ -201,6 +201,11 @@ S32 LLExpandableTextBox::LLTextBoxEx::getVerticalTextDelta() return text_height - textbox_height; } +S32 LLExpandableTextBox::LLTextBoxEx::getTextPixelHeight() +{ + return getTextBoundingRect().getHeight(); +} + ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index 2b4f9e527cd..58316ddb984 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -33,7 +33,7 @@ #ifndef LL_LLEXPANDABLETEXTBOX_H #define LL_LLEXPANDABLETEXTBOX_H -#include "lltextbox.h" +#include "lltexteditor.h" #include "llscrollcontainer.h" /** @@ -49,10 +49,10 @@ class LLExpandableTextBox : public LLUICtrl * Extended text box. "More" link will appear at end of text if * text is too long to fit into text box size. */ - class LLTextBoxEx : public LLTextBox + class LLTextBoxEx : public LLTextEditor { public: - struct Params : public LLInitParam::Block<Params, LLTextBox::Params> + struct Params : public LLInitParam::Block<Params, LLTextEditor::Params> { Mandatory<std::string> more_label; Params(); @@ -69,6 +69,11 @@ class LLExpandableTextBox : public LLUICtrl */ virtual S32 getVerticalTextDelta(); + /** + * Returns the height of text rect. + */ + S32 getTextPixelHeight(); + /** * Shows "More" link */ diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml index f59c46b2f5c..d9b6387f0d9 100644 --- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml +++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml @@ -2,10 +2,13 @@ <expandable_text max_height="300" > <textbox - more_label="More" + allow_html="true" + allow_scroll="true" + bg_visible="false" + more_label="More" follows="left|top|right" name="text" - allow_scroll="true" + read_only="true" use_ellipses="true" word_wrap="true" tab_stop="true" @@ -16,4 +19,4 @@ name="scroll" follows="all" /> -</expandable_text> \ No newline at end of file +</expandable_text> -- GitLab From 047176cd6f4be8738e3e33d1fae3d612680414ce Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Tue, 2 Feb 2010 21:53:52 +0200 Subject: [PATCH 445/521] Fixed normal bug EXT-4115 (Cannot copy/paste from another resident's profile) --HG-- branch : product-engine --- .../default/xui/en/panel_edit_profile.xml | 9 +++++++-- .../skins/default/xui/en/panel_my_profile.xml | 16 +++++++++++++--- .../skins/default/xui/en/panel_profile.xml | 19 ++++++++++++++----- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 8f7750628ed..2a2199fc870 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -255,13 +255,18 @@ top_pad="10" value="My Account:" width="100" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" - height="15" + h_pad="0" + height="28" layout="topleft" left="10" name="acc_status_text" + read_only="true" top_pad="5" + v_pad="0" value="Resident. No payment info on file." width="200" word_wrap="true" /> diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index a0734d3dca9..d519569543e 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -206,13 +206,18 @@ top_pad="10" value="Resident Since:" width="300" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" height="15" layout="topleft" left="10" name="register_date" + read_only="true" translate="false" + v_pad="0" value="05/31/2376" width="300" word_wrap="true" /> @@ -238,19 +243,24 @@ top_delta="0" value="Go to Dashboard" width="100"/> --> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" height="28" layout="topleft" left="10" name="acc_status_text" + read_only="true" top_pad="0" translate="false" + v_pad="0" width="300" word_wrap="true"> Resident. No payment info on file. Linden. - </text> + </text_editor> <text follows="left|top" font.style="BOLD" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 40b9b569037..351df22042b 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -173,8 +173,7 @@ value="http://librarianavengers.org" width="300" word_wrap="false" - use_ellipses="true" - /> + use_ellipses="true" /> <text follows="left|top" font.style="BOLD" @@ -186,13 +185,18 @@ top_pad="10" value="Resident Since:" width="300" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" height="15" layout="topleft" left="10" name="register_date" + read_only="true" translate="false" + v_pad="0" value="05/31/2376" width="300" word_wrap="true" /> @@ -218,19 +222,24 @@ top_delta="0" value="Go to Dashboard" width="100"/> --> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" height="28" layout="topleft" left="10" name="acc_status_text" + read_only="true" top_pad="0" translate="false" + v_pad="0" width="300" word_wrap="true"> Resident. No payment info on file. Linden. - </text> + </text_editor> <text follows="left|top" font.style="BOLD" -- GitLab From 0c7e18cbc67367e7bcc1fe2cfe59e7068209e814 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Tue, 2 Feb 2010 21:53:52 +0200 Subject: [PATCH 446/521] Fixed normal bug EXT-4127 ([BSI] Cannot copy/paste from another resident's picks / classifieds) --HG-- branch : product-engine --- indra/newview/llpanelclassified.cpp | 4 +- .../default/xui/en/panel_classified_info.xml | 54 +++++++++++++++---- .../skins/default/xui/en/panel_pick_info.xml | 14 ++++- 3 files changed, 60 insertions(+), 12 deletions(-) diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 3f5d80c1234..1e46827c1ae 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1231,12 +1231,14 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t static std::string mature_str = getString("type_mature"); static std::string pg_str = getString("type_pg"); + static LLUIString price_str = getString("l$_price"); bool mature = is_cf_mature(c_info->flags); childSetValue("content_type", mature ? mature_str : pg_str); childSetValue("auto_renew", is_cf_auto_renew(c_info->flags)); - childSetTextArg("price_for_listing", "[PRICE]", llformat("%d", c_info->price_for_listing)); + price_str.setArg("[PRICE]", llformat("%d", c_info->price_for_listing)); + childSetValue("price_for_listing", LLSD(price_str)); setInfoLoaded(true); } diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index 677bdbc3d2b..31719aad201 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -17,6 +17,10 @@ <panel.string name="type_pg"> General Content + </panel.string> + <panel.string + name="l$_price"> + L$[PRICE] </panel.string> <button follows="top|right" @@ -71,8 +75,11 @@ name="classified_snapshot" top="20" width="290" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="35" width="290" layout="topleft" @@ -81,35 +88,53 @@ left="10" top_pad="10" name="classified_name" + read_only="true" text_color="white" + v_pad="0" value="[name]" use_ellipses="true" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" height="25" layout="topleft" left="10" name="classified_location" + read_only="true" width="290" word_wrap="true" + v_pad="0" value="[loading...]" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="18" layout="topleft" left="10" name="content_type" + read_only="true" width="290" top_pad="5" + v_pad="0" value="[content type]" /> - <text + <text_editor + allow_html="true" + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="18" layout="topleft" left="10" name="category" + read_only="true" width="290" top_pad="5" + v_pad="0" value="[category]" /> <check_box enabled="false" @@ -119,26 +144,37 @@ left="10" name="auto_renew" top_pad="5" + v_pad="0" width="290" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top" + h_pad="0" halign="left" height="16" layout="topleft" left="10" name="price_for_listing" + read_only="true" top_pad="5" tool_tip="Price for listing." - width="105"> - L$[PRICE] - </text> - <text + v_pad="0" + width="105" /> + <text_editor + allow_html="true" + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="200" layout="topleft" left="10" + max_length="1023" name="classified_desc" + read_only="true" width="290" + v_pad="0" value="[description]" word_wrap="true" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 74899887220..375f369ba72 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -61,8 +61,11 @@ name="pick_snapshot" top="20" width="280" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="35" width="280" layout="topleft" @@ -71,17 +74,24 @@ left="10" top_pad="10" name="pick_name" + read_only="true" text_color="white" + v_pad="0" value="[name]" use_ellipses="true" /> - <text + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="25" layout="topleft" left="10" name="pick_location" + read_only="true" width="280" word_wrap="true" + v_pad="0" value="[loading...]" /> <text_editor bg_readonly_color="DkGray2" -- GitLab From 2dbf48d05c58ffb08728af4f6d8a3a8e626e093d Mon Sep 17 00:00:00 2001 From: Chuck Linden <chuck@lindenlab.com> Date: Tue, 2 Feb 2010 15:16:14 -0500 Subject: [PATCH 447/521] Adjusted vertical position of damage text and icon. https://jira.secondlife.com/browse/EXT-4861 --- indra/newview/skins/default/xui/en/widgets/location_input.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 70a58b8e030..2163660206e 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -96,7 +96,7 @@ name="damage_icon" width="14" height="13" - top="21" + top="19" left="2" follows="right|top" image_name="Parcel_Damage_Dark" @@ -106,7 +106,7 @@ name="damage_text" width="35" height="18" - top="16" + top="17" follows="right|top" halign="right" font="SansSerifSmall" -- GitLab From 847a3a12208359653aa7432f7f64c31669ec8963 Mon Sep 17 00:00:00 2001 From: Loren Shih <seraph@lindenlab.com> Date: Tue, 2 Feb 2010 17:11:42 -0500 Subject: [PATCH 448/521] EXT-4243 : Sorting is broken in inventory Landmarks were being special cased for sorting; removed this so that they sort by the same rules of other folders. --- indra/newview/llfolderviewitem.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index b05eb84e521..f154de39c92 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -2540,13 +2540,11 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde { static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); - static const LLUUID& landmarks_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); LLUUID a_uuid = a->getParentFolder()->getListener()->getUUID(); LLUUID b_uuid = b->getParentFolder()->getListener()->getUUID(); - if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id) || - (a_uuid == landmarks_folder_id && b_uuid == landmarks_folder_id)) + if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id)) { // *TODO: mantipov: probably it is better to add an appropriate method to LLFolderViewItem // or to LLInvFVBridge -- GitLab From 6d44848ded11bc7f83b725909d266658fab0cb99 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Tue, 2 Feb 2010 17:14:29 -0500 Subject: [PATCH 449/521] For EXT-4173: New accounts sometimes appear half-naked. Fixed race condition that sometimes caused incomplete auto-populate folder to be worn --- indra/newview/llstartup.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6b816f87863..4d814169cb0 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1849,7 +1849,7 @@ bool idle_startup() LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } - +#if 0 // WHY 2x? BAP // We now have an inventory skeleton, so if this is a user's first // login, we can start setting up their clothing and avatar // appearance. This helps to avoid the generic "Ruth" avatar in @@ -1863,6 +1863,7 @@ bool idle_startup() // Start loading the wearables, textures, gestures LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } +#endif // wait precache-delay and for agent's avatar or a lot longer. if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) @@ -2526,6 +2527,11 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response) void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, const std::string& gender_name ) { + // Not going through the processAgentInitialWearables path, so need to set this here. + LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); + // Initiate creation of COF, since we're also bypassing that. + gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); + S32 gender = 0; std::string gestures; if (gender_name == "male") @@ -2544,7 +2550,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t item_array; LLNameCategoryCollector has_name(outfit_folder_name); - gInventory.collectDescendentsIf(LLUUID::null, + gInventory.collectDescendentsIf(gInventory.getLibraryRootFolderID(), cat_array, item_array, LLInventoryModel::EXCLUDE_TRASH, @@ -2555,7 +2561,10 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, } else { - LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name); + LLInventoryCategory* cat = cat_array.get(0); + bool do_copy = true; + bool do_append = false; + LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append); } LLAppearanceManager::instance().wearOutfitByName(gestures); LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER); -- GitLab From 5285e5479cb9f8d3b1c00fbafc4b01b21c613df2 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Tue, 2 Feb 2010 23:11:27 +0000 Subject: [PATCH 450/521] Remove a couple of header deps on llprimitive.h for faster buildy goodness. --- indra/newview/lldrawable.h | 1 - indra/newview/lltoolplacer.h | 1 - 2 files changed, 2 deletions(-) diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 5a10b688da4..651dabff9ea 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -44,7 +44,6 @@ #include "llquaternion.h" #include "xform.h" #include "llmemtype.h" -#include "llprimitive.h" #include "lldarray.h" #include "llviewerobject.h" #include "llrect.h" diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h index b7422380d43..df07f1854ce 100644 --- a/indra/newview/lltoolplacer.h +++ b/indra/newview/lltoolplacer.h @@ -33,7 +33,6 @@ #ifndef LL_TOOLPLACER_H #define LL_TOOLPLACER_H -#include "llprimitive.h" #include "llpanel.h" #include "lltool.h" -- GitLab From 85cc9f121d0b8cb5c10a9ed505a9f67bb9b87862 Mon Sep 17 00:00:00 2001 From: Loren Shih <seraph@lindenlab.com> Date: Tue, 2 Feb 2010 20:25:48 -0500 Subject: [PATCH 451/521] EXT-4874 : Client freezes on right click - take item Fixed infinite loop due to parent_id not being incremented properly in loop. --- indra/newview/llinventorymodel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index bdf1ebddac2..05e366523ac 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -317,7 +317,10 @@ BOOL LLInventoryModel::isObjectDescendentOf(const LLUUID& obj_id, const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(const LLUUID& obj_id) const { const LLInventoryObject* obj = getObject(obj_id); - const LLUUID& parent_id = obj->getParentUUID(); + + // Search up the parent chain until we get to root or an acceptable folder. + // This assumes there are no cycles in the tree else we'll get a hang. + LLUUID parent_id = obj->getParentUUID(); while (!parent_id.isNull()) { const LLViewerInventoryCategory *cat = getCategory(parent_id); @@ -329,6 +332,7 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons { return cat; } + parent_id = cat->getParentUUID(); } return NULL; } -- GitLab From 5491dd6e983f8fccbd687c7c45ef43125dfc0f6c Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Tue, 2 Feb 2010 18:24:11 -0800 Subject: [PATCH 452/521] Further fixes for EXT-4689 (Long-word chat spam cripples fps and/or disconnects client). This should fix the inefficiencies in the append path that made viewer FPS drop severely when addinglarge amounts of text to the nearby chat floater. Resizing the floater with a huge amount of text in it is still pretty bad, but fixing that will require some bigger architectural changes. Changed LLTextBase::needsReflow() to take an offset at which to start reflow processing. Changed most needsReflow() calls in LLTextBase to supply a proper index. Changed LLTextBase::reflow() to use the reflow index maintained by needsReflow(). Removed all needsReflow() calls from LLTextEditor (the only way for it to manipulate the text is through functions in LLTextBase that already manage reflowing internally). Removed LLTextEditor::replaceUrlLabel(), since it was identical to the inherited version LLTextBase::replaceUrlLabel(). Reviewed by Richard. --- indra/llui/lltextbase.cpp | 28 ++++++++++----- indra/llui/lltextbase.h | 6 ++-- indra/llui/lltexteditor.cpp | 69 ------------------------------------- indra/llui/lltexteditor.h | 1 - 4 files changed, 22 insertions(+), 82 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index b977e50bc1a..75ca6d88950 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -185,7 +185,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p) mWriteableBgColor(p.bg_writeable_color), mReadOnlyBgColor(p.bg_readonly_color), mFocusBgColor(p.bg_focus_color), - mReflowNeeded(FALSE), + mReflowIndex(S32_MAX), mCursorPos( 0 ), mScrollNeeded(FALSE), mDesiredXPixel(-1), @@ -660,7 +660,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s } onValueChange(pos, pos + insert_len); - needsReflow(); + needsReflow(pos); return insert_len; } @@ -720,7 +720,7 @@ S32 LLTextBase::removeStringNoUndo(S32 pos, S32 length) createDefaultSegment(); onValueChange(pos, pos); - needsReflow(); + needsReflow(pos); return -length; // This will be wrong if someone calls removeStringNoUndo with an excessive length } @@ -736,7 +736,7 @@ S32 LLTextBase::overwriteCharNoUndo(S32 pos, llwchar wc) getViewModel()->setDisplay(text); onValueChange(pos, pos + 1); - needsReflow(); + needsReflow(pos); return 1; } @@ -762,15 +762,18 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert) } segment_set_t::iterator cur_seg_iter = getSegIterContaining(segment_to_insert->getStart()); + S32 reflow_start_index = 0; if (cur_seg_iter == mSegments.end()) { mSegments.insert(segment_to_insert); segment_to_insert->linkToDocument(this); + reflow_start_index = segment_to_insert->getStart(); } else { LLTextSegmentPtr cur_segmentp = *cur_seg_iter; + reflow_start_index = cur_segmentp->getStart(); if (cur_segmentp->getStart() < segment_to_insert->getStart()) { S32 old_segment_end = cur_segmentp->getEnd(); @@ -829,7 +832,7 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert) } // layout potentially changed - needsReflow(); + needsReflow(reflow_start_index); } BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask) @@ -1084,15 +1087,16 @@ S32 LLTextBase::getLeftOffset(S32 width) static LLFastTimer::DeclareTimer FTM_TEXT_REFLOW ("Text Reflow"); -void LLTextBase::reflow(S32 start_index) +void LLTextBase::reflow() { LLFastTimer ft(FTM_TEXT_REFLOW); updateSegments(); - while(mReflowNeeded) + while(mReflowIndex < S32_MAX) { - mReflowNeeded = false; + S32 start_index = mReflowIndex; + mReflowIndex = S32_MAX; // shrink document to minimum size (visible portion of text widget) // to force inlined widgets with follows set to shrink @@ -1619,6 +1623,12 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c } } +void LLTextBase::needsReflow(S32 index) +{ + lldebugs << "reflow on object " << (void*)this << " index = " << mReflowIndex << ", new index = " << index << llendl; + mReflowIndex = llmin(mReflowIndex, index); +} + void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& style_params) { if (new_text.empty()) return; @@ -2260,7 +2270,7 @@ LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 e LLUIImagePtr image = mStyle->getImage(); if (image.notNull()) { - mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor)); + mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor, start)); } } diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index ed2f2394767..3dda6f4cc88 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -150,7 +150,7 @@ class LLTextBase void appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params()); // force reflow of text - void needsReflow() { mReflowNeeded = TRUE; } + void needsReflow(S32 index = 0); S32 getLength() const { return getWText().length(); } S32 getLineCount() const { return mLineInfoList.size(); } @@ -292,7 +292,7 @@ class LLTextBase S32 getFirstVisibleLine() const; std::pair<S32, S32> getVisibleLines(bool fully_visible = false); S32 getLeftOffset(S32 width); - void reflow(S32 start_index = 0); + void reflow(); // cursor void updateCursorXPos(); @@ -362,7 +362,7 @@ class LLTextBase class LLScrollContainer* mScroller; // transient state - bool mReflowNeeded; // need to reflow text because of change to text contents or display region + S32 mReflowIndex; // index at which to start reflow. S32_MAX indicates no reflow needed. bool mScrollNeeded; // need to change scroll region because of change to cursor position S32 mScrollIndex; // index of first character to keep visible in scroll region diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index e76fee9f17f..7a19b7427cc 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -1285,8 +1285,6 @@ void LLTextEditor::cut() gClipboard.copyFromSubstring( getWText(), left_pos, length, mSourceID ); deleteSelection( FALSE ); - needsReflow(); - onKeyStroke(); } @@ -1391,8 +1389,6 @@ void LLTextEditor::pasteHelper(bool is_primary) setCursorPos(mCursorPos + insert(mCursorPos, clean_string, FALSE, LLTextSegmentPtr())); deselect(); - needsReflow(); - onKeyStroke(); } @@ -1787,8 +1783,6 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask ) if(text_may_have_changed) { - needsReflow(); - onKeyStroke(); } needsScroll(); @@ -1831,8 +1825,6 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char) // Most keystrokes will make the selection box go away, but not all will. deselect(); - needsReflow(); - onKeyStroke(); } @@ -1891,8 +1883,6 @@ void LLTextEditor::doDelete() } onKeyStroke(); - - needsReflow(); } //---------------------------------------------------------------------------- @@ -1935,8 +1925,6 @@ void LLTextEditor::undo() setCursorPos(pos); - needsReflow(); - onKeyStroke(); } @@ -1979,8 +1967,6 @@ void LLTextEditor::redo() setCursorPos(pos); - needsReflow(); - onKeyStroke(); } @@ -2339,8 +2325,6 @@ void LLTextEditor::insertText(const std::string &new_text) setCursorPos(mCursorPos + insert( mCursorPos, utf8str_to_wstring(new_text), FALSE, LLTextSegmentPtr() )); - needsReflow(); - setEnabled( enabled ); } @@ -2363,8 +2347,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const LLTextSegmentPtr segment = new LLInlineViewSegment(params, old_length, old_length + widget_wide_text.size()); insert(getLength(), widget_wide_text, FALSE, segment); - needsReflow(); - // Set the cursor and scroll position if( selection_start != selection_end ) { @@ -2389,52 +2371,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const } } - -void LLTextEditor::replaceUrlLabel(const std::string &url, - const std::string &label) -{ - // get the full (wide) text for the editor so we can change it - LLWString text = getWText(); - LLWString wlabel = utf8str_to_wstring(label); - bool modified = false; - S32 seg_start = 0; - - // iterate through each segment looking for ones styled as links - segment_set_t::iterator it; - for (it = mSegments.begin(); it != mSegments.end(); ++it) - { - LLTextSegment *seg = *it; - LLStyleConstSP style = seg->getStyle(); - - // update segment start/end length in case we replaced text earlier - S32 seg_length = seg->getEnd() - seg->getStart(); - seg->setStart(seg_start); - seg->setEnd(seg_start + seg_length); - - // if we find a link with our Url, then replace the label - if (style->isLink() && style->getLinkHREF() == url) - { - S32 start = seg->getStart(); - S32 end = seg->getEnd(); - text = text.substr(0, start) + wlabel + text.substr(end, text.size() - end + 1); - seg->setEnd(start + wlabel.size()); - modified = true; - } - - // work out the character offset for the next segment - seg_start = seg->getEnd(); - } - - // update the editor with the new (wide) text string - if (modified) - { - getViewModel()->setDisplay(text); - deselect(); - setCursorPos(mCursorPos); - needsReflow(); - } -} - void LLTextEditor::removeTextFromEnd(S32 num_chars) { if (num_chars <= 0) return; @@ -2446,7 +2382,6 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars) mSelectionStart = llclamp(mSelectionStart, 0, len); mSelectionEnd = llclamp(mSelectionEnd, 0, len); - needsReflow(); needsScroll(); } @@ -2505,8 +2440,6 @@ BOOL LLTextEditor::tryToRevertToPristineState() i--; } } - - needsReflow(); } return isPristine(); // TRUE => success @@ -2681,7 +2614,6 @@ BOOL LLTextEditor::importBuffer(const char* buffer, S32 length ) startOfDoc(); deselect(); - needsReflow(); return success; } @@ -2785,7 +2717,6 @@ void LLTextEditor::updatePreedit(const LLWString &preedit_string, mPreeditStandouts = preedit_standouts; - needsReflow(); setCursorPos(insert_preedit_at + caret_position); // Update of the preedit should be caused by some key strokes. diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index 043dda8fa62..a136f9ccce7 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -149,7 +149,6 @@ class LLTextEditor : void selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE); BOOL replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE); void replaceTextAll(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive); - void replaceUrlLabel(const std::string &url, const std::string &label); // Undo/redo stack void blockUndo(); -- GitLab From e518fa8df91ebe8dabf949cc6074b35f60ca083f Mon Sep 17 00:00:00 2001 From: "Mark Palange (Mani)" <palange@lindenlab.com> Date: Tue, 2 Feb 2010 18:26:29 -0800 Subject: [PATCH 453/521] EXT-4598 - Added UI handling for E_ST_BAD_ROOT result of animation loading. Reviewed by Palmer --- indra/newview/llfloateranimpreview.cpp | 64 ++++++++++--------- .../xui/en/floater_animation_preview.xml | 6 +- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 60f150bd969..904655cdc86 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -86,38 +86,40 @@ const F32 BASE_ANIM_TIME_OFFSET = 5.f; std::string STATUS[] = { - "E_ST_OK", - "E_ST_EOF", - "E_ST_NO_CONSTRAINT", - "E_ST_NO_FILE", -"E_ST_NO_HIER", -"E_ST_NO_JOINT", -"E_ST_NO_NAME", -"E_ST_NO_OFFSET", -"E_ST_NO_CHANNELS", -"E_ST_NO_ROTATION", -"E_ST_NO_AXIS", -"E_ST_NO_MOTION", -"E_ST_NO_FRAMES", -"E_ST_NO_FRAME_TIME", -"E_ST_NO_POS", -"E_ST_NO_ROT", -"E_ST_NO_XLT_FILE", -"E_ST_NO_XLT_HEADER", -"E_ST_NO_XLT_NAME", -"E_ST_NO_XLT_IGNORE", -"E_ST_NO_XLT_RELATIVE", -"E_ST_NO_XLT_OUTNAME", -"E_ST_NO_XLT_MATRIX", -"E_ST_NO_XLT_MERGECHILD", -"E_ST_NO_XLT_MERGEPARENT", -"E_ST_NO_XLT_PRIORITY", -"E_ST_NO_XLT_LOOP", -"E_ST_NO_XLT_EASEIN", -"E_ST_NO_XLT_EASEOUT", -"E_ST_NO_XLT_HAND", -"E_ST_NO_XLT_EMOTE", + "E_ST_OK", + "E_ST_EOF", + "E_ST_NO_CONSTRAINT", + "E_ST_NO_FILE", + "E_ST_NO_HIER", + "E_ST_NO_JOINT", + "E_ST_NO_NAME", + "E_ST_NO_OFFSET", + "E_ST_NO_CHANNELS", + "E_ST_NO_ROTATION", + "E_ST_NO_AXIS", + "E_ST_NO_MOTION", + "E_ST_NO_FRAMES", + "E_ST_NO_FRAME_TIME", + "E_ST_NO_POS", + "E_ST_NO_ROT", + "E_ST_NO_XLT_FILE", + "E_ST_NO_XLT_HEADER", + "E_ST_NO_XLT_NAME", + "E_ST_NO_XLT_IGNORE", + "E_ST_NO_XLT_RELATIVE", + "E_ST_NO_XLT_OUTNAME", + "E_ST_NO_XLT_MATRIX", + "E_ST_NO_XLT_MERGECHILD", + "E_ST_NO_XLT_MERGEPARENT", + "E_ST_NO_XLT_PRIORITY", + "E_ST_NO_XLT_LOOP", + "E_ST_NO_XLT_EASEIN", + "E_ST_NO_XLT_EASEOUT", + "E_ST_NO_XLT_HAND", + "E_ST_NO_XLT_EMOTE", + "E_ST_BAD_ROOT" }; + //----------------------------------------------------------------------------- // LLFloaterAnimPreview() //----------------------------------------------------------------------------- diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml index 4f4288b654d..1ffedde29b0 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -147,7 +147,11 @@ Maximum animation length is [MAX_LENGTH] seconds. name="E_ST_NO_XLT_EMOTE"> Cannot read emote name. </floater.string> - <text + <floater.string + name="E_ST_BAD_ROOT"> + Incorrect root joint name, use "hip". + </floater.string> + <text type="string" length="1" bottom="42" -- GitLab From 44c4337420f2dc5cae2782d476b9c94cd4020998 Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Wed, 3 Feb 2010 12:31:51 +0800 Subject: [PATCH 454/521] EXT-1640 Application Icon Misaligned on OSX Installer Dialog (renamed to secondlife beta) --- .../installers/darwin/firstlook-dmg/_DS_Store | Bin 12292 -> 12292 bytes .../darwin/fix_application_icon_position.sh | 17 ++++++++++------- .../darwin/publicnightly-dmg/_DS_Store | Bin 12292 -> 12292 bytes .../installers/darwin/release-dmg/_DS_Store | Bin 12292 -> 12292 bytes .../darwin/releasecandidate-dmg/_DS_Store | Bin 12292 -> 12292 bytes 5 files changed, 10 insertions(+), 7 deletions(-) mode change 100644 => 100755 indra/newview/installers/darwin/fix_application_icon_position.sh diff --git a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644 GIT binary patch delta 135 zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy delta 142 zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF< z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$ F0{~6ACG`LR diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh old mode 100644 new mode 100755 index a0b72a89f25..c6b92589db5 --- a/indra/newview/installers/darwin/fix_application_icon_position.sh +++ b/indra/newview/installers/darwin/fix_application_icon_position.sh @@ -4,11 +4,14 @@ cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg hdid ~/Desktop/TempBuild.dmg open -a finder /Volumes/Second\ Life\ Installer osascript dmg-cleanup.applescript -cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store -chflags nohidden ~/Desktop/_DS_Store -cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store -cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store -cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store -cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store umount /Volumes/Second\ Life\ Installer/ -rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg +hdid ~/Desktop/TempBuild.dmg +open -a finder /Volumes/Second\ Life\ Installer +#cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store +#chflags nohidden ~/Desktop/_DS_Store +#cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store +#cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store +#cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store +#cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store +#umount /Volumes/Second\ Life\ Installer/ +#rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg diff --git a/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store b/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644 GIT binary patch delta 135 zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy delta 142 zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF< z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$ F0{~6ACG`LR diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644 GIT binary patch delta 135 zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy delta 142 zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF< z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$ F0{~6ACG`LR diff --git a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644 GIT binary patch delta 135 zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy delta 142 zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF< z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$ F0{~6ACG`LR -- GitLab From b428711814af79533503b8894423502762a54ae7 Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Wed, 3 Feb 2010 15:43:07 +0800 Subject: [PATCH 455/521] EXT-4603) Right-clicking a sound and choosing Play doesn't actually play it --- indra/newview/llsidepanelinventory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 7b923f4b0b3..3fd53099475 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -176,7 +176,7 @@ void LLSidepanelInventory::onPlayButtonClicked() performActionOnSelection("play"); break; default: - performActionOnSelection("activate"); + performActionOnSelection("open"); break; } } -- GitLab From 5e63efe1da6b72fc0ce9771b9ef1e5c9d9bcb537 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Wed, 3 Feb 2010 11:38:03 +0200 Subject: [PATCH 456/521] =?UTF-8?q?fixed=20EXT-4805=20=E2=80=9CFriend=20of?= =?UTF-8?q?fer=20is=20corrupted=20in=20resized=20IM=20window=E2=80=9D,=20r?= =?UTF-8?q?everted=20IM=20floater=20default=20width;=20made=20offer=20butt?= =?UTF-8?q?ons=20have=20absolute=20positions;=20avoided=20text=20message?= =?UTF-8?q?=20scrolling=20with=20default=20IM=20floater=20width;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llchathistory.cpp | 38 +++++++++++++++++++ .../default/xui/en/floater_im_session.xml | 10 ++--- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 581c210bd5c..64226ac52b6 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -55,6 +55,7 @@ #include "lltoastnotifypanel.h" #include "llviewerregion.h" #include "llworld.h" +#include "lluiconstants.h" #include "llsidetray.h"//for blocked objects panel @@ -664,8 +665,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL { LLToastNotifyPanel* notify_box = new LLToastNotifyPanel( notification); + //we can't set follows in xml since it broke toasts behavior notify_box->setFollowsLeft(); notify_box->setFollowsRight(); + notify_box->setFollowsTop(); + + LLButton* accept_button = notify_box->getChild<LLButton> ("Accept", + TRUE); + if (accept_button != NULL) + { + accept_button->setFollowsNone(); + accept_button->setOrigin(2*HPAD, accept_button->getRect().mBottom); + } + + LLButton* decline_button = notify_box->getChild<LLButton> ( + "Decline", TRUE); + if (accept_button != NULL && decline_button != NULL) + { + decline_button->setFollowsNone(); + decline_button->setOrigin(4*HPAD + + accept_button->getRect().getWidth(), + decline_button->getRect().mBottom); + } + + LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE); + S32 text_heigth = 0; + if(text_editor != NULL) + { + text_heigth = text_editor->getTextBoundingRect().getHeight(); + } + //Prepare the rect for the view LLRect target_rect = mEditor->getDocumentView()->getRect(); // squeeze down the widget by subtracting padding off left and right @@ -675,6 +704,15 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL notify_box->getRect().getHeight()); notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom); + if (text_editor != NULL) + { + S32 text_heigth_delta = + text_editor->getTextBoundingRect().getHeight() + - text_heigth; + notify_box->reshape(target_rect.getWidth(), + notify_box->getRect().getHeight() + text_heigth_delta); + } + LLInlineViewSegment::Params params; params.view = notify_box; params.left_pad = mLeftWidgetPad; 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 9aaa660574c..d2e54731573 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -12,7 +12,7 @@ can_minimize="true" can_close="true" visible="false" - width="440" + width="360" can_resize="true" min_width="250" min_height="190"> @@ -20,7 +20,7 @@ animate="false" follows="all" height="320" - width="440" + width="360" layout="topleft" orientation="horizontal" name="im_panels" @@ -38,7 +38,7 @@ left="0" top="0" height="200" - width="325" + width="245" user_resize="true"> <button height="20" @@ -65,7 +65,7 @@ parse_highlights="true" allow_html="true" left="1" - width="320"> + width="240"> </chat_history> <line_editor bottom="0" @@ -75,7 +75,7 @@ label="To" layout="bottomleft" name="chat_editor" - width="320"> + width="240"> </line_editor> </layout_panel> </layout_stack> -- GitLab From 007bc25f66bd54421a089777b1a1ab28eeed1a7d Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 3 Feb 2010 13:33:14 +0200 Subject: [PATCH 457/521] Fixed critical bug EXT-4838 ([NUX] Add empty Groups list condition text) - moved processing of empty list message into LLGroupList - implemented separate messages for empty list: No matched groups / no groups at all --HG-- branch : product-engine --- indra/newview/llgrouplist.cpp | 19 ++++++++++++++++++- indra/newview/llgrouplist.h | 11 +++++++++++ indra/newview/llpanelpeople.cpp | 1 - .../skins/default/xui/en/panel_people.xml | 5 ++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index e01709aa3a0..e924e902dfa 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -72,6 +72,8 @@ class LLGroupComparator : public LLFlatListView::ItemComparator static const LLGroupComparator GROUP_COMPARATOR; LLGroupList::Params::Params() +: no_groups_msg("no_groups_msg") +, no_filtered_groups_msg("no_filtered_groups_msg") { } @@ -79,6 +81,8 @@ LLGroupList::Params::Params() LLGroupList::LLGroupList(const Params& p) : LLFlatListView(p) , mDirty(true) // to force initial update + , mNoFilteredGroupsMsg(p.no_filtered_groups_msg) + , mNoGroupsMsg(p.no_groups_msg) { // Listen for agent group changes. gAgent.addListener(this, "new group"); @@ -158,6 +162,18 @@ void LLGroupList::refresh() LLUUID id; bool have_filter = !mNameFilter.empty(); + // set no items message depend on filter state & total count of groups + if (have_filter) + { + // groups were filtered + setNoItemsCommentText(mNoFilteredGroupsMsg); + } + else if (0 == count) + { + // user is not a member of any group + setNoItemsCommentText(mNoGroupsMsg); + } + clear(); for(S32 i = 0; i < count; ++i) @@ -173,7 +189,8 @@ void LLGroupList::refresh() sort(); // Add "none" to list at top if filter not set (what's the point of filtering "none"?). - if (!have_filter) + // but only if some real groups exists. EXT-4838 + if (!have_filter && count > 0) { std::string loc_none = LLTrans::getString("GroupsNone"); addNewItem(LLUUID::null, loc_none, LLUUID::null, ADD_TOP); diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h index f7afe0c0b2a..f3ac676edd6 100644 --- a/indra/newview/llgrouplist.h +++ b/indra/newview/llgrouplist.h @@ -53,6 +53,15 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener public: struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> { + /** + * Contains a message for empty list when user is not a member of any group + */ + Optional<std::string> no_groups_msg; + + /** + * Contains a message for empty list when all groups don't match passed filter + */ + Optional<std::string> no_filtered_groups_msg; Params(); }; @@ -80,6 +89,8 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener bool mShowIcons; bool mDirty; std::string mNameFilter; + std::string mNoFilteredGroupsMsg; + std::string mNoGroupsMsg; }; class LLButton; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index b01cdcc832b..fb6f36d4da6 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -516,7 +516,6 @@ BOOL LLPanelPeople::postBuild() mRecentList->setShowIcons("RecentListShowIcons"); mGroupList = getChild<LLGroupList>("group_list"); - mGroupList->setNoItemsCommentText(getString("no_groups")); mNearbyList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu); mRecentList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu); diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index ac98bb9bd91..9b83e0c68eb 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -23,9 +23,6 @@ background_visible="true" <string name="no_friends" value="No friends" /> - <string - name="no_groups" - value="No groups" /> <string name="people_filter_label" value="Filter People" /> @@ -226,6 +223,8 @@ background_visible="true" layout="topleft" left="0" name="group_list" + no_filtered_groups_msg="No groups" + no_groups_msg="[secondlife:///app/search/groups Trying searching for some groups to join.]" top="0" width="313" /> <panel -- GitLab From e1637b79a426df8cef575352bbee299458bf42b3 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 3 Feb 2010 13:34:00 +0200 Subject: [PATCH 458/521] No ticket: removed deprecated commented out code --HG-- branch : product-engine --- indra/newview/llgrouplist.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index e924e902dfa..1ed1113f4d9 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -89,9 +89,6 @@ LLGroupList::LLGroupList(const Params& p) mShowIcons = gSavedSettings.getBOOL("GroupListShowIcons"); setCommitOnSelectionChange(true); - // TODO: implement context menu - // display a context menu appropriate for a list of group names -// setContextMenu(LLScrollListCtrl::MENU_GROUP); // Set default sort order. setComparator(&GROUP_COMPARATOR); -- GitLab From 2a77ef80cec7cacb6c812eb358caef6a73332289 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 3 Feb 2010 14:18:06 +0200 Subject: [PATCH 459/521] Backed out changeset 5add97e5b6cf Related to major bug EXT-3985 [BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x Removed auto-cleanup patch to repair Lanmarks in Favorite bar (remove LM Sort prefixes) --HG-- branch : product-engine --- indra/newview/llinventorymodel.cpp | 134 ----------------------------- 1 file changed, 134 deletions(-) diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 9e96bbc55f4..961f7adc0a5 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -142,105 +142,6 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item) return rv; } -/* -This namespace contains a functionality to remove LM prefixes were used to store sort order of -Favorite Landmarks in landmarks' names. -Once being in Favorites folder LM inventory Item has such prefix. -Due to another solution is implemented in EXT-3985 these prefixes should be removed. - -*NOTE: It will be unnecessary after the first successful session in viewer 2.0. -Can be removed before public release. - -Implementation details: -At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and -updates them on the viewer and server sides. -Also it calls fetching agent's inventory to process not yet loaded landmarks too. -If fetching is successfully done it will store special per-agent empty file-marker -in the user temporary folder (where cached inventory is loaded) while caching agent's inventory. -After that in will not affect the viewer until cached marker is removed. -*/ -namespace LMSortPrefix -{ - bool cleanup_done = false; - const std::string getMarkerPath() - { - std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString())); - std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str()); - - return marker_filename; - } - bool wasClean() - { - static bool was_clean = false; - static bool already_init = false; - if (already_init) return was_clean; - - already_init = true; - std::string path_to_marker = getMarkerPath(); - was_clean = LLFile::isfile(path_to_marker); - - return was_clean; - } - - void setLandmarksWereCleaned() - { - if (cleanup_done) - { - std::string path_to_marker = getMarkerPath(); - LLFILE* file = LLFile::fopen(path_to_marker, "w"); - if(!file) - { - llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl; - return; - } - - fclose(file); - } - } - - void removePrefix(LLPointer<LLViewerInventoryItem> inv_item) - { - if (wasClean()) - { - LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL; - return; - } - - if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return; - - std::string old_name = inv_item->getName(); - - S32 sort_field = -1; - std::string display_name; - BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name); - if (exists && sort_field != -1) - { - llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl; - LLUUID parent_uuid = inv_item->getParentUUID(); - if (gInventory.getCategory(parent_uuid)) - { - llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl; - } - - - // mark item completed to avoid error while copying and updating server - inv_item->setComplete(TRUE); - LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item); - new_item->rename(display_name); - gInventory.updateItem(new_item); - new_item->updateServer(FALSE); - - gInventory.notifyObservers(); - } - } - - void completeCleanup() - { - // background fetch is completed. can save marker - cleanup_done = true; - } -} - ///---------------------------------------------------------------------------- /// Class LLInventoryModel ///---------------------------------------------------------------------------- @@ -1835,8 +1736,6 @@ void LLInventoryModel::stopBackgroundFetch() gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL); sBulkFetchCount=0; sMinTimeBetweenFetches=0.0f; - - LMSortPrefix::completeCleanup(); } } @@ -1983,13 +1882,6 @@ void LLInventoryModel::cache( const LLUUID& parent_folder_id, const LLUUID& agent_id) { - if (getRootFolderID() == parent_folder_id) - { - // *TODO: mantipov: can be removed before public release, EXT-3985 - //save marker to avoid fetching inventory on future sessions - LMSortPrefix::setLandmarksWereCleaned(); - } - lldebugs << "Caching " << parent_folder_id << " for " << agent_id << llendl; LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id); @@ -2800,28 +2692,6 @@ void LLInventoryModel::buildParentChildMap() // The inv tree is built. mIsAgentInvUsable = true; - {// *TODO: mantipov: can be removed before public release, EXT-3985 - /* - *HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name. - Is necessary to be called once per account after EXT-3985 is implemented. - So, let fetch agent's inventory, processing will be done in processInventoryDescendents() - Should be removed before public release. - */ - if (!LMSortPrefix::wasClean()) - { - cat_array_t cats; - item_array_t items; - collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH); - - for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it) - { - LMSortPrefix::removePrefix(*it); - } - - gInventory.startBackgroundFetch(agent_inv_root_id); - } - } - llinfos << "Inventory initialized, notifying observers" << llendl; addChangedMask(LLInventoryObserver::ALL, LLUUID::null); notifyObservers(); @@ -3587,10 +3457,6 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**) continue; } gInventory.updateItem(titem); - - {// *TODO: mantipov: can be removed before public release, EXT-3985 - LMSortPrefix::removePrefix(titem); - } } // set version and descendentcount according to message. -- GitLab From 19ba010137a2b43759cbe5d871fb430784e15db2 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 12:49:38 +0200 Subject: [PATCH 460/521] Fixed low bug EXT-4802 - Clearing whole teleport history doesn't clear TP history from nav bar --HG-- branch : product-engine --- indra/newview/llpanelteleporthistory.cpp | 3 +++ indra/newview/llteleporthistory.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 43e0f9a88ce..90c8f2551f1 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -940,6 +940,9 @@ bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notificati if (0 == option) { + // order does matter, call this first or teleport history will contain one record(current location) + LLTeleportHistory::getInstance()->purgeItems(); + LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance(); th->purgeItems(); th->save(); diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index ce00dec802d..dcc85392f7e 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -173,6 +173,8 @@ void LLTeleportHistory::purgeItems() // reset the count mRequestedItem = -1; mCurrentItem = 0; + + onHistoryChanged(); } // static -- GitLab From 2a755eca16567e9566007e9771cce78b3f92bc0b Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 14:44:32 +0200 Subject: [PATCH 461/521] Fixed normal bug EXT-4766 - System notifications in nearby chat has default avatar icon and behave like sent from object --HG-- branch : product-engine --- indra/newview/llviewermessage.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 26c9a1dd796..3bf0fb6f71b 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2181,6 +2181,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) chat.mFromID = from_id ^ gAgent.getSessionID(); } + if(SYSTEM_FROM == name) + { + // System's UUID is NULL (fixes EXT-4766) + chat.mFromID = from_id = LLUUID::null; + } + LLSD query_string; query_string["owner"] = from_id; query_string["slurl"] = location; -- GitLab From cc98d2f034a5109a05b40bd88dfa8dd6b6f7d275 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 14:51:02 +0200 Subject: [PATCH 462/521] Updated comment for ticket EXT-4772(No new IM notification when in tabbed IM mode) --HG-- branch : product-engine --- indra/newview/llimfloater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 4a18c8640f4..36f7304074d 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -515,7 +515,7 @@ BOOL LLIMFloater::getVisible() if(isChatMultiTab()) { LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance(); - // Tabbed IM window is "visible" when we minimize it. + // getVisible() returns TRUE when Tabbed IM window is minimized. return !im_container->isMinimized() && im_container->getVisible(); } else -- GitLab From 8c9c30116878eb5034531b44c87fd9309e36ec13 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 15:10:03 +0200 Subject: [PATCH 463/521] Fixed normal bug EXT-4873 - Homepage field in My Profile (edit) no longer appears --HG-- branch : product-engine --- indra/newview/llpanelavatar.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 48dd5513bdc..0423cf75fae 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -582,6 +582,9 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d { fillCommonData(avatar_data); + // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" + childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); + fillPartnerData(avatar_data); fillAccountStatus(avatar_data); @@ -635,9 +638,6 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) childSetValue("2nd_life_pic", avatar_data->image_id); childSetValue("real_world_pic", avatar_data->fl_image_id); childSetValue("homepage_edit", avatar_data->profile_url); - - // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" - childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); } void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data) -- GitLab From a9aa9f41188c78b4025bea7657ead279a2877fd5 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 15:21:08 +0200 Subject: [PATCH 464/521] Update for normal bug EXT-4873 - Homepage field in My Profile (edit) no longer appears --HG-- branch : product-engine --- indra/newview/llpanelavatar.cpp | 6 +++--- indra/newview/llpanelme.cpp | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 0423cf75fae..48dd5513bdc 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -582,9 +582,6 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d { fillCommonData(avatar_data); - // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" - childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); - fillPartnerData(avatar_data); fillAccountStatus(avatar_data); @@ -638,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) childSetValue("2nd_life_pic", avatar_data->image_id); childSetValue("real_world_pic", avatar_data->fl_image_id); childSetValue("homepage_edit", avatar_data->profile_url); + + // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" + childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); } void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data) diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index 0f0fb4b94ea..ea66ef7d2c1 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -198,6 +198,10 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d { fillCommonData(avatar_data); + // 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix EXT-4734 + // Show 'Home page' in Edit My Profile (EXT-4873) + childSetVisible("homepage_edit", true); + fillPartnerData(avatar_data); fillAccountStatus(avatar_data); -- GitLab From 6ebbc5edf6c95f68088577f82b2c1daf73b68205 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji <aarabadji@productengine.com> Date: Wed, 3 Feb 2010 16:15:34 +0200 Subject: [PATCH 465/521] =?UTF-8?q?fixed=20EXT-4764=20=E2=80=9CForbid=20co?= =?UTF-8?q?nnecting=20to=20different=20voice=20channels=20at=20once?= =?UTF-8?q?=E2=80=9D,=20removed=20redundant=20call=20status=20notification?= =?UTF-8?q?s:=20ringing,=20connected,=20hang=5Fup,=20unavailable,=20answer?= =?UTF-8?q?ing;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/llimview.cpp | 42 ---------------------------- indra/newview/llimview.h | 10 ------- indra/newview/llviewerfloaterreg.cpp | 1 - indra/newview/llvoicechannel.cpp | 18 ++++++++---- 4 files changed, 12 insertions(+), 59 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index db6b2041f8e..9a3a4c01257 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2985,48 +2985,6 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode } }; -LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload) -{ -} - -BOOL LLCallInfoDialog::postBuild() -{ - // init notification's lifetime - std::istringstream ss( getString("lifetime") ); - if (!(ss >> mLifetime)) - { - mLifetime = DEFAULT_LIFETIME; - } - return LLCallDialog::postBuild(); -} - -void LLCallInfoDialog::onOpen(const LLSD& key) -{ - if(key.has("msg")) - { - std::string msg = key["msg"]; - getChild<LLTextBox>("msg")->setValue(msg); - } - - mLifetimeTimer.start(); -} - -void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args) -{ - LLUIString message = LLTrans::getString(status_name); - message.setArgs(args); - - LLSD payload; - payload["msg"] = message; - LLFloater* inst = LLFloaterReg::findInstance("call_info"); - - // avoid recreate instance with the same message - if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue()) - { - LLFloaterReg::showInstance("call_info", payload); - } -} - LLHTTPRegistration<LLViewerChatterBoxSessionStartReply> gHTTPRegistrationMessageChatterboxsessionstartreply( "/message/ChatterBoxSessionStartReply"); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index b573490fa3c..1c7aaa3f1bc 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -530,16 +530,6 @@ class LLOutgoingCallDialog : public LLCallDialog void hideAllText(); }; -class LLCallInfoDialog : public LLCallDialog -{ -public: - LLCallInfoDialog(const LLSD& payload); - /*virtual*/ BOOL postBuild(); - /*virtual*/ void onOpen(const LLSD& key); - - static void show(const std::string& status_name, const LLSD& args); -}; - // Globals extern LLIMMgr *gIMMgr; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 658d1c9ddd4..29114c33c52 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -200,7 +200,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>); LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>); - LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>); LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>); LLFloaterPayUtil::registerFloater(); diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 9d49fb69d61..bb09a18cc31 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -389,13 +389,16 @@ void LLVoiceChannel::setState(EState state) switch(state) { case STATE_RINGING: - LLCallInfoDialog::show("ringing", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("ringing", mNotifyArgs); break; case STATE_CONNECTED: - LLCallInfoDialog::show("connected", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("connected", mNotifyArgs); break; case STATE_HUNG_UP: - LLCallInfoDialog::show("hang_up", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("hang_up", mNotifyArgs); break; default: break; @@ -635,7 +638,8 @@ void LLVoiceChannelGroup::setState(EState state) case STATE_RINGING: if ( !mIsRetrying ) { - LLCallInfoDialog::show("ringing", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("ringing", mNotifyArgs); } doSetState(state); @@ -701,7 +705,8 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status) //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749) if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()) { - LLCallInfoDialog::show("unavailable", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("unavailable", mNotifyArgs); } return; default: @@ -901,7 +906,8 @@ void LLVoiceChannelP2P::setState(EState state) // so provide a special purpose message here if (mReceivedCall && state == STATE_RINGING) { - LLCallInfoDialog::show("answering", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("answering", mNotifyArgs); doSetState(state); return; } -- GitLab From cb03e6f92a5d89056ef83e97fe436a165bb3ae78 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Wed, 3 Feb 2010 16:25:32 +0200 Subject: [PATCH 466/521] fixed EXT-4776 Make avatars in nearby chat inspectable --HG-- branch : product-engine --- indra/newview/llchathistory.cpp | 30 +++++++++++++++++++ .../default/xui/en/panel_chat_header.xml | 7 +++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 64226ac52b6..a351c52ce20 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -53,7 +53,9 @@ #include "llagent.h" #include "llnotificationsutil.h" #include "lltoastnotifypanel.h" +#include "lltooltip.h" #include "llviewerregion.h" +#include "llviewertexteditor.h" #include "llworld.h" #include "lluiconstants.h" @@ -111,6 +113,34 @@ class LLChatHistoryHeader: public LLPanel return LLPanel::handleMouseUp(x,y,mask); } + //*TODO remake it using mouse enter/leave and static LLHandle<LLIconCtrl> to add/remove as a child + BOOL handleToolTip(S32 x, S32 y, MASK mask) + { + LLViewerTextEditor* name = getChild<LLViewerTextEditor>("user_name"); + if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && SYSTEM_FROM != mFrom) + { + + // Spawn at right side of the name textbox. + LLRect sticky_rect = name->calcScreenRect(); + S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3); + + LLToolTip::Params params; + params.background_visible(false); + params.click_callback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, 0, 0, 0)); + params.delay_time(0.0f); // spawn instantly on hover + params.image(LLUI::getUIImage("Info_Small")); + params.message(""); + params.padding(0); + params.pos(LLCoordGL(icon_x, sticky_rect.mTop - 2)); + params.sticky_rect(sticky_rect); + + LLToolTipMgr::getInstance()->show(params); + return TRUE; + } + + return LLPanel::handleToolTip(x, y, mask); + } + void onObjectIconContextMenuItemClicked(const LLSD& userdata) { std::string level = userdata.asString(); diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 39c4923f122..89d632c4c6d 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -21,19 +21,20 @@ width="18" /> <text_editor allow_scroll="false" - v_pad = "0" + v_pad = "7" read_only = "true" follows="left|right" font.style="BOLD" - height="12" + height="24" layout="topleft" left_pad="5" right="-120" name="user_name" text_color="white" bg_readonly_color="black" - top="8" + top="0" use_ellipses="true" + valign="bottom" value="Ericag Vader" /> <text font="SansSerifSmall" -- GitLab From 11f732bbbe910c2a63efaeb9044d206142d69e2f Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Wed, 3 Feb 2010 16:37:32 +0200 Subject: [PATCH 467/521] No ticket. Added comments regarding EXT-4758 and LLVoiceClient::voiceWorking() in general to clear things up a bit. --HG-- branch : product-engine --- indra/newview/llvoiceclient.cpp | 2 ++ indra/newview/llvoiceclient.h | 1 + 2 files changed, 3 insertions(+) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 7c6ba33553e..431e9625c48 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -5979,8 +5979,10 @@ bool LLVoiceClient::voiceEnabled() return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice"); } +//AD *TODO: investigate possible merge of voiceWorking() and voiceEnabled() into one non-static method bool LLVoiceClient::voiceWorking() { + //Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758) return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated); } diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 8f668dff196..a96cf18e276 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -192,6 +192,7 @@ static void updatePosition(void); void setVoiceEnabled(bool enabled); static bool voiceEnabled(); // Checks is voice working judging from mState + // Returns true if vivox has successfully logged in and is not in error state bool voiceWorking(); void setUsePTT(bool usePTT); void setPTTIsToggle(bool PTTIsToggle); -- GitLab From 57234d2744cd55a513a885a0b5e78e0b33ceebbf Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Wed, 3 Feb 2010 16:42:06 +0200 Subject: [PATCH 468/521] fix CRASH in roles tab in group info panel. no ticket... --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_group_roles.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index f19057cae38..25a0213bdea 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -493,6 +493,10 @@ things in this group. There's a broad variety of Abilities. tool_tip="For details of each allowed ability see the abilities tab" top_pad="0" width="300"> + <scroll_list.columns + label="" + name="icon" + width="2" /> <scroll_list.columns label="" name="checkbox" -- GitLab From 5bcf9661c5d9724191030896d4db61c57146a062 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Wed, 3 Feb 2010 16:48:15 +0200 Subject: [PATCH 469/521] Fixed normal bug EXT-4796 (Linux only: Call Group button blinks while Group Chat). - Removed updateCallButton() call from draw() and added it to LLIMFloater::sessionInitReplyReceived() to enable "Call" button when session is initialized. --HG-- branch : product-engine --- indra/newview/llimfloater.cpp | 6 ++++++ indra/newview/llpanelimcontrolpanel.cpp | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 36f7304074d..1eac90371d8 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -572,6 +572,12 @@ void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id) setKey(im_session_id); mControlPanel->setSessionId(im_session_id); } + + // updating "Call" button from group control panel here to enable it without placing into draw() (EXT-4796) + if(gAgent.isInGroup(im_session_id)) + { + mControlPanel->updateCallButton(); + } //*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB) diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index ff1e43b5268..d491583b564 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -280,8 +280,6 @@ void LLPanelGroupControlPanel::draw() // Need to resort the participant list if it's in sort by recent speaker order. if (mParticipantList) mParticipantList->updateRecentSpeakersOrder(); - //* TODO: find better way to properly enable call button for group and remove this call from draw() - updateCallButton(); LLPanelChatControlPanel::draw(); } -- GitLab From 5ec6cc4fe1ff4c042b31285e62683eb3f4e9c73d Mon Sep 17 00:00:00 2001 From: Denis Serdjuk <dserduk@productengine.com> Date: Wed, 3 Feb 2010 16:52:29 +0200 Subject: [PATCH 470/521] fixed critical Bug EXT-4831 [NUX] Parcel property icons are off by default Default value of 'NavBarShowParcelProperties' has been changed --HG-- branch : product-engine --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 62197406b65..793d7b62071 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7802,7 +7802,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>ShowCrosshairs</key> <map> -- GitLab From 906ee0cc6348fc3cce70f971f3009924550c24be Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Wed, 3 Feb 2010 16:57:24 +0200 Subject: [PATCH 471/521] fix for reopened EXT-4578 Noninteractive voice notifications should have close affordance --HG-- branch : product-engine --- indra/newview/llimview.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 9a3a4c01257..0c64c2b0329 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1709,6 +1709,8 @@ BOOL LLOutgoingCallDialog::postBuild() childSetAction("Cancel", onCancel, this); + setCanDrag(FALSE); + return success; } @@ -1808,6 +1810,8 @@ BOOL LLIncomingCallDialog::postBuild() mLifetimeTimer.stop(); } + setCanDrag(FALSE); + return TRUE; } -- GitLab From cabf4f5d58410e9c1fb8c06b0f40900119d37fa7 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Wed, 3 Feb 2010 17:06:57 +0200 Subject: [PATCH 472/521] Fixed critical bug EXT-4836 ([NUX] Add text to empty Friends tab in People Panel) - added an appropriate message into My Friends tab when avatar has no friends. - "global search" & "try the Map" are made as url to appropriate floaters --HG-- branch : product-engine --- indra/newview/llpanelpeople.cpp | 5 +++++ indra/newview/skins/default/xui/en/panel_people.xml | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index fb6f36d4da6..423ee61e25f 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -667,6 +667,11 @@ void LLPanelPeople::updateFriendList() lldebugs << "Friends Cards were not found" << llendl; } + // show special help text for just created account to help found friends. EXT-4836 + static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg"); + no_friends_text->setVisible(all_friendsp.size() == 0); + + LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin(); for (; buddy_it != all_buddies.end(); ++buddy_it) { diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 9b83e0c68eb..3b5add33a88 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -160,6 +160,17 @@ background_visible="true" width="313" /> </accordion_tab> </accordion> + <text + follows="all" + height="450" + left="10" + name="no_friends_msg" + top="10" + width="293" + wrap="true"> + To add friends try [secondlife:///app/search/people global search] or click on a user to add them as a friend. +If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map]. + </text> <panel follows="left|right|bottom" height="30" -- GitLab From 3689b28bf7066a750d24dbb34a809a6d2fa953ed Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Wed, 3 Feb 2010 17:14:04 +0200 Subject: [PATCH 473/521] merge --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 8bd0e520c35..72a52ba13b4 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1714,6 +1714,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, for (std::vector<LLUUID>::iterator it = member_ids.begin(); it != member_ids.end(); ++it) { + LLUUID& ejected_member_id = (*it); + // Can't use 'eject' to leave a group. if ((*it) == gAgent.getID()) continue; @@ -1734,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } msg->nextBlock("EjectData"); - msg->addUUID("EjecteeID",(*it)); + msg->addUUID("EjecteeID",ejected_member_id); if (msg->isSendFull()) { @@ -1746,13 +1748,15 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin(); rit != (*mit).second->roleEnd(); ++rit) { - if ((*rit).first.notNull()) + if ((*rit).first.notNull() && (*rit).second!=0) { - (*rit).second->removeMember(*it); + (*rit).second->removeMember(ejected_member_id); } } - delete (*mit).second; + group_datap->mMembers.erase(*it); + + delete (*mit).second; } } -- GitLab From 005ec1479021e698714dcdc4bab189af6fcf5ff4 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Wed, 3 Feb 2010 17:18:59 +0200 Subject: [PATCH 474/521] implemented EXT-4889 Please add Pay button to IM window --HG-- branch : product-engine --- .../default/xui/en/panel_im_control_panel.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 9279d1e686a..3fd75d57555 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -112,6 +112,23 @@ name="share_btn" width="100" /> </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="100" + name="share_btn_panel" + user_resize="false"> + <button + auto_resize="true" + follows="left|top|right" + height="23" + label="Pay" + name="pay_btn" + width="100" /> + </layout_panel> <layout_panel auto_resize="false" follows="top|left|right" -- GitLab From f7594c713d93f397440c4af2f566a33f1b6af099 Mon Sep 17 00:00:00 2001 From: Igor Borovkov <iborovkov@productengine.com> Date: Wed, 3 Feb 2010 17:42:23 +0200 Subject: [PATCH 475/521] fixed EXT-4737 Nearby chat edit field doesn't get focus after pasting --HG-- branch : product-engine --- indra/newview/llbottomtray.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index a2d594cfa21..0102e9488ea 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -474,6 +474,7 @@ void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata) else if (item == "paste") { edit_box->paste(); + edit_box->setFocus(TRUE); } else if (item == "delete") { -- GitLab From 594b1ac679a502f92db477e3f09441e361f72c93 Mon Sep 17 00:00:00 2001 From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com> Date: Wed, 3 Feb 2010 11:42:03 -0500 Subject: [PATCH 476/521] EXT-4868: Callback was getting triggered at shutdown, leading to crash. Now test isExiting() first. -Reviewed by vir --- indra/newview/llagentwearables.cpp | 2 +- indra/newview/llappearancemgr.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index b0ff3a56261..3249d0b31f4 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -2300,7 +2300,7 @@ class LLLibraryOutfitsCopyDone: public LLInventoryCallback virtual ~LLLibraryOutfitsCopyDone() { - if (mLibraryOutfitsFetcher) + if (!!LLApp::isExiting() && mLibraryOutfitsFetcher) { gInventory.addObserver(mLibraryOutfitsFetcher); mLibraryOutfitsFetcher->done(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 5088c651222..fa1bfdb5ab8 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -279,7 +279,10 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback virtual ~LLUpdateAppearanceOnDestroy() { - LLAppearanceManager::instance().updateAppearanceFromCOF(); + if (!!LLApp::isExiting()) + { + LLAppearanceManager::instance().updateAppearanceFromCOF(); + } } /* virtual */ void fire(const LLUUID& inv_item) -- GitLab From 677f51378e1afc338e92770e56905fe0ff184bc2 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Wed, 3 Feb 2010 19:11:44 +0200 Subject: [PATCH 477/521] Fixed normal bug EXT-2124 - [BSI] New notifications of group chat messages do not identify the destination group chat of message --HG-- branch : product-engine --- indra/newview/lltoastimpanel.cpp | 89 +++++++++++++------ indra/newview/lltoastimpanel.h | 3 + .../default/xui/en/panel_instant_message.xml | 11 +++ 3 files changed, 78 insertions(+), 25 deletions(-) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index a436dc05460..7ae24042036 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -37,6 +37,7 @@ #include "llfloaterreg.h" #include "llgroupactions.h" #include "llgroupiconctrl.h" +#include "llimview.h" #include "llnotifications.h" #include "llinstantmessage.h" #include "lltooltip.h" @@ -52,9 +53,9 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); - LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); mGroupIcon = getChild<LLGroupIconCtrl>("group_icon"); mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAdhocIcon = getChild<LLAvatarIconCtrl>("adhoc_icon"); mAvatarName = getChild<LLTextBox>("user_name"); mTime = getChild<LLTextBox>("time_box"); mMessage = getChild<LLTextBox>("message"); @@ -90,27 +91,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mAvatarID = p.avatar_id; mNotification = p.notification; - mAvatarIcon->setVisible(FALSE); - mGroupIcon->setVisible(FALSE); - sys_msg_icon->setVisible(FALSE); - - if(p.from == SYSTEM_FROM) - { - sys_msg_icon->setVisible(TRUE); - } - else - { - if(LLGroupActions::isInGroup(mSessionID)) - { - mGroupIcon->setVisible(TRUE); - mGroupIcon->setValue(p.session_id); - } - else - { - mAvatarIcon->setVisible(TRUE); - mAvatarIcon->setValue(p.avatar_id); - } - } + initIcon(); S32 maxLinesCount; std::istringstream ss( getString("message_max_lines_count") ); @@ -162,13 +143,27 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) void LLToastIMPanel::showInspector() { - if(LLGroupActions::isInGroup(mSessionID)) + LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID); + if(!im_session) { - LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); + llwarns << "Invalid IM session" << llendl; + return; } - else + + switch(im_session->mSessionType) { + case LLIMModel::LLIMSession::P2P_SESSION: LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); + break; + case LLIMModel::LLIMSession::GROUP_SESSION: + LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); + break; + case LLIMModel::LLIMSession::ADHOC_SESSION: + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", im_session->mOtherParticipantID)); + break; + default: + llwarns << "Unknown IM session type" << llendl; + break; } } @@ -217,4 +212,48 @@ void LLToastIMPanel::spawnGroupIconToolTip() LLToolTipMgr::getInstance()->show(params); } +void LLToastIMPanel::initIcon() +{ + LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); + + mAvatarIcon->setVisible(FALSE); + mGroupIcon->setVisible(FALSE); + sys_msg_icon->setVisible(FALSE); + mAdhocIcon->setVisible(FALSE); + + if(mAvatarName->getValue().asString() == SYSTEM_FROM) + { + sys_msg_icon->setVisible(TRUE); + } + else + { + LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID); + if(!im_session) + { + llwarns << "Invalid IM session" << llendl; + return; + } + + switch(im_session->mSessionType) + { + case LLIMModel::LLIMSession::P2P_SESSION: + mAvatarIcon->setVisible(TRUE); + mAvatarIcon->setValue(mAvatarID); + break; + case LLIMModel::LLIMSession::GROUP_SESSION: + mGroupIcon->setVisible(TRUE); + mGroupIcon->setValue(mSessionID); + break; + case LLIMModel::LLIMSession::ADHOC_SESSION: + mAdhocIcon->setVisible(TRUE); + mAdhocIcon->setValue(im_session->mOtherParticipantID); + mAdhocIcon->setToolTip(im_session->mName); + break; + default: + llwarns << "Unknown IM session type" << llendl; + break; + } + } +} + // EOF diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 444c0af1447..cf4ad806377 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -66,6 +66,8 @@ class LLToastIMPanel: public LLToastPanel void spawnNameToolTip(); void spawnGroupIconToolTip(); + void initIcon(); + static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; @@ -73,6 +75,7 @@ class LLToastIMPanel: public LLToastPanel LLUUID mAvatarID; LLAvatarIconCtrl* mAvatarIcon; LLGroupIconCtrl* mGroupIcon; + LLAvatarIconCtrl* mAdhocIcon; LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 5a1bc32db0e..a0ad38cf76e 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -45,6 +45,17 @@ name="group_icon" top="3" width="18" /> + <avatar_icon + color="Green" + follows="right" + height="18" + image_name="Generic_Person" + layout="topleft" + left="3" + mouse_opaque="false" + name="adhoc_icon" + top="3" + width="18" /> <!--<icon follows="right" height="20" -- GitLab From 7e1911baa23c2c7491c5089015d8f9b30df5ce01 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Wed, 3 Feb 2010 19:38:12 +0200 Subject: [PATCH 478/521] Fixed normal bug EXT-4229 ("This object costs L$ XXX" truncates price) --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_buy_currency.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 703a02d9952..961bd6b5e43 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -178,8 +178,8 @@ follows="top|left" height="16" halign="right" - left="150" - width="170" + left="140" + width="180" layout="topleft" name="buy_action"> [NAME] L$ [PRICE] -- GitLab From 8c1618ca5ae81eec0a5fa6229e89cd0f1a072a27 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Wed, 3 Feb 2010 19:38:12 +0200 Subject: [PATCH 479/521] Fixed major bug EXT-4876 (Switch from slurl.com to maps.secondlife.com) --HG-- branch : product-engine --- indra/llui/llurlentry.cpp | 2 +- indra/newview/llslurl.cpp | 12 ++++++++++-- indra/newview/llslurl.h | 1 + indra/newview/llviewermessage.cpp | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index b20de914a08..92b7816bddb 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -232,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const LLUrlEntrySLURL::LLUrlEntrySLURL() { // see http://slurl.com/about.php for details on the SLURL format - mPattern = boost::regex("http://slurl.com/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", + mPattern = boost::regex("http://(maps.secondlife.com|slurl.com)/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_slurl.xml"; mTooltip = LLTrans::getString("TooltipSLURL"); diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 37e268ad343..3343ee88bd4 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -39,7 +39,8 @@ const std::string LLSLURL::PREFIX_SL_HELP = "secondlife://app."; const std::string LLSLURL::PREFIX_SL = "sl://"; const std::string LLSLURL::PREFIX_SECONDLIFE = "secondlife://"; -const std::string LLSLURL::PREFIX_SLURL = "http://slurl.com/secondlife/"; +const std::string LLSLURL::PREFIX_SLURL_OLD = "http://slurl.com/secondlife/"; +const std::string LLSLURL::PREFIX_SLURL = "http://maps.secondlife.com/secondlife/"; const std::string LLSLURL::APP_TOKEN = "app/"; @@ -63,6 +64,11 @@ std::string LLSLURL::stripProtocol(const std::string& url) { stripped.erase(0, PREFIX_SLURL.length()); } + else if (matchPrefix(stripped, PREFIX_SLURL_OLD)) + { + stripped.erase(0, PREFIX_SLURL_OLD.length()); + } + return stripped; } @@ -74,6 +80,7 @@ bool LLSLURL::isSLURL(const std::string& url) if (matchPrefix(url, PREFIX_SL)) return true; if (matchPrefix(url, PREFIX_SECONDLIFE)) return true; if (matchPrefix(url, PREFIX_SLURL)) return true; + if (matchPrefix(url, PREFIX_SLURL_OLD)) return true; return false; } @@ -83,7 +90,8 @@ bool LLSLURL::isSLURLCommand(const std::string& url) { if (matchPrefix(url, PREFIX_SL + APP_TOKEN) || matchPrefix(url, PREFIX_SECONDLIFE + "/" + APP_TOKEN) || - matchPrefix(url, PREFIX_SLURL + APP_TOKEN) ) + matchPrefix(url, PREFIX_SLURL + APP_TOKEN) || + matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) ) { return true; } diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index 05b0143e72d..21b32ce4093 100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h @@ -50,6 +50,7 @@ class LLSLURL static const std::string PREFIX_SL; static const std::string PREFIX_SECONDLIFE; static const std::string PREFIX_SLURL; + static const std::string PREFIX_SLURL_OLD; static const std::string APP_TOKEN; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index e525561b7df..143d95d27e6 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1478,6 +1478,11 @@ void inventory_offer_handler(LLOfferInfo* info) // Strip any SLURL from the message display. (DEV-2754) std::string msg = info->mDesc; int indx = msg.find(" ( http://slurl.com/secondlife/"); + if(indx == std::string::npos) + { + // try to find new slurl host + indx = msg.find(" ( http://maps.secondlife.com/secondlife/"); + } if(indx >= 0) { LLStringUtil::truncate(msg, indx); -- GitLab From fb4adc1898f45ffc8311706a9b3430d5d0df1893 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi <emutavchi@productengine.com> Date: Wed, 3 Feb 2010 19:38:12 +0200 Subject: [PATCH 480/521] Fixed normal bug EXT-4866 (There is no overflow menu for favorites bar) --HG-- branch : product-engine --- indra/newview/llfavoritesbar.cpp | 7 ++++- indra/newview/llfavoritesbar.h | 3 +++ .../default/xui/en/panel_navigation_bar.xml | 26 ++++++++++--------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index f5bb7774191..a5b62439f44 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -370,7 +370,8 @@ struct LLFavoritesSort LLFavoritesBarCtrl::Params::Params() : image_drag_indication("image_drag_indication"), - chevron_button("chevron_button") + chevron_button("chevron_button"), + label("label") { } @@ -401,6 +402,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p) chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this)); mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params); addChild(mChevronButton); + + LLTextBox::Params label_param(p.label); + mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param); + addChild(mBarLabel); } LLFavoritesBarCtrl::~LLFavoritesBarCtrl() diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 40dd551eefc..2c6d8d15807 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -35,6 +35,7 @@ #include "llbutton.h" #include "lluictrl.h" +#include "lltextbox.h" #include "llinventoryobserver.h" #include "llinventorymodel.h" @@ -46,6 +47,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver { Optional<LLUIImage*> image_drag_indication; Optional<LLButton::Params> chevron_button; + Optional<LLTextBox::Params> label; Params(); }; @@ -139,6 +141,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver LLUICtrl* mLandingTab; LLUICtrl* mLastTab; LLButton* mChevronButton; + LLTextBox* mBarLabel; LLUUID mDragItemId; BOOL mStartDrag; diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 02eddc92122..b2ed51abf37 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -141,12 +141,25 @@ font="SansSerifSmall" height="15" layout="topleft" - left="102" + left="0" name="favorite" image_drag_indication="Accordion_ArrowOpened_Off" bottom="55" tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" width="590"> + <label + follows="left|top" + font.style="BOLD" + height="15" + layout="topleft" + left="10" + name="favorites_bar_label" + text_color="LtGray" + tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" + top="12" + width="102"> + Favorites Bar + </label> <chevron_button name=">>" image_unselected="TabIcon_Close_Off" image_selected="TabIcon_Close_Off" @@ -157,15 +170,4 @@ top="15" height="15"/> </favorites_bar> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - top_pad="-12" - name="favorites_bar_label" - text_color="LtGray" - tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" - width="102">Favorites Bar</text> </panel> -- GitLab From 18af41157d64962fff10b0697c632a5d2a38539e Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 17:54:59 +0000 Subject: [PATCH 481/521] CID-342 UNINIT_CTOR --HG-- branch : product-engine --- indra/llui/llnotifications.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index d55e0f40432..8d993b71d76 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -371,7 +371,7 @@ friend class LLNotifications; // this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT // for anything real! - LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {} + LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mPriority(NOTIFICATION_PRIORITY_UNSPECIFIED), mTemporaryResponder(false) {} void cancel(); -- GitLab From 22ccfab764ed5cdeacffa0530b6fbc30f06e0992 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 17:57:47 +0000 Subject: [PATCH 482/521] CID-295 Checker: UNINIT_CTOR Function: LLGLSLShader::LLGLSLShader() File: /indra/llrender/llglslshader.cpp --HG-- branch : product-engine --- indra/llrender/llglslshader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 830617063b9..ca92cb6580f 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -70,7 +70,7 @@ hasGamma(false), hasLighting(false), calculatesAtmospherics(false) // LLGLSL Shader implementation //=============================== LLGLSLShader::LLGLSLShader() -: mProgramObject(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT) + : mProgramObject(0), mActiveTextureChannels(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT), mUniformsDirty(FALSE) { } -- GitLab From 92fc25b83058133d43170364608560cc15249cc9 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:00:50 +0000 Subject: [PATCH 483/521] CID-294 Checker: UNINIT_CTOR Function: LLPostProcess::LLPostProcess() File: /indra/llrender/llpostprocess.cpp --HG-- branch : product-engine --- indra/llrender/llpostprocess.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index 7f4be6a8662..bc7f30cdef6 100644 --- a/indra/llrender/llpostprocess.cpp +++ b/indra/llrender/llpostprocess.cpp @@ -59,6 +59,8 @@ LLPostProcess::LLPostProcess(void) : mSceneRenderTexture = NULL ; mNoiseTexture = NULL ; mTempBloomTexture = NULL ; + + noiseTextureScale = 1.0f; /* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender. std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME)); -- GitLab From 8b9492a68567fe5b7949f42330514730848331c7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:18:13 +0000 Subject: [PATCH 484/521] CID-293 Defect Checker: UNINIT_CTOR Function: LLGLManager::LLGLManager() File: /indra/llrender/llgl.cpp --HG-- branch : product-engine --- indra/llrender/llgl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 187a9a984e0..a3f7a946ecd 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -332,6 +332,8 @@ LLGLManager::LLGLManager() : mHasFragmentShader(FALSE), mHasOcclusionQuery(FALSE), mHasPointParameters(FALSE), + mHasDrawBuffers(FALSE), + mHasTextureRectangle(FALSE), mHasAnisotropic(FALSE), mHasARBEnvCombine(FALSE), @@ -671,7 +673,7 @@ void LLGLManager::initExtensions() llinfos << "initExtensions() checking shell variables to adjust features..." << llendl; // Our extension support for the Linux Client is very young with some // potential driver gotchas, so offer a semi-secret way to turn it off. - if (getenv("LL_GL_NOEXT")) /* Flawfinder: ignore */ + if (getenv("LL_GL_NOEXT")) { //mHasMultitexture = FALSE; // NEEDED! mHasARBEnvCombine = FALSE; -- GitLab From 221954f04203968e65325de69c73c961b5e60c56 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Wed, 3 Feb 2010 13:22:08 -0500 Subject: [PATCH 485/521] For EXT-4173: New accounts sometimes appear half-naked. Removed duplicate code block. --- indra/newview/llstartup.cpp | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 4d814169cb0..f6656355478 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1849,22 +1849,6 @@ bool idle_startup() LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } -#if 0 // WHY 2x? BAP - // We now have an inventory skeleton, so if this is a user's first - // login, we can start setting up their clothing and avatar - // appearance. This helps to avoid the generic "Ruth" avatar in - // the orientation island tutorial experience. JC - if (gAgent.isFirstLogin() - && !sInitialOutfit.empty() // registration set up an outfit - && !sInitialOutfitGender.empty() // and a gender - && gAgent.getAvatarObject() // can't wear clothes without object - && !gAgent.isGenderChosen() ) // nothing already loading - { - // Start loading the wearables, textures, gestures - LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); - } -#endif - // wait precache-delay and for agent's avatar or a lot longer. if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) || (timeout_frac > 3.f)) -- GitLab From 011673de5a73eefbd59e29056851e160338be714 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:22:25 +0000 Subject: [PATCH 486/521] CID-419 Checker: RESOURCE_LEAK File: /indra/llui/llstyle.h --HG-- branch : product-engine --- indra/llui/lltexteditor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index e76fee9f17f..a4c802bd26a 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2574,7 +2574,7 @@ void LLTextEditor::updateLinkSegments() // then update the link's HREF to be the same as the label text. // This lets users edit Urls in-place. LLStyleConstSP style = segment->getStyle(); - LLStyle* new_style = new LLStyle(*style); + LLStyleSP new_style(new LLStyle(*style)); LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart()); if (LLUrlRegistry::instance().hasUrl(url_label)) { -- GitLab From 36be134aee952cd35bb1ecbf6d2d2c2490a3fe5b Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:38:52 +0000 Subject: [PATCH 487/521] CID-292 Checker: UNINIT_CTOR Function: LLRender::LLRender() File: /indra/llrender/llrender.cpp --- indra/llrender/llrender.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index f97d81126ec..595b8577ffe 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -733,8 +733,11 @@ void LLTexUnit::debugTextureUnit(void) LLRender::LLRender() -: mDirty(false), mCount(0), mMode(LLRender::TRIANGLES), - mMaxAnisotropy(0.f) + : mDirty(false), + mCount(0), + mMode(LLRender::TRIANGLES), + mCurrTextureUnitIndex(0), + mMaxAnisotropy(0.f) { mBuffer = new LLVertexBuffer(immediate_mask, 0); mBuffer->allocateBuffer(4096, 0, TRUE); -- GitLab From 48a3e84937607055606baee0dd2eb69ba8bbf0ce Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:52:20 +0000 Subject: [PATCH 488/521] CID-291 Checker: UNINIT_CTOR Function: LLVertexBuffer::LLVertexBuffer(unsigned int, int) File: /indra/llrender/llvertexbuffer.cpp also added some sanity-checking around this. --- indra/llrender/llvertexbuffer.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index ecfe845b342..bf5eda21ebd 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -215,14 +215,18 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const { + llassert(mRequestedNumVerts >= 0); + if (start >= (U32) mRequestedNumVerts || - end >= (U32) mRequestedNumVerts) + end >= (U32) mRequestedNumVerts) { llerrs << "Bad vertex buffer draw range: [" << start << ", " << end << "]" << llendl; } + llassert(mRequestedNumIndices >= 0); + if (indices_offset >= (U32) mRequestedNumIndices || - indices_offset + count > (U32) mRequestedNumIndices) + indices_offset + count > (U32) mRequestedNumIndices) { llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl; } @@ -251,8 +255,9 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const { + llassert(mRequestedNumIndices >= 0); if (indices_offset >= (U32) mRequestedNumIndices || - indices_offset + count > (U32) mRequestedNumIndices) + indices_offset + count > (U32) mRequestedNumIndices) { llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl; } @@ -281,8 +286,9 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const { + llassert(mRequestedNumVerts >= 0); if (first >= (U32) mRequestedNumVerts || - first + count > (U32) mRequestedNumVerts) + first + count > (U32) mRequestedNumVerts) { llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl; } @@ -354,7 +360,14 @@ void LLVertexBuffer::clientCopy(F64 max_time) LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : LLRefCount(), - mNumVerts(0), mNumIndices(0), mUsage(usage), mGLBuffer(0), mGLIndices(0), + + mNumVerts(0), + mNumIndices(0), + mRequestedNumVerts(-1), + mRequestedNumIndices(-1), + mUsage(usage), + mGLBuffer(0), + mGLIndices(0), mMappedData(NULL), mMappedIndexData(NULL), mLocked(FALSE), mFinal(FALSE), @@ -600,6 +613,8 @@ void LLVertexBuffer::updateNumVerts(S32 nverts) { LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_VERTS); + llassert(nverts >= 0); + if (nverts >= 65535) { llwarns << "Vertex buffer overflow!" << llendl; @@ -628,6 +643,9 @@ void LLVertexBuffer::updateNumVerts(S32 nverts) void LLVertexBuffer::updateNumIndices(S32 nindices) { LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_INDICES); + + llassert(nindices >= 0); + mRequestedNumIndices = nindices; if (!mDynamicSize) { @@ -668,6 +686,9 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create) void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices) { + llassert(newnverts >= 0); + llassert(newnindices >= 0); + mRequestedNumVerts = newnverts; mRequestedNumIndices = newnindices; -- GitLab From 3495954cd63977e7434e74addae15466955b1f89 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:54:18 +0000 Subject: [PATCH 489/521] CID-290 Checker: UNINIT_CTOR Function: LLCubeMap::LLCubeMap() File: /indra/llrender/llcubemap.cpp --- indra/llrender/llcubemap.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp index 08a96b4e319..036714e5cb8 100644 --- a/indra/llrender/llcubemap.cpp +++ b/indra/llrender/llcubemap.cpp @@ -63,6 +63,12 @@ LLCubeMap::LLCubeMap() mTextureCoordStage(0), mMatrixStage(0) { + mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB; + mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB; + mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB; + mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB; + mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB; + mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB; } LLCubeMap::~LLCubeMap() @@ -75,13 +81,6 @@ void LLCubeMap::initGL() if (gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps) { - mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB; - mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB; - mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB; - mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB; - mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB; - mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB; - // Not initialized, do stuff. if (mImages[0].isNull()) { -- GitLab From df0d43054c504a3bd7b18298b1d339e95965a9fb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 18:56:37 +0000 Subject: [PATCH 490/521] CID-289 Checker: UNINIT_CTOR Function: LLCamera::LLCamera() File: /indra/llmath/llcamera.cpp --- indra/llmath/llcamera.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 21ea4b2e7c5..89c32be8cd0 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -45,7 +45,8 @@ LLCamera::LLCamera() : mNearPlane(DEFAULT_NEAR_PLANE), mFarPlane(DEFAULT_FAR_PLANE), mFixedDistance(-1.f), - mPlaneCount(6) + mPlaneCount(6), + mFrustumCornerDist(0.f) { calculateFrustumPlanes(); } @@ -648,7 +649,6 @@ void LLCamera::ignoreAgentFrustumPlane(S32 idx) void LLCamera::calcAgentFrustumPlanes(LLVector3* frust) { - for (int i = 0; i < 8; i++) { mAgentFrustum[i] = frust[i]; -- GitLab From a4aca0ba1c3efc4ddb9e01a332d3a9c1f16e49d0 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 19:00:30 +0000 Subject: [PATCH 491/521] CID-288 Checker: UNINIT_CTOR Function: LLCamera::LLCamera(float, float, int, float, float) File: /indra/llmath/llcamera.cpp --- indra/llmath/llcamera.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 89c32be8cd0..487ed6451f4 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -56,7 +56,8 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p LLCoordFrame(), mViewHeightInPixels(view_height_in_pixels), mFixedDistance(-1.f), - mPlaneCount(6) + mPlaneCount(6), + mFrustumCornerDist(0.f) { mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO); mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE); -- GitLab From 9df8583ea8fd242e8f71710a62841d265d090d4c Mon Sep 17 00:00:00 2001 From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com> Date: Wed, 3 Feb 2010 14:01:36 -0500 Subject: [PATCH 492/521] Moss rocks! Thanks for noticeing the paste error that resulted in a double \'\!\' bool op. --- indra/newview/llagentwearables.cpp | 2 +- indra/newview/llappearancemgr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 3249d0b31f4..41f2ff29e60 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -2300,7 +2300,7 @@ class LLLibraryOutfitsCopyDone: public LLInventoryCallback virtual ~LLLibraryOutfitsCopyDone() { - if (!!LLApp::isExiting() && mLibraryOutfitsFetcher) + if (!LLApp::isExiting() && mLibraryOutfitsFetcher) { gInventory.addObserver(mLibraryOutfitsFetcher); mLibraryOutfitsFetcher->done(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index fa1bfdb5ab8..585d42f66d1 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -279,7 +279,7 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback virtual ~LLUpdateAppearanceOnDestroy() { - if (!!LLApp::isExiting()) + if (!LLApp::isExiting()) { LLAppearanceManager::instance().updateAppearanceFromCOF(); } -- GitLab From c0422e1c6c44c65c8844631430747d798be16879 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 19:06:06 +0000 Subject: [PATCH 493/521] CID-284 Checker: UNINIT_CTOR Function: MediaPluginWebKit::MediaPluginWebKit(void (*)(const char *, void **), void *) File: /indra/media_plugins/webkit/media_plugin_webkit.cpp --- indra/media_plugins/webkit/media_plugin_webkit.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 42d680ade61..3c24b4ed22b 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -608,6 +608,9 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_ mLastMouseX = 0; mLastMouseY = 0; mFirstFocus = true; + mBackgroundR = 0.0f; + mBackgroundG = 0.0f; + mBackgroundB = 0.0f; } MediaPluginWebKit::~MediaPluginWebKit() -- GitLab From 4020f13fc93426108c761f8519e2dc3af6772d7e Mon Sep 17 00:00:00 2001 From: Leyla Farazha <leyla@lindenlab.com> Date: Wed, 3 Feb 2010 11:08:53 -0800 Subject: [PATCH 494/521] EXT-4656 [crashhunters] Crash in LLFloaterAnimPreview::postBuild() reviewed by Richard --- indra/newview/llfloateranimpreview.cpp | 1 + .../skins/default/xui/en/floater_animation_preview.xml | 4 ++++ indra/newview/skins/default/xui/en/floater_test_widgets.xml | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 60f150bd969..3549e2b6bfe 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -117,6 +117,7 @@ std::string STATUS[] = "E_ST_NO_XLT_EASEOUT", "E_ST_NO_XLT_HAND", "E_ST_NO_XLT_EMOTE", +"E_ST_BAD_ROOT" }; //----------------------------------------------------------------------------- // LLFloaterAnimPreview() diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml index 4f4288b654d..9eb0af31f9a 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -147,6 +147,10 @@ Maximum animation length is [MAX_LENGTH] seconds. name="E_ST_NO_XLT_EMOTE"> Cannot read emote name. </floater.string> + <floater.string + name="E_ST_BAD_ROOT"> + Invalid ROOT joint. + </floater.string> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 447bd7f599b..8353dab24f5 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -254,7 +254,7 @@ name="first_column" label="Column A"/> <scroll_list.columns - dynamic_width="true" + width="-1" name="second_column" label="Column B"/> <row> -- GitLab From 66bc04339ccc0bf73005ae0cd1e7b04259c4944c Mon Sep 17 00:00:00 2001 From: Leyla Farazha <leyla@lindenlab.com> Date: Wed, 3 Feb 2010 11:13:17 -0800 Subject: [PATCH 495/521] accidental commit revert --- indra/newview/skins/default/xui/en/floater_test_widgets.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 8353dab24f5..447bd7f599b 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -254,7 +254,7 @@ name="first_column" label="Column A"/> <scroll_list.columns - width="-1" + dynamic_width="true" name="second_column" label="Column B"/> <row> -- GitLab From 917841120f8932af112896344c7f25be7bc32773 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Wed, 3 Feb 2010 21:20:37 +0200 Subject: [PATCH 496/521] Backed out changeset 83d2ec4d4a5e, a hack that forces you to fall when entering a parcel with no rights to fly in it. --HG-- branch : product-engine --- indra/newview/llviewerparcelmgr.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 7ec650629dd..a075a706e1e 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1597,14 +1597,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use instance->mTeleportInProgress = FALSE; instance->mTeleportFinishedSignal(gAgent.getPositionGlobal()); } - - // HACK: This makes agents drop from the sky if they enter a parcel - // which is set to no fly. - BOOL was_flying = gAgent.getFlying(); - if (was_flying && !parcel->getAllowFly()) - { - gAgent.setFlying(gAgent.canFly()); - } } } -- GitLab From 78553cce481e0f05485033ff9a64d53d13893d97 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 19:24:25 +0000 Subject: [PATCH 497/521] CID-283 Checker: UNINIT_CTOR Function: LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/llaudio/llaudiodecodemgr.cpp --- indra/llaudio/llaudiodecodemgr.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index 6bbaad9cefa..290206ee22b 100644 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp @@ -181,6 +181,8 @@ LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &uuid, const std::string & mFileHandle = LLLFSThread::nullHandle(); #endif // No default value for mVF, it's an ogg structure? + // Hey, let's zero it anyway, for predictability. + memset(&mVF, 0, sizeof(mVF)); } LLVorbisDecodeState::~LLVorbisDecodeState() -- GitLab From 5dbd37f50bbefe8552f910d5079b48cd3f648c5e Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine <ychebotarev@productengine.com> Date: Wed, 3 Feb 2010 21:28:58 +0200 Subject: [PATCH 498/521] a bit log for major Bug EXT-4778 - may help to find problem. --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 72a52ba13b4..4c1019a8820 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1708,6 +1708,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, bool start_message = true; LLMessageSystem* msg = gMessageSystem; + + LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); if (!group_datap) return; @@ -1715,6 +1717,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, it != member_ids.end(); ++it) { LLUUID& ejected_member_id = (*it); + + llwarns << "LLGroupMgr::sendGroupMemberEjects -- ejecting member" << ejected_member_id << llendl; // Can't use 'eject' to leave a group. if ((*it) == gAgent.getID()) continue; @@ -1751,11 +1755,14 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, if ((*rit).first.notNull() && (*rit).second!=0) { (*rit).second->removeMember(ejected_member_id); + + llwarns << "LLGroupMgr::sendGroupMemberEjects - removing member from role " << llendl; } } group_datap->mMembers.erase(*it); + llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl; delete (*mit).second; } } @@ -1764,6 +1771,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, { gAgent.sendReliableMessage(); } + + llwarns << "LLGroupMgr::sendGroupMemberEjects - done " << llendl; } void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) -- GitLab From a1c3d608199a888584ce8d2172905175fcbd1796 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Wed, 3 Feb 2010 21:48:30 +0200 Subject: [PATCH 499/521] No ticket. Removed unrelevant comment and added disabling call button if session doesn't exist in LLPanelChatControlPanel::updateCallButton(). --HG-- branch : product-engine --- indra/newview/llpanelimcontrolpanel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index d491583b564..cbd6f64a485 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -81,11 +81,15 @@ void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::E void LLPanelChatControlPanel::updateCallButton() { - // hide/show call button bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); - if (!session) return; + + if (!session) + { + childSetEnabled("call_btn", false); + return; + } bool session_initialized = session->mSessionInitialized; bool callback_enabled = session->mCallBackEnabled; -- GitLab From f117db5798062d3f0d389a07ca5a75bac0d5cf72 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:03:17 +0000 Subject: [PATCH 500/521] CID-281 Checker: UNINIT_CTOR Function: LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() File: /indra/llmessage/lltransfersourceasset.cpp --- indra/llmessage/lltransfersourceasset.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 7332f5c9540..8f36d516d7c 100644 --- a/indra/llmessage/lltransfersourceasset.cpp +++ b/indra/llmessage/lltransfersourceasset.cpp @@ -226,7 +226,10 @@ void LLTransferSourceAsset::responderCallback(LLVFS *vfs, const LLUUID& uuid, LL -LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() : LLTransferSourceParams(LLTST_ASSET) +LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() + : LLTransferSourceParams(LLTST_ASSET), + + mAssetType(LLAssetType::AT_NONE) { } -- GitLab From 428eb8555ee9bcd2476e3e5d61ee1cd844a0d621 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:12:31 +0000 Subject: [PATCH 501/521] CID-280 Checker: UNINIT_CTOR Function: LLTransferTargetParamsVFile::LLTransferTargetParamsVFile() File: /indra/llmessage/lltransfertargetvfile.cpp dead field. --- indra/llmessage/lltransfertargetvfile.h | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h index 8c2bc7e8bbe..cd18d8ce3f5 100644 --- a/indra/llmessage/lltransfertargetvfile.h +++ b/indra/llmessage/lltransfertargetvfile.h @@ -68,7 +68,6 @@ class LLTransferTargetParamsVFile : public LLTransferTargetParams LLTTVFCompleteCallback mCompleteCallback; void* mUserDatap; S32 mErrCode; - LLVFSThread::handle_t mHandle; }; -- GitLab From 4e73292e2ce7dcbce17e5edaa4ff10beeea01a51 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:14:57 +0000 Subject: [PATCH 502/521] CID-279 Checker: UNINIT_CTOR Function: LLTransferTarget::LLTransferTarget(e_transfer_target_type, const LLUUID &, e_transfer_source_type) File: /indra/llmessage/lltransfermanager.cpp --- indra/llmessage/lltransfermanager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index 0a71ad95f2b..d64b666edec 100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -1196,6 +1196,7 @@ LLTransferTarget::LLTransferTarget( mType(type), mSourceType(source_type), mID(transfer_id), + mChannelp(NULL), mGotInfo(FALSE), mSize(0), mLastPacketID(-1) -- GitLab From b52d2a2f1b0406becb80862686be7b6f2444006d Mon Sep 17 00:00:00 2001 From: Andrew Dyukov <adyukov@productengine.com> Date: Wed, 3 Feb 2010 22:16:18 +0200 Subject: [PATCH 503/521] Fixed normal bug EXT-4648 (Right segment of Speak button is disabled if nearby voice chat is disabled in estate). - Added methods for separate enabling of left and right parts of speak button and used them instead of simply enabling/disabling LLSpeakButton in bottomtray. - Made changes to reset() in LLCallFloater to show "no one near..." instead of "loading" in vcp for nearby chat in regions with disabled voice. --HG-- branch : product-engine --- indra/newview/llbottomtray.cpp | 13 ++++++++++--- indra/newview/llcallfloater.cpp | 19 +++++++++++++++---- indra/newview/llcallfloater.h | 2 +- indra/newview/llspeakbutton.cpp | 10 ++++++++++ indra/newview/llspeakbutton.h | 4 ++++ 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 0102e9488ea..4c8cec3d306 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -280,7 +280,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b break; } - mSpeakBtn->setEnabled(enable); + // We have to enable/disable right and left parts of speak button separately (EXT-4648) + mSpeakBtn->setSpeakBtnEnabled(enable); + // skipped to avoid button blinking + if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL) + { + mSpeakBtn->setFlyoutBtnEnabled(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()); + } } void LLBottomTray::onMouselookModeOut() @@ -410,9 +416,10 @@ BOOL LLBottomTray::postBuild() mSpeakPanel = getChild<LLPanel>("speak_panel"); mSpeakBtn = getChild<LLSpeakButton>("talk"); - // Speak button should be initially disabled because + // Both parts of speak button should be initially disabled because // it takes some time between logging in to world and connecting to voice channel. - mSpeakBtn->setEnabled(FALSE); + mSpeakBtn->setSpeakBtnEnabled(false); + mSpeakBtn->setFlyoutBtnEnabled(false); // Localization tool doesn't understand custom buttons like <talk_button> mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") ); diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index f62fd44bc06..8cb240c7c26 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -52,6 +52,7 @@ #include "lltransientfloatermgr.h" #include "llviewerwindow.h" #include "llvoicechannel.h" +#include "llviewerparcelmgr.h" static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids); void reshape_floater(LLCallFloater* floater, S32 delta_height); @@ -731,11 +732,11 @@ void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state) } else { - reset(); + reset(new_state); } } -void LLCallFloater::reset() +void LLCallFloater::reset(const LLVoiceChannel::EState& new_state) { // lets forget states from the previous session // for timers... @@ -748,8 +749,18 @@ void LLCallFloater::reset() mParticipants = NULL; mAvatarList->clear(); - // update floater to show Loading while waiting for data. - mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); + // "loading" is shown in parcel with disabled voice only when state is "ringing" + // to avoid showing it in nearby chat vcp all the time- "no_one_near" is now shown there (EXT-4648) + bool show_loading = LLVoiceChannel::STATE_RINGING == new_state; + if(!show_loading && !LLViewerParcelMgr::getInstance()->allowAgentVoice() && mVoiceType == VC_LOCAL_CHAT) + { + mAvatarList->setNoItemsCommentText(getString("no_one_near")); + } + else + { + // update floater to show Loading while waiting for data. + mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); + } mAvatarList->setVisible(TRUE); mNonAvatarCaller->setVisible(FALSE); diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 766191379ba..dac4390fa7e 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -220,7 +220,7 @@ class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipan * * Clears all data from the latest voice session. */ - void reset(); + void reset(const LLVoiceChannel::EState& new_state); private: speaker_state_map_t mSpeakerStateMap; diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index 8f2c877c7a8..c5c311ed33c 100644 --- a/indra/newview/llspeakbutton.cpp +++ b/indra/newview/llspeakbutton.cpp @@ -66,6 +66,16 @@ void LLSpeakButton::draw() mOutputMonitor->setIsMuted(!voiceenabled); LLUICtrl::draw(); } +void LLSpeakButton::setSpeakBtnEnabled(bool enabled) +{ + LLButton* speak_btn = getChild<LLButton>("speak_btn"); + speak_btn->setEnabled(enabled); +} +void LLSpeakButton::setFlyoutBtnEnabled(bool enabled) +{ + LLButton* show_btn = getChild<LLButton>("speak_flyout_btn"); + show_btn->setEnabled(enabled); +} LLSpeakButton::LLSpeakButton(const Params& p) : LLUICtrl(p) diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h index 6660b502407..85c97f1a2cb 100644 --- a/indra/newview/llspeakbutton.h +++ b/indra/newview/llspeakbutton.h @@ -61,6 +61,10 @@ class LLSpeakButton : public LLUICtrl /*virtual*/ ~LLSpeakButton(); /*virtual*/ void draw(); + + // methods for enabling/disabling right and left parts of speak button separately(EXT-4648) + void setSpeakBtnEnabled(bool enabled); + void setFlyoutBtnEnabled(bool enabled); // *HACK: Need to put tooltips in a translatable location, // the panel that contains this button. -- GitLab From eab2f01b19b3a2ce46b2d44935097747a3eefadb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:18:22 +0000 Subject: [PATCH 504/521] CID-278 Checker: UNINIT_CTOR Function: LLTransferTargetParamsFile::LLTransferTargetParamsFile() File: /indra/llmessage/lltransfertargetfile.h --- indra/llmessage/lltransfertargetfile.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h index 18b9b520628..92fb8f807c8 100644 --- a/indra/llmessage/lltransfertargetfile.h +++ b/indra/llmessage/lltransfertargetfile.h @@ -40,7 +40,12 @@ typedef void (*LLTTFCompleteCallback)(const LLTSCode status, void *user_data); class LLTransferTargetParamsFile : public LLTransferTargetParams { public: - LLTransferTargetParamsFile() : LLTransferTargetParams(LLTTT_FILE) {} + LLTransferTargetParamsFile() + : LLTransferTargetParams(LLTTT_FILE), + + mCompleteCallback(NULL), + mUserData(NULL) + {} void setFilename(const std::string& filename) { mFilename = filename; } void setCallback(LLTTFCompleteCallback cb, void *user_data) { mCompleteCallback = cb; mUserData = user_data; } -- GitLab From 2879692aa2696af80a1f12daaf88b886412dacb5 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:25:04 +0000 Subject: [PATCH 505/521] CID-277 Checker: UNINIT_CTOR Function: LLPacketBuffer::LLPacketBuffer(const LLHost &, const char *, int) File: /indra/llmessage/llpacketbuffer.cpp --- indra/llmessage/llpacketbuffer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp index 027d35cf89f..60ced66318f 100644 --- a/indra/llmessage/llpacketbuffer.cpp +++ b/indra/llmessage/llpacketbuffer.cpp @@ -44,6 +44,8 @@ LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 { if (size > NET_BUFFER_SIZE) { + mSize = 0; + mData[0] = 0; llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl; } else // we previously relied on llerrs being fatal to not get here... -- GitLab From 08b93d95ef9d21e39d633ada19a6cbad23c25b91 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:26:42 +0000 Subject: [PATCH 506/521] CID-277 Checker: UNINIT_CTOR Function: LLPacketBuffer::LLPacketBuffer(const LLHost &, const char *, int) File: /indra/llmessage/llpacketbuffer.cpp a fix I like better. --- indra/llmessage/llpacketbuffer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp index 60ced66318f..441e8ddd270 100644 --- a/indra/llmessage/llpacketbuffer.cpp +++ b/indra/llmessage/llpacketbuffer.cpp @@ -42,13 +42,14 @@ LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 size) : mHost(host) { + mSize = 0; + mData[0] = '!'; + if (size > NET_BUFFER_SIZE) { - mSize = 0; - mData[0] = 0; llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl; } - else // we previously relied on llerrs being fatal to not get here... + else { if (datap != NULL) { -- GitLab From 930035ebdc308960bdb1a51ae622dd06f93a7255 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:29:57 +0000 Subject: [PATCH 507/521] CID-273 Checker: UNINIT_CTOR Function: NamedTimerFactory::NamedTimerFactory() File: /indra/llcommon/llfasttimer_class.cpp --- indra/llcommon/llfasttimer_class.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index fae0a668732..6d8d81e114e 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -114,7 +114,11 @@ static timer_tree_dfs_iterator_t end_timer_tree() class NamedTimerFactory : public LLSingleton<NamedTimerFactory> { public: - NamedTimerFactory() + NamedTimerFactory() + : mActiveTimerRoot(NULL), + mTimerRoot(NULL), + mAppTimer(NULL), + mRootFrameState(NULL) {} /*virtual */ void initSingleton() -- GitLab From 8b4823acfb1907f936c7a9f27e5138724f54faa7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:33:47 +0000 Subject: [PATCH 508/521] CID-272 Checker: UNINIT_CTOR Function: LLTreeDFSPostIter<LLView, std::list<LLView *, std::allocator<LLView *>>::_Const_iterator<(bool)0>>::LLTreeDFSPostIter() File: /indra/llcommon/lltreeiterators.h --- indra/llcommon/lltreeiterators.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index c946566e842..034eeba65d3 100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h @@ -451,10 +451,10 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N /// Instantiate an LLTreeDFSPostIter to start a depth-first walk. Pass /// functors to extract the 'child begin' and 'child end' iterators from /// each node. - LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc): - mBeginFunc(beginfunc), - mEndFunc(endfunc), - mSkipAncestors(false) + LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc) + : mBeginFunc(beginfunc), + mEndFunc(endfunc), + mSkipAncestors(false) { if (! node) return; @@ -462,7 +462,7 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N makeCurrent(); } /// Instantiate an LLTreeDFSPostIter to mark the end of the walk - LLTreeDFSPostIter() {} + LLTreeDFSPostIter() : mSkipAncestors(false) {} /// flags iterator logic to skip traversing ancestors of current node on next increment void skipAncestors(bool skip = true) { mSkipAncestors = skip; } -- GitLab From 193f2e2edc1ade7a211c57a60bc42687aab036d4 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:36:56 +0000 Subject: [PATCH 509/521] CID-271 Checker: UNINIT_CTOR Function: LLTreeDFSIter<LLView, std::list<LLView *, std::allocator<LLView *>>::_Const_iterator<(bool)0>>::LLTreeDFSIter() File: /indra/llcommon/lltreeiterators.h --- indra/llcommon/lltreeiterators.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index 034eeba65d3..cb1304c54ec 100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h @@ -343,20 +343,20 @@ class LLTreeDFSIter: public LLBaseIter<LLTreeDFSIter<NODE, CHILDITER>, NODE> /// Instantiate an LLTreeDFSIter to start a depth-first walk. Pass /// functors to extract the 'child begin' and 'child end' iterators from /// each node. - LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc): - mBeginFunc(beginfunc), - mEndFunc(endfunc), - mSkipChildren(false) + LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc) + : mBeginFunc(beginfunc), + mEndFunc(endfunc), + mSkipChildren(false) { // Only push back this node if it's non-NULL! if (node) mPending.push_back(node); } /// Instantiate an LLTreeDFSIter to mark the end of the walk - LLTreeDFSIter() {} + LLTreeDFSIter() : mSkipChildren(false) {} - /// flags iterator logic to skip traversing children of current node on next increment - void skipDescendants(bool skip = true) { mSkipChildren = skip; } + /// flags iterator logic to skip traversing children of current node on next increment + void skipDescendants(bool skip = true) { mSkipChildren = skip; } private: /// leverage boost::iterator_facade @@ -405,8 +405,8 @@ class LLTreeDFSIter: public LLBaseIter<LLTreeDFSIter<NODE, CHILDITER>, NODE> func_type mBeginFunc; /// functor to extract end() child iterator func_type mEndFunc; - /// flag which controls traversal of children (skip children of current node if true) - bool mSkipChildren; + /// flag which controls traversal of children (skip children of current node if true) + bool mSkipChildren; }; /** @@ -455,17 +455,17 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N : mBeginFunc(beginfunc), mEndFunc(endfunc), mSkipAncestors(false) - { + { if (! node) return; mPending.push_back(typename list_type::value_type(node, false)); makeCurrent(); } /// Instantiate an LLTreeDFSPostIter to mark the end of the walk - LLTreeDFSPostIter() : mSkipAncestors(false) {} + LLTreeDFSPostIter() : mSkipAncestors(false) {} - /// flags iterator logic to skip traversing ancestors of current node on next increment - void skipAncestors(bool skip = true) { mSkipAncestors = skip; } + /// flags iterator logic to skip traversing ancestors of current node on next increment + void skipAncestors(bool skip = true) { mSkipAncestors = skip; } private: /// leverage boost::iterator_facade -- GitLab From 33a92be286e2b63f76b9a032e5912806d717959f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:39:52 +0000 Subject: [PATCH 510/521] CID-269 Checker: UNINIT_CTOR Function: LLWorkerClass::LLWorkerClass(LLWorkerThread *, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&) File: /indra/llcommon/llworkerthread.cpp --- indra/llcommon/llworkerthread.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp index 82c736266db..1b0e03cb2a8 100644 --- a/indra/llcommon/llworkerthread.cpp +++ b/indra/llcommon/llworkerthread.cpp @@ -188,6 +188,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na : mWorkerThread(workerthread), mWorkerClassName(name), mRequestHandle(LLWorkerThread::nullHandle()), + mRequestPriority(LLWorkerThread::PRIORITY_NORMAL), mMutex(NULL), mWorkFlags(0) { -- GitLab From e5bd3b8a4846ee21cfaf726cfbf3e943b277e7c1 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk <vsavchuk@productengine.com> Date: Wed, 3 Feb 2010 22:42:10 +0200 Subject: [PATCH 511/521] Fixed bug EXT-2915 ([BSI] Pay Button is hard to find on small resolutions). Added a "Block/Unblock" item to the profile view panel overflow menu to make the menu more visible. --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 10 +++++++ indra/newview/llavataractions.h | 5 ++++ indra/newview/llpanelavatar.cpp | 28 +++++++++++++++++++ indra/newview/llpanelavatar.h | 8 +++++- indra/newview/llpanelpeoplemenus.cpp | 6 +--- .../default/xui/en/menu_profile_overflow.xml | 13 +++++++++ 6 files changed, 64 insertions(+), 6 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 7eed2e7b9a2..bd987eac77c 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -612,3 +612,13 @@ bool LLAvatarActions::isBlocked(const LLUUID& id) gCacheName->getFullName(id, name); return LLMuteList::getInstance()->isMuted(id, name); } + +// static +bool LLAvatarActions::canBlock(const LLUUID& id) +{ + std::string firstname, lastname; + gCacheName->getName(id, firstname, lastname); + bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); + bool is_self = id == gAgentID; + return !is_self && !is_linden; +} diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index c751661acff..16a58718a21 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -123,6 +123,11 @@ class LLAvatarActions */ static bool isBlocked(const LLUUID& id); + /** + * @return true if you can block the avatar + */ + static bool canBlock(const LLUUID& id); + /** * Return true if the avatar is in a P2P voice call with a given user */ diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 48dd5513bdc..4a7cdfc856f 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -483,6 +483,7 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; registrar.add("Profile.Pay", boost::bind(&LLPanelAvatarProfile::pay, this)); registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this)); + registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this)); registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this)); registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this)); registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this)); @@ -490,6 +491,8 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable; enable.add("Profile.EnableGod", boost::bind(&enable_god)); + enable.add("Profile.CheckItem", boost::bind(&LLPanelAvatarProfile::checkOverflowMenuItem, this, _2)); + enable.add("Profile.EnableItem", boost::bind(&LLPanelAvatarProfile::enableOverflowMenuItem, this, _2)); mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); @@ -666,6 +669,26 @@ void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data) childSetValue("acc_status_text", caption_text); } +bool LLPanelAvatarProfile::checkOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "is_blocked") + return LLAvatarActions::isBlocked(getAvatarId()); + + return false; +} + +bool LLPanelAvatarProfile::enableOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "can_block") + return LLAvatarActions::canBlock(getAvatarId()); + + return false; +} + void LLPanelAvatarProfile::pay() { LLAvatarActions::pay(getAvatarId()); @@ -676,6 +699,11 @@ void LLPanelAvatarProfile::share() LLAvatarActions::share(getAvatarId()); } +void LLPanelAvatarProfile::toggleBlock() +{ + LLAvatarActions::toggleBlock(getAvatarId()); +} + void LLPanelAvatarProfile::kick() { LLAvatarActions::kick(getAvatarId()); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index ce59f1e93d2..632590aa279 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -192,12 +192,18 @@ class LLPanelAvatarProfile */ void share(); + /** + * Add/remove resident to/from your block list. + */ + void toggleBlock(); + void kick(); void freeze(); void unfreeze(); void csr(); - + bool checkOverflowMenuItem(const LLSD& param); + bool enableOverflowMenuItem(const LLSD& param); bool enableGod(); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 470cfca8fec..7e184c78a8f 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -164,11 +164,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata) if (item == std::string("can_block")) { const LLUUID& id = mUUIDs.front(); - std::string firstname, lastname; - gCacheName->getName(id, firstname, lastname); - bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); - bool is_self = id == gAgentID; - return !is_self && !is_linden; + return LLAvatarActions::canBlock(id); } else if (item == std::string("can_add")) { diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml index 1dc1c610cfe..407ce14e811 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml @@ -19,6 +19,19 @@ <menu_item_call.on_click function="Profile.Share" /> </menu_item_call> + <menu_item_check + label="Block/Unblock" + layout="topleft" + name="block_unblock"> + <menu_item_check.on_click + function="Profile.BlockUnblock" /> + <menu_item_check.on_check + function="Profile.CheckItem" + parameter="is_blocked" /> + <menu_item_check.on_enable + function="Profile.EnableItem" + parameter="can_block" /> + </menu_item_check> <menu_item_call label="Kick" layout="topleft" -- GitLab From a788f758e44ef506a82af8a9dccb71578334cefb Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:44:32 +0000 Subject: [PATCH 512/521] CID-267 Checker: UNINIT_CTOR Function: LLXMLNode::LLXMLNode(const LLXMLNode&) File: /indra/llxml/llxmlnode.cpp --- indra/llxml/llxmlnode.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 07cc612a0aa..e4f6482faea 100644 --- a/indra/llxml/llxmlnode.cpp +++ b/indra/llxml/llxmlnode.cpp @@ -131,6 +131,8 @@ LLXMLNode::LLXMLNode(const LLXMLNode& rhs) : mPrecision(rhs.mPrecision), mType(rhs.mType), mEncoding(rhs.mEncoding), + mLineNumber(0), + mParser(NULL), mParent(NULL), mChildren(NULL), mAttributes(), -- GitLab From b7405a144ec88943a3781d41cc0768fdb323df6c Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:45:53 +0000 Subject: [PATCH 513/521] CID-266 Checker: UNINIT_CTOR Function: LLXmlTreeParser::LLXmlTreeParser(LLXmlTree *) File: /indra/llxml/llxmltree.cpp --- indra/llxml/llxmltree.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp index 1bce5d29f7c..bc2690deff5 100644 --- a/indra/llxml/llxmltree.cpp +++ b/indra/llxml/llxmltree.cpp @@ -510,7 +510,8 @@ LLXmlTreeParser::LLXmlTreeParser(LLXmlTree* tree) : mTree(tree), mRoot( NULL ), mCurrent( NULL ), - mDump( FALSE ) + mDump( FALSE ), + mKeepContents(FALSE) { } -- GitLab From 81bc33f042fb1574e0119b0f46739a3f32849883 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:48:10 +0000 Subject: [PATCH 514/521] CID-264 Checker: UNINIT_CTOR Function: LLPluginProcessChild::LLPluginProcessChild() File: /indra/llplugin/llpluginprocesschild.cpp --- indra/llplugin/llpluginprocesschild.cpp | 1 + indra/llplugin/llpluginprocesschild.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 11c924cadfd..0f3254d78d2 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -43,6 +43,7 @@ static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will LLPluginProcessChild::LLPluginProcessChild() { + mState = STATE_UNINITIALIZED; mInstance = NULL; mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP); mSleepTime = PLUGIN_IDLE_SECONDS; // default: send idle messages at 100Hz diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 1cfd9dcaf9a..58f8935ed1a 100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -89,8 +89,9 @@ class LLPluginProcessChild: public LLPluginMessagePipeOwner, public LLPluginInst STATE_ERROR, // generic bailout state STATE_DONE // state machine will sit in this state after either error or normal termination. }; - EState mState; void setState(EState state); + + EState mState; LLHost mLauncherHost; LLSocket::ptr_t mSocket; -- GitLab From d98df93ce28be57a7759a3e321ba5f3ebaf8617a Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:50:01 +0000 Subject: [PATCH 515/521] CID-263 Checker: UNINIT_CTOR Function: LLPluginClassMedia::LLPluginClassMedia(LLPluginClassMediaOwner *) File: /indra/llplugin/llpluginclassmedia.cpp --- indra/llplugin/llpluginclassmedia.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 3d2eaed5c5a..91c796a9e6a 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -104,6 +104,8 @@ void LLPluginClassMedia::reset() mSetMediaHeight = -1; mRequestedMediaWidth = 0; mRequestedMediaHeight = 0; + mRequestedTextureWidth = 0; + mRequestedTextureHeight = 0; mFullMediaWidth = 0; mFullMediaHeight = 0; mTextureWidth = 0; -- GitLab From 429fa5a494910c43e2a4cfd0f695146fbfb57dbb Mon Sep 17 00:00:00 2001 From: Nat Goodspeed <nat@lindenlab.com> Date: Wed, 3 Feb 2010 15:50:57 -0500 Subject: [PATCH 516/521] Skip fragile (local ISP dependent) llhttpclient integration test. --- indra/test/llhttpclient_tut.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp index c541997e89e..2b1496e9121 100644 --- a/indra/test/llhttpclient_tut.cpp +++ b/indra/test/llhttpclient_tut.cpp @@ -269,6 +269,7 @@ namespace tut template<> template<> void HTTPClientTestObject::test<2>() { + skip("error test depends on dev's local ISP not supplying \"helpful\" search page"); LLHTTPClient::get("http://www.invalid", newResult()); runThePump(); ensureStatusError(); -- GitLab From f1606535e121aff163b5499ab487dcfb04d524b7 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:52:06 +0000 Subject: [PATCH 517/521] CID-262 Checker: UNINIT_CTOR Function: LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *) File: /indra/llplugin/llpluginprocessparent.cpp --- indra/llplugin/llpluginprocessparent.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 49f97838241..efd5df687e5 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -50,6 +50,8 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner) mOwner = owner; mBoundPort = 0; mState = STATE_UNINITIALIZED; + mSleepTime = 0.0; + mCPUUsage = 0.0; mDisableTimeout = false; mDebug = false; -- GitLab From d182b4f19ab14e07b5d43ad605545fb04686e870 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:54:16 +0000 Subject: [PATCH 518/521] CID-261 Checker: UNINIT_CTOR Function: LLImageJ2COJ::LLImageJ2COJ() File: /indra/llimagej2coj/llimagej2coj.cpp --- indra/llimagej2coj/llimagej2coj.cpp | 3 ++- indra/llimagej2coj/llimagej2coj.h | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index e71429b18d3..3af31da0831 100644 --- a/indra/llimagej2coj/llimagej2coj.cpp +++ b/indra/llimagej2coj/llimagej2coj.cpp @@ -97,7 +97,8 @@ void info_callback(const char* msg, void*) } -LLImageJ2COJ::LLImageJ2COJ() : LLImageJ2CImpl() +LLImageJ2COJ::LLImageJ2COJ() + : LLImageJ2CImpl() { } diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h index 73cb074f1fd..8255d5225fa 100644 --- a/indra/llimagej2coj/llimagej2coj.h +++ b/indra/llimagej2coj/llimagej2coj.h @@ -51,9 +51,6 @@ class LLImageJ2COJ : public LLImageJ2CImpl // Divide a by b to the power of 2 and round upwards. return (a + (1 << b) - 1) >> b; } - - // Temporary variables for in-progress decodes... - LLImageRaw *mRawImagep; }; #endif -- GitLab From 940041992ac429c7d67642f82b64ebc8bc01730f Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 20:57:29 +0000 Subject: [PATCH 519/521] CID-260 Checker: UNINIT_CTOR Function: LLPidLockFile::LLPidLockFile() File: /indra/llvfs/llpidlock.cpp --- indra/llvfs/llpidlock.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp index 95e3692e107..28cee294053 100755 --- a/indra/llvfs/llpidlock.cpp +++ b/indra/llvfs/llpidlock.cpp @@ -68,8 +68,12 @@ class LLPidLockFile { public: LLPidLockFile( ) : - mSaving(FALSE), mWaiting(FALSE), - mClean(TRUE), mPID(getpid()) + mAutosave(false), + mSaving(false), + mWaiting(false), + mPID(getpid()), + mNameTable(NULL), + mClean(true) { mLockName = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + "savelock"; } -- GitLab From 1e6d2c9cd3d8e3a7ee48601ca0ecf0cf8dc4f809 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 21:00:12 +0000 Subject: [PATCH 520/521] CID-259 Checker: UNINIT_CTOR Function: LLVFile::LLVFile(LLVFS *, const LLUUID &, LLAssetType::EType, int) File: /indra/llvfs/llvfile.cpp dead field. --- indra/llvfs/llvfile.h | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h index 5f69a410400..c3bca8c7371 100644 --- a/indra/llvfs/llvfile.h +++ b/indra/llvfs/llvfile.h @@ -88,7 +88,6 @@ class LLVFile S32 mMode; LLVFS *mVFS; F32 mPriority; - BOOL mOnReadQueue; S32 mBytesRead; LLVFSThread::handle_t mHandle; -- GitLab From bf18e798c5ca2e238bb5f4affec7182c8e30dcd4 Mon Sep 17 00:00:00 2001 From: Tofu Linden <tofu.linden@lindenlab.com> Date: Wed, 3 Feb 2010 21:13:37 +0000 Subject: [PATCH 521/521] CID-405 Checker: UNUSED_VALUE Function: LLNormalTextSegment::drawClippedSegment(int, int, int, int, LLRectBase<int>) File: /indra/llui/lltextbase.cpp --- indra/llui/lltextbase.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 75ca6d88950..2b1e2b82268 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2333,8 +2333,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor()) % alpha; - font = mStyle->getFont(); - if( selection_start > seg_start ) { // Draw normally -- GitLab